package pt.ist.expenditureTrackingSystem.domain;
import java.io.Serializable;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
import pt.ist.fenixframework.Atomic;
public abstract class Search<T> implements Serializable {
protected abstract class SearchResultSet<T> extends HashSet<T> {
public SearchResultSet(Collection<? extends T> c) {
super(c);
}
@Override
public boolean add(final T t) {
return matchesSearchCriteria(t) && super.add(t);
}
protected abstract boolean matchesSearchCriteria(final T t);
protected boolean matchCriteria(final String criteria, final String value) {
return criteria == null || criteria.length() == 0 || criteria.equals(value);
}
}
public abstract Set<T> search();
public Set<T> getResult() {
return search();
}
@Atomic
public void persistSearch(String name) {
persist(name);
}
protected void persist(String name) {
}
}