/**
* 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)
/**
* 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)
*