]> git.mxchange.org Git - addressbook-swing.git/blob - Addressbook/src/org/mxchange/addressbook/database/frontend/contact/ContactDatabaseFrontend.java
87126f0b9111b107900446b9ff8328055b3ccf9d
[addressbook-swing.git] / Addressbook / src / org / mxchange / addressbook / database / frontend / contact / ContactDatabaseFrontend.java
1 /*\r
2  * Copyright (C) 2015 Roland Haeder\r
3  *\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
8  *\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
13  *\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
16  */\r
17 package org.mxchange.addressbook.database.frontend.contact;\r
18 \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
28 \r
29 /**\r
30  * Stores and retrieves Contact instances\r
31  *\r
32  * @author Roland Haeder\r
33  */\r
34 public class ContactDatabaseFrontend extends BaseDatabaseFrontend implements ContactWrapper {\r
35     /**\r
36      * Basic constrcutor\r
37      */\r
38     public ContactDatabaseFrontend () {\r
39         super();\r
40 \r
41         // Set "table" name\r
42         this.setTableName("contacts");\r
43 \r
44         // Initalize backend\r
45         this.initBackend();\r
46     }\r
47 \r
48     /**\r
49      * Flushes all contact entries to database\r
50      * @param contactManager An instance of a MangeableContact class\r
51      */\r
52     @Override\r
53     public void flushAllContacts (final ManageableContact contactManager) {\r
54         // Get full list\r
55         List<Contact> contacts = contactManager.getList();\r
56 \r
57         // Get iterator\r
58         Iterator<Contact> iterator = contacts.iterator();\r
59 \r
60         // Rewind backend\r
61         this.getBackend().rewind();\r
62 \r
63         // Get all entries\r
64         while (iterator.hasNext()) {\r
65             // Get next entry\r
66             Contact contact = iterator.next();\r
67 \r
68             try {\r
69                 // Store this entry\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
74                 System.exit(1);\r
75             }\r
76         }\r
77     }\r
78 \r
79     /**\r
80      * Reads all contacts from database backend and handles them over to the\r
81      * contact manager\r
82      * \r
83      * @param contactManager Contact manager to handle loaded contacts\r
84      */\r
85     @Override\r
86     public void readAllContacts (final ManageableContact contactManager) {\r
87         // Get iterator and case it\r
88         CsvBackend backend = (CsvBackend) this.getBackend();\r
89         \r
90         // First rewind to beginning\r
91         this.getBackend().rewind();\r
92 \r
93         // Get backend iterator\r
94         Iterator<Contact> iterator = null;\r
95         try {\r
96             iterator = backend.contactIterator();\r
97         } catch (final BadTokenException ex) {\r
98             this.getLogger().catching(ex);\r
99             System.exit(1);\r
100         }\r
101 \r
102         // Read all entries\r
103         while (iterator.hasNext()) {\r
104             // Get next entry\r
105             Contact contact = iterator.next();\r
106 \r
107             // Add contact instance to manager\r
108             contactManager.addContact(contact);\r
109         }\r
110     }\r
111 }\r