import java.util.ArrayList;\r
import java.util.Iterator;\r
import java.util.List;\r
+import org.mxchange.addressbook.UnhandledUserChoiceException;\r
import org.mxchange.addressbook.client.Client;\r
import org.mxchange.addressbook.contact.Contact;\r
import org.mxchange.addressbook.contact.user.UserContact;\r
@Override\r
public void changeOwnData () {\r
/*\r
- * First check if the user has registered own contact, before that \r
+ * First check if the user has registered own contact, before that\r
* nothing can be changed.\r
*/\r
if (!this.isOwnContactAdded()) {\r
// Not added\r
- this.getClient().displayMessage("Sie haben noch nicht Ihre Daten eingegeben.");\r
-\r
+ this.getClient().outputMessage("Sie haben noch nicht Ihre Daten eingegeben.");\r
+ \r
// Skip any below code\r
return;\r
}\r
-\r
+ \r
// Instance\r
Contact contact = this.getOwnContact();\r
-\r
+ \r
// It must be found\r
assert(contact instanceof Contact);\r
-\r
- // @TODO Unfinished\r
- throw new UnsupportedOperationException("Method is not finished.");\r
+ \r
+ // Display contact\r
+ contact.show(this.getClient());\r
+ \r
+ try {\r
+ // Ask user what to change\r
+ this.getClient().userChooseChangeContactData(contact);\r
+ } catch (final UnhandledUserChoiceException ex) {\r
+ this.getLogger().catching(ex);\r
+ }\r
}\r
\r
/**\r
throw new UnsupportedOperationException("Not supported yet.");\r
}\r
\r
+ /**\r
+ * Let the user change address data\r
+ * \r
+ * @param contact Instance to change data\r
+ * @param client Client instance to call back\r
+ */\r
+ @Override\r
+ public void doChangeAddressData (final Contact contact, final Client client) {\r
+ // First display it again\r
+ client.displayAddressBox(contact);\r
+\r
+ // Is it own data?\r
+ if (contact.isOwnContact()) {\r
+ // Own address data\r
+ String street = this.enterOwnStreet();\r
+\r
+ // Get zip code\r
+ int zipCode = this.enterOwnZipCode();\r
+\r
+ // Get city name\r
+ String city = this.enterOwnCity();\r
+\r
+ // Get country code\r
+ String countryCode = this.enterOwnCountryCode();\r
+\r
+ // Update address data\r
+ contact.updateAddressData(street, zipCode, city, countryCode);\r
+ } else {\r
+ // Other contact's address data to change\r
+ throw new UnsupportedOperationException("Changing contact entries not finished.");\r
+ }\r
+ }\r
+\r
+ /**\r
+ * Let the user change "name data"\r
+ * \r
+ * @param contact Instance to change data\r
+ * @param client Client instance to call back\r
+ */\r
+ @Override\r
+ public void doChangeNameData (final Contact contact, final Client client) {\r
+ // First display them again\r
+ client.displayNameBox(contact);\r
+\r
+ // Is this own data?\r
+ if (contact.isOwnContact()) {\r
+ // Re-ask own data\r
+ // Gender:\r
+ char gender = this.enterOwnGender();\r
+\r
+ // Surname\r
+ String surname = this.enterOwnSurname();\r
+\r
+ // Family name\r
+ String familyName = this.enterOwnFamilyName();\r
+\r
+ // And company\r
+ String companyName = this.enterCompanyName();\r
+\r
+ // Update contact instance\r
+ contact.updateNameData(gender, surname, familyName, companyName);\r
+ } else {\r
+ // Then re-ask them ...\r
+ throw new UnsupportedOperationException("Changing contact entries not finished.");\r
+ }\r
+ }\r
+\r
+ /**\r
+ * Let the user change other data\r
+ *\r
+ * @param contact Instance to change data\r
+ * @param client Client instance to call back\r
+ */\r
+ @Override\r
+ public void doChangeOtherData (final Contact contact, final Client client) {\r
+ throw new UnsupportedOperationException("Not supported yet.");\r
+ }\r
+\r
/**\r
* Asks user for own data\r
*/\r
@Override\r
- public void enterOwnData () {\r
+ public void doEnterOwnData () {\r
// First ask for gender\r
char gender = this.enterOwnGender();\r
\r
// And 3rd for family name\r
String familyName = this.enterOwnFamilyName();\r
\r
+ // Company name ...\r
+ String companyName = this.enterCompanyName();\r
+\r
// Construct UserContact instance\r
- Contact contact = new UserContact(gender, surname, familyName);\r
+ Contact contact = new UserContact(gender, surname, familyName, companyName);\r
\r
// Mark contact as own\r
contact.enableFlagOwnContact();\r
return this.contacts.size();\r
}\r
\r
+ /**\r
+ * Asks the user for his/her company name\r
+ * @return \r
+ */\r
+ private String enterCompanyName () {\r
+ return this.getClient().enterString(5, 50, "Bitte geben Sie Ihre Firmenbezeichnung ein: ", true);\r
+ }\r
+\r
+ /**\r
+ * Asks the user for his/her city's name\r
+ * \r
+ * @return City's name of the user\r
+ */\r
+ private String enterOwnCity () {\r
+ return this.getClient().enterString(3, 50, "Bitte geben Sie Ihre Wohnort ein: ", false);\r
+ }\r
+\r
+ /**\r
+ * Asks user for his/her own country code\r
+ * \r
+ * @return User's own country code\r
+ */\r
+ private String enterOwnCountryCode () {\r
+ return this.getClient().enterString(2, 2, "Bitte geben Sie den zweistelligen Ländercode von Ihrem Land ein: ", false).toUpperCase();\r
+ }\r
+\r
/**\r
* Asks the user for family name\r
* @return Family name of the user\r
*/\r
private String enterOwnFamilyName () {\r
- return this.getClient().enterString(2, 50, "Bitte geben Sie Ihren Nachnamen ein: ");\r
+ return this.getClient().enterString(2, 50, "Bitte geben Sie Ihren Nachnamen ein: ", false);\r
}\r
\r
/**\r
return this.getClient().enterChar(new char[] {'M', 'F', 'C'}, "Bitte geben Sie die Anrede ein: (M=Herr, F=Frau, C=Firma): ");\r
}\r
\r
+ /**\r
+ * Asks the user for own street (including number)\r
+ */\r
+ private String enterOwnStreet () {\r
+ return this.getClient().enterString(5, 50, "Bitte geben Sie Ihre Strasse und Hausnummer ein: ", false);\r
+ }\r
+\r
/**\r
* Asks the user for surname\r
* @return Surname of the user\r
*/\r
private String enterOwnSurname () {\r
- return this.getClient().enterString(2, 50, "Bitte geben Sie Ihren Vornamen ein: ");\r
+ return this.getClient().enterString(2, 50, "Bitte geben Sie Ihren Vornamen ein: ", false);\r
+ }\r
+\r
+ /**\r
+ * Asks the user for own ZIP code\r
+ * @return ZIP code\r
+ */\r
+ private int enterOwnZipCode () {\r
+ return this.getClient().enterInt(0, 99_999, "Bitte geben Sie Ihre Postleitzahl ein: ");\r
}\r
\r
/**\r