]> git.mxchange.org Git - jfinancials-lib.git/blobdiff - Addressbook/src/org/mxchange/addressbook/database/backend/csv/CsvDatabaseBackend.java
Added a lot stuff:
[jfinancials-lib.git] / Addressbook / src / org / mxchange / addressbook / database / backend / csv / CsvDatabaseBackend.java
index 8a026e1372aa01698654873d3400b250140a40d1..0bc97f3a78b9d12436195296e223d2ce7c44639e 100644 (file)
@@ -93,6 +93,20 @@ public class CsvDatabaseBackend extends BaseDatabaseBackend implements CsvBacken
        return list.iterator();\r
     }\r
 \r
+    /**\r
+     * Shuts down this backend\r
+     */\r
+    @Override\r
+    public void doShutdown () {\r
+       try {\r
+           // Close file\r
+           this.storageFile.close();\r
+       } catch (final IOException ex) {\r
+           this.getLogger().catching(ex);\r
+           System.exit(1);\r
+       }\r
+    }\r
+\r
     /**\r
      * Get length of underlaying file\r
      *\r
@@ -155,7 +169,33 @@ public class CsvDatabaseBackend extends BaseDatabaseBackend implements CsvBacken
        this.getLogger().debug(MessageFormat.format("str({0})={1}", str.length(), str));\r
 \r
        // The string is now a valid CSV string\r
-       this.storageFile.writeChars(str);\r
+       this.storageFile.writeBytes(str);\r
+    }\r
+\r
+    /**\r
+     * Adds given contact to list\r
+     * \r
+     * @param contact Contact instance to add\r
+     * @param list List instance\r
+     */\r
+    private void addContactToList (final Contact contact, final List<Contact> list) {\r
+       // Debug message\r
+       this.getLogger().debug(MessageFormat.format("contact={0}", contact));\r
+\r
+       // Is the contact read?\r
+       if (contact instanceof Contact) {\r
+           // Then add it\r
+           boolean added = list.add(contact);\r
+\r
+           // Debug message\r
+           this.getLogger().debug(MessageFormat.format("contact={0} added={1}", contact, added));\r
+\r
+           // Has it been added?\r
+           if (!added) {\r
+               // Not added\r
+               this.getLogger().warn("Contact object has not been added.");\r
+           }\r
+       }\r
     }\r
 \r
     /**\r
@@ -191,9 +231,15 @@ public class CsvDatabaseBackend extends BaseDatabaseBackend implements CsvBacken
        // First rewind\r
        this.rewind();\r
 \r
+       // Get file size and divide it by 140 (possible average length of one line)\r
+       int lines = Math.round(this.length() / 140 + 0.5f);\r
+\r
+       // Debug message\r
+       this.getLogger().debug(MessageFormat.format("lines={0}", lines));\r
+\r
        // Instance list\r
        // @TODO The maximum length could be guessed from file size?\r
-       List<Contact> list = new ArrayList<>();\r
+       List<Contact> list = new ArrayList<>(lines);\r
 \r
        // Init variables\r
        StringTokenizer tokenizer;\r
@@ -286,11 +332,20 @@ public class CsvDatabaseBackend extends BaseDatabaseBackend implements CsvBacken
                    case 0: // isOwnContact\r
                        assert((bool instanceof Boolean));\r
 \r
+                       // Debug message\r
+                       this.getLogger().debug(MessageFormat.format("bool={0}", bool));\r
+\r
                        // Is it own contact?\r
                        if (true == bool) {\r
+                           // Debug message\r
+                           this.getLogger().debug("Creating UserContact object ...");\r
+\r
                            // Own entry\r
                            contact = new UserContact();\r
                        } else {\r
+                           // Debug message\r
+                           this.getLogger().debug("Creating BookContact object ...");\r
+\r
                            // Other contact\r
                            contact = new BookContact();\r
                        }\r
@@ -304,14 +359,111 @@ public class CsvDatabaseBackend extends BaseDatabaseBackend implements CsvBacken
                        contact.updateNameData(gender, null, null, null);\r
                        break;\r
 \r
+                   case 2: // Surname\r
+                       assert(contact instanceof Contact) : "First token was not boolean";\r
+                       assert(gender != '?') : "Gender is not detected.";\r
+\r
+                       // Update data\r
+                       contact.updateNameData(gender, strippedToken, null, null);\r
+                       break;\r
+\r
+                   case 3: // Family name\r
+                       assert(contact instanceof Contact) : "First token was not boolean";\r
+                       assert(gender != '?') : "Gender is not detected.";\r
+\r
+                       // Update data\r
+                       contact.updateNameData(gender, null, strippedToken, null);\r
+                       break;\r
+\r
+                   case 4: // Company name\r
+                       assert(contact instanceof Contact) : "First token was not boolean";\r
+                       assert(gender != '?') : "Gender is not detected.";\r
+\r
+                       // Update data\r
+                       contact.updateNameData(gender, null, null, strippedToken);\r
+                       break;\r
+\r
+                   case 5: // Street number\r
+                       assert(contact instanceof Contact) : "First token was not boolean";\r
+\r
+                       // Update data\r
+                       contact.updateAddressData(strippedToken, 0, null, null);\r
+                       break;\r
+\r
+                   case 6: // ZIP code\r
+                       assert(contact instanceof Contact) : "First token was not boolean";\r
+\r
+                       // Update data\r
+                       contact.updateAddressData(null, num, null, null);\r
+                       break;\r
+\r
+                   case 7: // City name\r
+                       assert(contact instanceof Contact) : "First token was not boolean";\r
+\r
+                       // Update data\r
+                       contact.updateAddressData(null, 0, strippedToken, null);\r
+                       break;\r
+\r
+                   case 8: // Country code\r
+                       assert(contact instanceof Contact) : "First token was not boolean";\r
+\r
+                       // Update data\r
+                       contact.updateAddressData(null, 0, null, strippedToken);\r
+                       break;\r
+\r
+                   case 9: // Phone number\r
+                       assert(contact instanceof Contact) : "First token was not boolean";\r
+\r
+                       // Update data\r
+                       contact.updateOtherData(strippedToken, null, null, null, null, null);\r
+                       break;\r
+\r
+                   case 10: // Fax number\r
+                       assert(contact instanceof Contact) : "First token was not boolean";\r
+\r
+                       // Update data\r
+                       contact.updateOtherData(null, strippedToken, null, null, null, null);\r
+                       break;\r
+\r
+                   case 11: // Cellphone number\r
+                       assert(contact instanceof Contact) : "First token was not boolean";\r
+\r
+                       // Update data\r
+                       contact.updateOtherData(null, null, strippedToken, null, null, null);\r
+                       break;\r
+\r
+                   case 12: // Email address\r
+                       assert(contact instanceof Contact) : "First token was not boolean";\r
+\r
+                       // Update data\r
+                       contact.updateOtherData(null, null, null, strippedToken, null, null);\r
+                       break;\r
+\r
+                   case 13: // Birthday\r
+                       assert(contact instanceof Contact) : "First token was not boolean";\r
+\r
+                       // Update data\r
+                       contact.updateOtherData(null, null, null, null, strippedToken, null);\r
+                       break;\r
+\r
+                   case 14: // Birthday\r
+                       assert(contact instanceof Contact) : "First token was not boolean";\r
+\r
+                       // Update data\r
+                       contact.updateOtherData(null, null, null, null, null, strippedToken);\r
+                       break;\r
+\r
                    default: // New data entry\r
-                       this.getLogger().warn("Will not handle unknown data " + strippedToken + " at index " + count);\r
+                       this.getLogger().warn(MessageFormat.format("Will not handle unknown data {0} at index {1}", strippedToken, count));\r
                        break;\r
                }\r
 \r
                // Increment counter for next round\r
                count++;\r
            }\r
+\r
+           // Add contact\r
+           this.addContactToList(contact, list);\r
        }\r
 \r
        // Return finished list\r
@@ -330,7 +482,7 @@ public class CsvDatabaseBackend extends BaseDatabaseBackend implements CsvBacken
 \r
        try {\r
            input = this.storageFile.readLine();\r
-       } catch (IOException ex) {\r
+       } catch (final IOException ex) {\r
            this.getLogger().catching(ex);\r
        }\r
 \r