2 * Copyright (C) 2015 Roland Haeder
\r
4 * This program is free software: you can redistribute it and/or modify
\r
5 * it under the terms of the GNU General Public License as published by
\r
6 * the Free Software Foundation, either version 3 of the License, or
\r
7 * (at your option) any later version.
\r
9 * This program is distributed in the hope that it will be useful,
\r
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
\r
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
\r
12 * GNU General Public License for more details.
\r
14 * You should have received a copy of the GNU General Public License
\r
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
\r
17 package org.mxchange.addressbook.database.frontend.contact;
\r
19 import java.io.IOException;
\r
20 import java.util.Iterator;
\r
21 import java.util.List;
\r
22 import org.mxchange.addressbook.BadTokenException;
\r
23 import org.mxchange.addressbook.contact.Contact;
\r
24 import org.mxchange.addressbook.database.backend.csv.CsvBackend;
\r
25 import org.mxchange.addressbook.database.frontend.BaseDatabaseFrontend;
\r
26 import org.mxchange.addressbook.database.storage.Storeable;
\r
27 import org.mxchange.addressbook.manager.contact.ManageableContact;
\r
30 * Stores and retrieves Contact instances
\r
32 * @author Roland Haeder
\r
34 public class ContactDatabaseFrontend extends BaseDatabaseFrontend implements ContactWrapper {
\r
38 public ContactDatabaseFrontend () {
\r
42 this.setTableName("contacts");
\r
44 // Initalize backend
\r
49 * Flushes all contact entries to database
\r
50 * @param contactManager An instance of a MangeableContact class
\r
53 public void flushAllContacts (final ManageableContact contactManager) {
\r
55 List<Contact> contacts = contactManager.getList();
\r
58 Iterator<Contact> iterator = contacts.iterator();
\r
61 this.getBackend().rewind();
\r
64 while (iterator.hasNext()) {
\r
66 Contact contact = iterator.next();
\r
70 this.getBackend().store((Storeable) contact);
\r
71 } catch (final IOException ex) {
\r
72 // Should not happen?
\r
73 this.getLogger().catching(ex);
\r
80 * Reads all contacts from database backend and handles them over to the
\r
83 * @param contactManager Contact manager to handle loaded contacts
\r
86 public void readAllContacts (final ManageableContact contactManager) {
\r
87 // Get iterator and case it
\r
88 CsvBackend backend = (CsvBackend) this.getBackend();
\r
90 // First rewind to beginning
\r
91 this.getBackend().rewind();
\r
93 // Get backend iterator
\r
94 Iterator<Contact> iterator = null;
\r
96 iterator = backend.contactIterator();
\r
97 } catch (final BadTokenException ex) {
\r
98 this.getLogger().catching(ex);
\r
102 // Read all entries
\r
103 while (iterator.hasNext()) {
\r
105 Contact contact = iterator.next();
\r
107 // Add contact instance to manager
\r
108 contactManager.addContact(contact);
\r