package com.revolsys.swing.list.filter;
import javax.swing.ListModel;
import javax.swing.RowFilter;
import com.revolsys.datatype.DataTypes;
import com.revolsys.util.Property;
public class StringContainsRowFilter extends RowFilter<ListModel, Integer> {
private String filterText;
private final boolean match;
public StringContainsRowFilter() {
this("");
}
public StringContainsRowFilter(final String filterText) {
this(filterText, true);
}
public StringContainsRowFilter(final String filterText, final boolean match) {
this.filterText = filterText;
this.match = match;
}
@Override
public boolean include(final Entry<? extends ListModel, ? extends Integer> entry) {
final Integer identifier = entry.getIdentifier();
final Object value = entry.getValue(identifier);
final String string = DataTypes.toString(value);
if (Property.hasValue(this.filterText)) {
if (Property.hasValue(string)) {
return string.toUpperCase().contains(this.filterText) == this.match;
} else {
return false;
}
} else {
return true;
}
}
public void setFilterText(final String filterText) {
this.filterText = filterText.toUpperCase();
}
}