package org.objectstyle.wolips.ruleeditor.model; import java.util.Collections; import java.util.HashMap; import java.util.Map; /** * @author <a href="mailto:hprange@moleque.com.br">Henrique Prange</a> */ public enum Qualifier { AND("and", "com.webobjects.eocontrol.EOAndQualifier"), KEY_VALUE("", "com.webobjects.eocontrol.EOKeyValueQualifier"), NOT("not", "com.webobjects.eocontrol.EONotQualifier"), OR("or", "com.webobjects.eocontrol.EOOrQualifier"); private static final Map<String, Qualifier> QUALIFIERS_BY_CLASS_NAME; private static final Map<String, Qualifier> QUALIFIERS_BY_DISPLAY_NAME; static { Map<String, Qualifier> tempMap = new HashMap<String, Qualifier>(4); tempMap.put(AND.getClassName(), AND); tempMap.put(KEY_VALUE.getClassName(), KEY_VALUE); tempMap.put(NOT.getClassName(), NOT); tempMap.put(OR.getClassName(), OR); QUALIFIERS_BY_CLASS_NAME = Collections.unmodifiableMap(tempMap); tempMap = new HashMap<String, Qualifier>(4); tempMap.put(AND.getDisplayName(), AND); tempMap.put(KEY_VALUE.getDisplayName(), KEY_VALUE); tempMap.put(NOT.getDisplayName(), NOT); tempMap.put(OR.getDisplayName(), OR); QUALIFIERS_BY_DISPLAY_NAME = Collections.unmodifiableMap(tempMap); tempMap = null; } public static Qualifier forClassName(String className) { if (className == null) { return KEY_VALUE; } Qualifier qualifier = QUALIFIERS_BY_CLASS_NAME.get(className); if (qualifier == null) { throw new IllegalArgumentException("The className " + className + " is an invalid className for a Qualifier"); } return qualifier; } public static Qualifier forDisplayName(String displayName) { if (displayName == null) { return KEY_VALUE; } Qualifier qualifier = QUALIFIERS_BY_DISPLAY_NAME.get(displayName); if (qualifier == null) { throw new IllegalArgumentException("The display name " + displayName + " is an invalid display name for a Qualifier"); } return qualifier; } private final String className; private final String displayName; Qualifier(String displayName, String className) { this.className = className; this.displayName = displayName; } public String getClassName() { return className; } public String getDisplayName() { return displayName; } }