]> git.mxchange.org Git - addressbook-lib.git/commitdiff
Introduced updateNameData() + changing own "name data" is basicly finished
authorRoland Haeder <roland@mxchange.org>
Wed, 15 Jul 2015 12:02:13 +0000 (14:02 +0200)
committerRoland Haeder <roland@mxchange.org>
Wed, 15 Jul 2015 12:02:13 +0000 (14:02 +0200)
Signed-off-by:Roland Häder <roland@mxchange.org>

Addressbook/src/org/mxchange/addressbook/client/Client.java
Addressbook/src/org/mxchange/addressbook/client/console/ConsoleClient.java
Addressbook/src/org/mxchange/addressbook/contact/BaseContact.java
Addressbook/src/org/mxchange/addressbook/contact/Contact.java
Addressbook/src/org/mxchange/addressbook/contact/user/UserContact.java
Addressbook/src/org/mxchange/addressbook/manager/contact/ContactManager.java
Addressbook/src/org/mxchange/addressbook/manager/contact/ManageableContact.java

index 2c4336c5b9f8509732f3c90188cd1c4fbfde931f..eeb66b73909715eff5ab6020b1ae6620fb241e25 100644 (file)
@@ -87,9 +87,10 @@ public interface Client extends FrameworkInterface {
      * @param minLength        Minimum length of the string to read\r
      * @param maxLength        Maximum length of the string to read\r
      * @param message  Message to user\r
-     * @return \r
+     * @param allowEmpty Whether empty strings are allowed\r
+     * @return Entered string by user or null if empty string is allowed\r
      */\r
-    public String enterString (final int minLength, final int maxLength, final String message);\r
+    public String enterString (final int minLength, final int maxLength, final String message, final boolean allowEmpty);\r
 \r
     /**\r
      * Setter for current menu choice\r
index 36c6faab4aab073962a392f34009c2299d7b6b5f..a67de85585bc92a8e9239fce77873bf5421d2f08 100644 (file)
@@ -136,15 +136,15 @@ public class ConsoleClient extends BaseClient implements Client {
        // @TODO Get rid of this ugly switch block, too\r
        switch (choice) {\r
            case 'n': // Name data\r
-               this.getContactManager().changeNameData(contact);\r
+               this.getContactManager().changeNameData(contact, this);\r
                break;\r
 \r
            case 'a': // Address data\r
-               this.getContactManager().changeAddressData(contact);\r
+               this.getContactManager().changeAddressData(contact, this);\r
                break;\r
 \r
            case 'o': // Other data\r
-               this.getContactManager().changeOtherData(contact);\r
+               this.getContactManager().changeOtherData(contact, this);\r
                break;\r
 \r
            case 'x': // Exit this menu\r
@@ -228,15 +228,16 @@ public class ConsoleClient extends BaseClient implements Client {
      * @param minLength        Minimum length of the string to read\r
      * @param maxLength        Maximum length of the string to read\r
      * @param message  Message to user\r
-     * @return \r
+     * @param allowEmpty Whether to allow empty string\r
+     * @return Entered string by user or null for empty strings\r
      */\r
     @Override\r
-    public String enterString (final int minLength, final int maxLength, final String message) {\r
+    public String enterString (final int minLength, final int maxLength, final String message, final boolean allowEmpty) {\r
        // Init input\r
        String input = null;\r
 \r
        // Check if it is to short or to long\r
-       while ((input == null) || (input.length() < minLength) || (input.length() > maxLength)) {\r
+       while (((input == null) || ((input.length() < minLength) && (!allowEmpty))) || ((input.length() > 0) && (input.length() < minLength) && (allowEmpty)) || ((input instanceof String) && (input.length() > maxLength))) {\r
            // Output message\r
            System.out.print(message);\r
 \r
index 95335ff7978a0d2fb1efdb6d02bdf8c3b9cfd3e1..7bf18b09c21a3731f0e7e8068bf36431f6182781 100644 (file)
@@ -467,4 +467,19 @@ public class BaseContact extends BaseFrameworkSystem {
        // Display other data "box"\r
        client.displayOtherDataBox((Contact) this);\r
     }\r
+\r
+    /**\r
+     * Updates name data in this Contact instance\r
+     * @param gender Gender (M, F, C)\r
+     * @param surname Surname\r
+     * @param familyName Family name\r
+     * @param companyName Company name\r
+     */\r
+    public void updateNameData (final char gender, final String surname, final String familyName, final String companyName) {\r
+       // Set all\r
+       this.setGender(gender);\r
+       this.setSurname(surname);\r
+       this.setFamilyName(familyName);\r
+       this.setCompanyName(companyName);\r
+    }\r
 }\r
index 1ea7d578d64437c7865dc3f3ca486d127427ebb4..ee52c3c651715fbd4481d249bfb8415ef75c2a18 100644 (file)
@@ -155,4 +155,13 @@ public interface Contact extends FrameworkInterface {
      * @param client Client instance to call back\r
      */\r
     public void show (final Client client);\r
+\r
+    /**\r
+     * Updates name data in this Contact instance\r
+     * @param gender Gender (M, F, C)\r
+     * @param surname Surname\r
+     * @param familyName Family name\r
+     * @param companyName Company name\r
+     */\r
+    public void updateNameData (final char gender, final String surname, final String familyName, final String companyName);\r
 }\r
index b86e2d9edaf947c324cd615105b2d34c5d65c1a2..4cf38b14f1a97ba8263cdda6051728436e37a01d 100644 (file)
@@ -32,15 +32,17 @@ public class UserContact extends BookContact implements Contact {
      * @param gender Gender to be set\r
      * @param surname Surname to be set\r
      * @param familyName Family name to be set\r
+     * @param companyName Company name\r
      * @todo Add validation of data\r
      */\r
-    public UserContact (final char gender, final String surname, final String familyName) {\r
+    public UserContact (final char gender, final String surname, final String familyName, final String companyName) {\r
        // Make sure all constructors are called\r
        this();\r
 \r
        this.setGender(gender);\r
        this.setSurname(surname);\r
        this.setFamilyName(familyName);\r
+       this.setCompanyName(companyName);\r
     }\r
 \r
     /**\r
index e4e842ce19c66b07cfead9708e723045bcca0787..7dca9da4d0705fea2aca57287c90299b123ade72 100644 (file)
@@ -19,6 +19,7 @@ package org.mxchange.addressbook.manager.contact;
 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
@@ -92,20 +93,45 @@ public class ContactManager extends BaseManager implements ManageableContact {
      * 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 changeAddressData (final Contact contact) {\r
-       throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.\r
+    public void changeAddressData (final Contact contact, final Client client) {\r
+       throw new UnsupportedOperationException("Not supported yet.");\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 changeNameData (final Contact contact) {\r
-       throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.\r
+    public void changeNameData (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
@@ -120,10 +146,11 @@ public class ContactManager extends BaseManager implements ManageableContact {
      * 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 changeOtherData (final Contact contact) {\r
-       throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.\r
+    public void changeOtherData (final Contact contact, final Client client) {\r
+       throw new UnsupportedOperationException("Not supported yet.");\r
     }\r
 \r
     /**\r
@@ -155,7 +182,7 @@ public class ContactManager extends BaseManager implements ManageableContact {
        try {\r
            // Ask user what to change\r
            this.getClient().doUserChangeAdressChoice(contact);\r
-       } catch (final Exception ex) {\r
+       } catch (final UnhandledUserChoiceException ex) {\r
            this.getLogger().catching(ex);\r
        }\r
     }\r
@@ -182,8 +209,11 @@ public class ContactManager extends BaseManager implements ManageableContact {
        // 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
@@ -202,12 +232,20 @@ public class ContactManager extends BaseManager implements ManageableContact {
        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 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
@@ -223,7 +261,7 @@ public class ContactManager extends BaseManager implements ManageableContact {
      * @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
index ac0db41e70bb1ea0f11aba9ba90d70b59bb13062..1d41304d4eda25caabc83f02a0683f668cc71cb9 100644 (file)
@@ -16,6 +16,7 @@
  */\r
 package org.mxchange.addressbook.manager.contact;\r
 \r
+import org.mxchange.addressbook.client.Client;\r
 import org.mxchange.addressbook.contact.Contact;\r
 import org.mxchange.addressbook.manager.Manageable;\r
 \r
@@ -42,16 +43,18 @@ public interface ManageableContact extends Manageable {
      * of given Contact instance.\r
      * \r
      * @param contact Instance to change data\r
+     * @param client Client instance to call back\r
      */\r
-    public void changeAddressData (final Contact contact);\r
+    public void changeAddressData (final Contact contact, final Client client);\r
 \r
     /**\r
      * The user can change name data, like gender, surname, family name and\r
      * company name (if business contact).\r
      * \r
      * @param contact Instance to change data\r
+     * @param client Client instance to call back\r
      */\r
-    public void changeNameData (final Contact contact);\r
+    public void changeNameData (final Contact contact, final Client client);\r
 \r
     /**\r
      * Let the user change other address\r
@@ -62,8 +65,9 @@ public interface ManageableContact extends Manageable {
      * The user can change other data, like phone numbers or comments.\r
      * \r
      * @param contact Instance to change data\r
+     * @param client Client instance to call back\r
      */\r
-    public void changeOtherData (final Contact contact);\r
+    public void changeOtherData (final Contact contact, final Client client);\r
 \r
     /**\r
      * Let the user change own data\r