package hu.sztaki.ilab.longneck.process.constraint; /** * * @author Molnar Peter <molnarp@sztaki.mta.hu> */ public enum CharacterCase { /** The character must be uppercase. */ Uppercase, /** The character must be lowercase. */ Lowercase, /** The string must be capitalized. */ Capitalized; public boolean check(String input) { char[] characters = input.toCharArray(); switch (this) { case Uppercase: for (int i = 0; i < characters.length; ++i) { if (Character.isLetter(characters[i]) && ! Character.isUpperCase(characters[i])) { return false; } } break; case Lowercase: for (int i = 0; i < characters.length; ++i) { if (Character.isLetter(characters[i]) && ! Character.isLowerCase(characters[i])) { return false; } } break; case Capitalized: char prev = ' '; for (int i = 0; i < characters.length; ++i) { if (Character.isSpaceChar(prev) && (Character.isLetter(characters[i]) && ! Character.isUpperCase(characters[i]))) { return false; } prev = characters[i]; } break; } return true; } public char getCharacter(char c) { if (Character.isLetter(c)) { switch (this) { case Uppercase: return Character.toUpperCase(c); case Lowercase: return Character.toLowerCase(c); default: return c; } } return c; } }