package com.vaadin.v7.data.util.filter;
import com.vaadin.v7.data.Container.Filter;
import com.vaadin.v7.data.Item;
import com.vaadin.v7.data.Property;
import com.vaadin.v7.data.util.ObjectProperty;
import com.vaadin.v7.data.util.PropertysetItem;
import junit.framework.TestCase;
public abstract class AbstractFilterTestBase<FILTERTYPE extends Filter>
extends TestCase {
protected static final String PROPERTY1 = "property1";
protected static final String PROPERTY2 = "property2";
protected static class TestItem<T1, T2> extends PropertysetItem {
public TestItem(T1 value1, T2 value2) {
addItemProperty(PROPERTY1, new ObjectProperty<T1>(value1));
addItemProperty(PROPERTY2, new ObjectProperty<T2>(value2));
}
}
protected static class NullProperty implements Property<String> {
@Override
public String getValue() {
return null;
}
@Override
public void setValue(String newValue) throws ReadOnlyException {
throw new ReadOnlyException();
}
@Override
public Class<String> getType() {
return String.class;
}
@Override
public boolean isReadOnly() {
return true;
}
@Override
public void setReadOnly(boolean newStatus) {
// do nothing
}
}
public static class SameItemFilter implements Filter {
private final Item item;
private final Object propertyId;
public SameItemFilter(Item item) {
this(item, "");
}
public SameItemFilter(Item item, Object propertyId) {
this.item = item;
this.propertyId = propertyId;
}
@Override
public boolean passesFilter(Object itemId, Item item)
throws UnsupportedOperationException {
return this.item == item;
}
@Override
public boolean appliesToProperty(Object propertyId) {
return this.propertyId != null ? this.propertyId.equals(propertyId)
: true;
}
@Override
public boolean equals(Object obj) {
if (obj == null || !getClass().equals(obj.getClass())) {
return false;
}
SameItemFilter other = (SameItemFilter) obj;
return item == other.item
&& (propertyId == null ? other.propertyId == null
: propertyId.equals(other.propertyId));
}
@Override
public int hashCode() {
return item.hashCode();
}
}
}