]> git.mxchange.org Git - jaddressbook-share-lib.git/blobdiff - Addressbook/src/org/mxchange/addressbook/database/frontend/contact/ContactDatabaseFrontend.java
Continued:
[jaddressbook-share-lib.git] / Addressbook / src / org / mxchange / addressbook / database / frontend / contact / ContactDatabaseFrontend.java
index a67be31b5fdec0431c81ec6eec3b43cbce23dca1..87126f0b9111b107900446b9ff8328055b3ccf9d 100644 (file)
 package org.mxchange.addressbook.database.frontend.contact;\r
 \r
 import java.io.IOException;\r
+import java.util.Iterator;\r
+import java.util.List;\r
+import org.mxchange.addressbook.BadTokenException;\r
 import org.mxchange.addressbook.contact.Contact;\r
-import org.mxchange.addressbook.database.storage.Storeable;\r
+import org.mxchange.addressbook.database.backend.csv.CsvBackend;\r
 import org.mxchange.addressbook.database.frontend.BaseDatabaseFrontend;\r
+import org.mxchange.addressbook.database.storage.Storeable;\r
+import org.mxchange.addressbook.manager.contact.ManageableContact;\r
 \r
 /**\r
  * Stores and retrieves Contact instances\r
@@ -40,14 +45,67 @@ public class ContactDatabaseFrontend extends BaseDatabaseFrontend implements Con
        this.initBackend();\r
     }\r
 \r
+    /**\r
+     * Flushes all contact entries to database\r
+     * @param contactManager An instance of a MangeableContact class\r
+     */\r
+    @Override\r
+    public void flushAllContacts (final ManageableContact contactManager) {\r
+       // Get full list\r
+       List<Contact> contacts = contactManager.getList();\r
+\r
+       // Get iterator\r
+       Iterator<Contact> iterator = contacts.iterator();\r
+\r
+       // Rewind backend\r
+       this.getBackend().rewind();\r
+\r
+       // Get all entries\r
+       while (iterator.hasNext()) {\r
+           // Get next entry\r
+           Contact contact = iterator.next();\r
+\r
+           try {\r
+               // Store this entry\r
+               this.getBackend().store((Storeable) contact);\r
+           } catch (final IOException ex) {\r
+               // Should not happen?\r
+               this.getLogger().catching(ex);\r
+               System.exit(1);\r
+           }\r
+       }\r
+    }\r
+\r
+    /**\r
+     * Reads all contacts from database backend and handles them over to the\r
+     * contact manager\r
+     * \r
+     * @param contactManager Contact manager to handle loaded contacts\r
+     */\r
     @Override\r
-    public void addContact (final Contact contact) {\r
+    public void readAllContacts (final ManageableContact contactManager) {\r
+       // Get iterator and case it\r
+       CsvBackend backend = (CsvBackend) this.getBackend();\r
+       \r
+       // First rewind to beginning\r
+       this.getBackend().rewind();\r
+\r
+       // Get backend iterator\r
+       Iterator<Contact> iterator = null;\r
        try {\r
-           // Try to cast the object and handle it over to the backend\r
-           this.getBackend().store((Storeable) contact);\r
-       } catch (final IOException ex) {\r
-           this.getLogger().error("Cannot write contact to storage: " + ex.getMessage());\r
+           iterator = backend.contactIterator();\r
+       } catch (final BadTokenException ex) {\r
+           this.getLogger().catching(ex);\r
            System.exit(1);\r
        }\r
+\r
+       // Read all entries\r
+       while (iterator.hasNext()) {\r
+           // Get next entry\r
+           Contact contact = iterator.next();\r
+\r
+           // Add contact instance to manager\r
+           contactManager.addContact(contact);\r
+       }\r
     }\r
 }\r