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
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
// 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
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
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
\r
try {\r
input = this.storageFile.readLine();\r
- } catch (IOException ex) {\r
+ } catch (final IOException ex) {\r
this.getLogger().catching(ex);\r
}\r
\r