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
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