/* * Created on Apr 13, 2007 */ package org.seqcode.gsebricks.verbs; import java.util.Map; import java.util.Set; import org.seqcode.gsebricks.types.*; import java.util.HashSet; public class UniqueFilter<X> implements Filter<X,X>, DependentSelfDescribingVerb { private Set<X> previousValues; private EchoType outputClass; public UniqueFilter() { previousValues = new HashSet<X>(); outputClass = EchoType.OBJECT_CLASS; } public void reset() { previousValues.clear(); } public X execute(X a) { if(previousValues.contains(a)) { return null; } else { previousValues.add(a); return a; } } private static final EchoType[] inputClasses = { EchoType.OBJECT_CLASS }; private static final String[] inputNames = { "Objects" }; private static final EchoType[] paramClasses = null; private static final String[] paramNames = null; public EchoType[] getInputClasses() { return inputClasses; } public String[] getInputNames() { return inputNames; } public EchoType getOutputClass() { return outputClass; } public EchoType[] getParameterClasses() { return paramClasses; } public String[] getParameterNames() { return paramNames; } public void setInput(String n, EchoType c) { if(n.equals(inputNames[0])) { outputClass = c; } } public void clearInput(String n) { if(n.equals(inputNames[0])) { outputClass = EchoType.OBJECT_CLASS; } } public void setParameter(String n, EchoType c) {} public void clearParameter(String n) {} public void init(Map<String, Object> params) { reset(); } }