import java.util.List;\r
import org.mxchange.addressbook.UnhandledUserChoiceException;\r
import org.mxchange.addressbook.client.Client;\r
-import org.mxchange.addressbook.contact.BaseContact;\r
import org.mxchange.addressbook.contact.Contact;\r
import org.mxchange.addressbook.database.frontend.contact.ContactDatabaseFrontend;\r
import org.mxchange.addressbook.database.frontend.contact.ContactWrapper;\r
* @version 0.0\r
*/\r
public class ContactManager extends BaseManager implements ManageableContact {\r
+ /**\r
+ * Column name list\r
+ */\r
+ private final List<String> columnNames;\r
\r
/**\r
* A ContactWrapper instance\r
*/\r
private final List<Contact> contacts;\r
\r
+\r
/**\r
* @param maxContacts Maximum allowed contacts\r
* @param client Client instance to use\r
// Always call super constructor first\r
super();\r
\r
+ // Set client instance\r
+ this.setClient(client);\r
+\r
// Init contacts\r
this.contacts = new ArrayList<>(maxContacts);\r
\r
// Init database connection\r
this.contactDatabase = new ContactDatabaseFrontend(this);\r
\r
+ // Initialize list\r
+ this.columnNames = new ArrayList<>(15);\r
+\r
+ // And fill it\r
+ this.fillColumnNamesFromBundle();\r
+\r
// Read all entries\r
this.contactDatabase.readAllContacts();\r
\r
// Debug message\r
//* NOISY-DEBUG: */ this.getLogger().debug("client=" + client);\r
-\r
- // Init client\r
- this.setClient(client);\r
}\r
\r
/**\r
\r
@Override\r
public int getColumnCount () {\r
- /*\r
- * Return constant, may look useful. But without this, e.g. the\r
- * AddressTableModel have a hard-coded value.\r
- */\r
- return BaseContact.COLUMN_COUNT;\r
+ return this.columnNames.size();\r
}\r
\r
/**\r
return this.contacts.size();\r
}\r
\r
+ /**\r
+ * Fills the column names array with strings from bundle\r
+ */\r
+ private void fillColumnNamesFromBundle () {\r
+ // First get an iterator from key set to iterate over\r
+ Iterator<String> iterator = this.getBundle().keySet().iterator();\r
+\r
+ // Then iterate over all\r
+ while (iterator.hasNext()) {\r
+ // Get next element\r
+ String key = iterator.next();\r
+\r
+ // Does the key start with ContactManager.columnName ?\r
+ if (key.startsWith("ContactManager.columnName")) {\r
+ // This is the wanted entry.\r
+ this.getLogger().debug(MessageFormat.format("key={0}", key));\r
+\r
+ // So add it\r
+ this.columnNames.add(this.getBundle().getString(key));\r
+ }\r
+ }\r
+ }\r
+\r
/**\r
* Flushes all entries by calling database backend\r
*/\r