]> git.mxchange.org Git - jcore.git/commitdiff
Reverted a bit back because the ConsoleClient has enterChar() which requires an array...
authorRoland Haeder <roland@mxchange.org>
Mon, 10 Aug 2015 13:37:05 +0000 (15:37 +0200)
committerRoland Haeder <roland@mxchange.org>
Mon, 10 Aug 2015 13:37:05 +0000 (15:37 +0200)
Signed-off-by:Roland Häder <roland@mxchange.org>

src/org/mxchange/jcore/contact/Gender.java

index 598b69777c2cfeb90b6d39bfbaa151528bfa2ad4..e28734ce36558a2217f56eae059b269b810e33d8 100644 (file)
@@ -28,19 +28,108 @@ public enum Gender {
        /**
         * Unknown enum
         */
-       UNKNOWN("BaseContact.gender.unknown.text"),
+       UNKNOWN('U', "BaseContact.gender.unknown.text"),
        /**
         * Male enum
         */
-       MALE("BaseContact.gender.male.text"),
+       MALE('M', "BaseContact.gender.male.text"),
        /**
         * Female enum
         */
-       FEMALE("BaseContact.gender.female.text"),
+       FEMALE('F', "BaseContact.gender.female.text"),
        /**
         * Company enum
         */
-       COMPANY("BaseContact.gender.company.text");
+       COMPANY('C', "BaseContact.gender.company.text");
+
+       /**
+        * Cache for valid chars
+        */
+       private static char[] validChars;
+
+       /**
+        * Getter for Gender enum from given character
+        *
+        * @param gender Gender character
+        * @return Gender enum
+        */
+       public static Gender fromChar (final char gender) {
+               Gender g = null;
+               switch (gender) {
+                       case 'U': // Unknown
+                               g = UNKNOWN;
+                               break;
+
+                       case 'M': // Male
+                               g = MALE;
+                               break;
+
+                       case 'F': // Female
+                               g = FEMALE;
+                               break;
+
+                       case 'C': // Company
+                               g = COMPANY;
+                               break;
+
+                       default: // Unsupported
+                               throw new IllegalArgumentException("gender " + gender + " is invalid.");
+               }
+
+               // Return it
+               //* NOISY-DEBUG: */ System.out.println("gender=" + g.getClass().getName());
+               return g;
+       }
+
+       /**
+        * Valid chars
+        *
+        * @return Valid chars
+        */
+       public static char[] validChars () {
+               // Is cache set?
+               if (validChars != null) {
+                       // Return it
+                       return validChars;
+               }
+
+               // Init array
+               char[] valid = new char[3];
+
+               // Get values
+               int i = 0;
+               for (Object value : values()) {
+                       // First cast
+                       Gender gender = (Gender) value;
+
+                       // Debug message
+                       //* NOISY-DEBUG: */ System.out.println("gender=" + gender);
+                       // Is it UNKNOWN?
+                       if (gender.equals(Gender.UNKNOWN)) {
+                               // Skip this
+                               continue;
+                       }
+
+                       // Debug message
+                       //* NOISY-DEBUG: */ System.out.println(MessageFormat.format("gender={0} - adding at pos {1} ...", gender, i));
+                       // Get database value as this is also the access
+                       valid[i] = gender.getAccessChar();
+
+                       // Increment index
+                       i++;
+               }
+
+               // Set it here
+               validChars = valid;
+
+               // Return finialized array
+               return valid;
+       }
+
+       /**
+        * Value being entered by ConsoleClient
+        */
+       private final char accessChar;
 
        /**
         * Output value (for messages)
@@ -50,12 +139,24 @@ public enum Gender {
        /**
         * Constructor
         *
+        * @param accessChar Value being entered by ConsoleClient
         * @param messageKey Message key for resource file
         */
-       private Gender (final String messageKey) {
+       private Gender (final char accessChar, final String messageKey) {
+               // Set both
+               this.accessChar = accessChar;
                this.messageKey = messageKey;
        }
 
+       /**
+        * Database value
+        *
+        * @return the accessChar
+        */
+       public char getAccessChar () {
+               return this.accessChar;
+       }
+
        /**
         * Output value (for messages)
         *