package org.springframework.roo.project; import org.apache.commons.lang3.Validate; import org.apache.commons.lang3.builder.ToStringBuilder; import org.w3c.dom.Element; /** * Simplified immutable representation of a filter. * * @author Alan Stewart * @since 1.1 */ public class Filter implements Comparable<Filter> { private final String value; /** * Convenience constructor for creating a filter instance from a XML Element * * @param element containing the property definition (required) */ public Filter(final Element element) { Validate.notNull(element, "Element required"); value = element.getTextContent(); } /** * Convenience constructor creating a filter instance * * @param value the property value (required) */ public Filter(final String value) { Validate.notBlank(value, "Value required"); this.value = value; } public int compareTo(final Filter o) { if (o == null) { throw new NullPointerException(); } return value.compareTo(o.value); } @Override public boolean equals(final Object obj) { return obj instanceof Filter && compareTo((Filter) obj) == 0; } /** * The value of a filter * * @return the value */ public String getValue() { return value; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + (value == null ? 0 : value.hashCode()); return result; } @Override public String toString() { final ToStringBuilder builder = new ToStringBuilder(this); builder.append("value", value); return builder.toString(); } }