diff --git a/ccm-ldn-navigation/src/com/arsdigita/london/navigation/ui/object/CompareFilter.java b/ccm-ldn-navigation/src/com/arsdigita/london/navigation/ui/object/CompareFilter.java new file mode 100644 index 000000000..1c634378b --- /dev/null +++ b/ccm-ldn-navigation/src/com/arsdigita/london/navigation/ui/object/CompareFilter.java @@ -0,0 +1,189 @@ +package com.arsdigita.london.navigation.ui.object; + +import com.arsdigita.xml.Element; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +/** + * A filter for the {@link CustomizableObjectList}. The {@code CompareFilter} + * filters the object list using a provided value and a operator. Valid + * operators defined in the {@link Operators} enumeration. + * + * @author Jens Pelzetter + */ +public class CompareFilter implements Filter { + + private static final String ALL = "--ALL--"; + private final String property; + private final String label; + private final boolean allOption; + private final boolean allOptionIsDefault; + private final boolean propertyIsNumeric; + private Map options = new LinkedHashMap(); + private String value; + + protected CompareFilter(final String property, + final String label, + final boolean allOption, + final boolean allOptionIsDefault, + final boolean propertyIsNumeric) { + this.property = property; + this.label = label; + this.allOption = allOption; + this.allOptionIsDefault = allOptionIsDefault; + this.propertyIsNumeric = propertyIsNumeric; + } + + @Override + public void setValue(final String value) { + this.value = value; + } + + public CompareFilter addOption(final String label, final String value) { + return addOption(label, Operators.EQ, value); + } + + public CompareFilter addOption(final String label, + final Operators operator, + final String value) { + Option option; + option = new Option(label, operator, value); + options.put(label, option); + return this; + } + + @Override + public String getFilter() { + Option selectedOption; + StringBuffer filter; + + if ((value == null) || value.isEmpty()) { + if (allOptionIsDefault) { + value = ALL; + } else { + value = + new ArrayList