]> git.mxchange.org Git - addressbook-swing.git/blob - Addressbook/src/org/mxchange/addressbook/database/frontend/contact/ContactDatabaseFrontend.java
Added a lot stuff:
[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      * Shuts down the database layer\r
50      */\r
51     @Override\r
52     public void doShutdown () {\r
53         // Shutdown backend\r
54         this.getBackend().doShutdown();\r
55     }\r
56 \r
57     /**\r
58      * Flushes all contact entries to database\r
59      * @param contactManager An instance of a MangeableContact class\r
60      */\r
61     @Override\r
62     public void flushAllContacts (final ManageableContact contactManager) {\r
63         // Get full list\r
64         List<Contact> contacts = contactManager.getList();\r
65 \r
66         // Get iterator\r
67         Iterator<Contact> iterator = contacts.iterator();\r
68 \r
69         // Rewind backend\r
70         this.getBackend().rewind();\r
71 \r
72         // Get all entries\r
73         while (iterator.hasNext()) {\r
74             // Get next entry\r
75             Contact contact = iterator.next();\r
76 \r
77             try {\r
78                 // Store this entry\r
79                 this.getBackend().store((Storeable) contact);\r
80             } catch (final IOException ex) {\r
81                 // Should not happen?\r
82                 this.getLogger().catching(ex);\r
83                 System.exit(1);\r
84             }\r
85         }\r
86     }\r
87 \r
88     /**\r
89      * Reads all contacts from database backend and handles them over to the\r
90      * contact manager\r
91      * \r
92      * @param contactManager Contact manager to handle loaded contacts\r
93      */\r
94     @Override\r
95     public void readAllContacts (final ManageableContact contactManager) {\r
96         // Get iterator and case it\r
97         CsvBackend backend = (CsvBackend) this.getBackend();\r
98         \r
99         // First rewind to beginning\r
100         this.getBackend().rewind();\r
101 \r
102         // Get backend iterator\r
103         Iterator<Contact> iterator = null;\r
104         try {\r
105             iterator = backend.contactIterator();\r
106         } catch (final BadTokenException ex) {\r
107             this.getLogger().catching(ex);\r
108             System.exit(1);\r
109         }\r
110 \r
111         // Read all entries\r
112         while (iterator.hasNext()) {\r
113             // Get next entry\r
114             Contact contact = iterator.next();\r
115 \r
116             // Add contact instance to manager\r
117             contactManager.addContact(contact);\r
118         }\r
119     }\r
120 }\r