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 Selector {
EQUAL("isEqualTo", "="), GREATER_THAN("isGreaterThan", ">"), GREATER_THAN_OR_EQUAL("isGreaterThanOrEqualTo", ">="), LESS_THAN("isLessThan", "<"), LESS_THAN_OR_EQUAL("isLessThanOrEqualTo", "<="), LIKE("isLike", "like"), NOT_EQUAL("isNotEqualTo", "!=");
private static final Map<String, Selector> SELECTORS_BY_NAME;
private static final Map<String, Selector> SELECTORS_BY_OPERATOR;
static {
Map<String, Selector> tempMap = new HashMap<String, Selector>(7);
tempMap.put(EQUAL.getSelectorName(), EQUAL);
tempMap.put(NOT_EQUAL.getSelectorName(), NOT_EQUAL);
tempMap.put(LESS_THAN.getSelectorName(), LESS_THAN);
tempMap.put(LESS_THAN_OR_EQUAL.getSelectorName(), LESS_THAN_OR_EQUAL);
tempMap.put(GREATER_THAN.getSelectorName(), GREATER_THAN);
tempMap.put(GREATER_THAN_OR_EQUAL.getSelectorName(), GREATER_THAN_OR_EQUAL);
tempMap.put(LIKE.getSelectorName(), LIKE);
// Support to isEqual
tempMap.put("isEqual", EQUAL);
SELECTORS_BY_NAME = Collections.unmodifiableMap(tempMap);
tempMap = new HashMap<String, Selector>(7);
tempMap.put(EQUAL.getOperator(), EQUAL);
tempMap.put(NOT_EQUAL.getOperator(), NOT_EQUAL);
tempMap.put(LESS_THAN.getOperator(), LESS_THAN);
tempMap.put(LESS_THAN_OR_EQUAL.getOperator(), LESS_THAN_OR_EQUAL);
tempMap.put(GREATER_THAN.getOperator(), GREATER_THAN);
tempMap.put(GREATER_THAN_OR_EQUAL.getOperator(), GREATER_THAN_OR_EQUAL);
tempMap.put(LIKE.getOperator(), LIKE);
SELECTORS_BY_OPERATOR = Collections.unmodifiableMap(tempMap);
tempMap = null;
}
public static Selector forName(final String name) {
if (name == null) {
return EQUAL;
}
Selector selector = SELECTORS_BY_NAME.get(name);
if (selector == null) {
throw new IllegalArgumentException("The name " + name + " is an invalid name for a Selector");
}
return selector;
}
public static Selector forOperator(final String operator) {
if (operator == null) {
return EQUAL;
}
Selector selector = SELECTORS_BY_OPERATOR.get(operator);
if (selector == null) {
throw new IllegalArgumentException("The operator " + operator + " is an invalid operator for a Selector");
}
return selector;
}
private final String name;
private final String operator;
Selector(String name, String operator) {
this.name = name;
this.operator = operator;
}
public String getOperator() {
return operator;
}
public String getSelectorName() {
return name;
}
}