
org.openl.rules.ui.tablewizard.ConditionClauseRegistry Maven / Gradle / Ivy
The newest version!
package org.openl.rules.ui.tablewizard;
import java.util.List;
import java.util.Map;
import java.util.HashMap;
import java.util.ArrayList;
import java.util.Set;
import java.util.HashSet;
import javax.faces.model.SelectItem;
/**
* @author Aliaksandr Antonik.
*/
public class ConditionClauseRegistry {
private static ConditionClauseRegistry instance = new ConditionClauseRegistry();
private static final Set numericClasses;
private Map> registry;
private Map selectItems;
private Map id2Variant = new HashMap();
static {
numericClasses = new HashSet();
numericClasses.add("int");
numericClasses.add("byte");
numericClasses.add("short");
numericClasses.add("long");
numericClasses.add("float");
numericClasses.add("double");
numericClasses.add("char");
}
public static ConditionClauseRegistry getInstance() {
return instance;
}
private static String getType(String clazz) {
if (numericClasses.contains(clazz)) {
return "numeric";
}
if (String.class.getName().equals(clazz)) {
return "string";
}
if ("boolean".equals(clazz)) {
return "boolean";
}
return "object";
}
public ConditionClauseRegistry() {
registry = new HashMap>();
List numericClauses = new ArrayList();
numericClauses.add(new ConditionClauseVariant("less", "{0} < {1}"));
numericClauses.add(new ConditionClauseVariant("more", "{0} > {1}"));
numericClauses.add(new ConditionClauseVariant("equals", "{0} == {1}"));
registry.put("numeric", numericClauses);
List stringClauses = new ArrayList();
stringClauses.add(new ConditionClauseVariant("starts", "{0}.startsWith({1})"));
stringClauses.add(new ConditionClauseVariant("ends", "{0}.endsWith({1})"));
stringClauses.add(new ConditionClauseVariant("equals", "{0}.equals({1})"));
registry.put("string", stringClauses);
List dateClauses = new ArrayList();
dateClauses.add(new ConditionClauseVariant("equals", "{0}.equals({1})"));
registry.put("object", dateClauses);
List booleanClauses = new ArrayList();
booleanClauses.add(new ConditionClauseVariant("equals", "{0} == {1})"));
booleanClauses.add(new ConditionClauseVariant("not equal", "{0} != {1})"));
registry.put("boolean", booleanClauses);
index();
}
public ConditionClauseVariant get(long id) {
return id2Variant.get(id);
}
public List getConditionClauseVariants(String clazz) {
return registry.get(getType(clazz));
}
public SelectItem[] getItemsByType(String clazz) {
return selectItems.get(getType(clazz));
}
private void index() {
for (List conditions : registry.values()) {
for (ConditionClauseVariant variant : conditions) {
id2Variant.put(variant.getId(), variant);
}
}
selectItems = new HashMap();
for (Map.Entry> entry : registry.entrySet()) {
SelectItem[] items = new SelectItem[entry.getValue().size()];
int pos = 0;
for (ConditionClauseVariant v : entry.getValue()) {
items[pos++] = new SelectItem(v.getId(), v.getDisplayValue());
}
selectItems.put(entry.getKey(), items);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy