package com.canoo.ant.filter;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Properties;
public abstract class ATableFilter implements ITableFilter {
private String fForeignName;
protected ATableFilter() {
}
protected ATableFilter(String foreignName) {
setForeignName(foreignName);
}
public void setForeignName(String foreignName) {
if ("".equals(foreignName))
fForeignName = null;
else
fForeignName = foreignName;
}
public List filter(final List original, final String expected) {
reset();
final List result = new LinkedList();
for (Iterator iter = original.iterator(); iter.hasNext();) {
final Properties props = (Properties) iter.next();
if (fForeignName != null) {
final String runningValue = props.getProperty(fForeignName, null);
if (matches(expected, runningValue)) {
result.add(props);
if (stopOnMatch())
return result;
}
}
else {
result.add(props);
}
}
return result;
}
protected void reset(){
// empty per default
}
protected abstract boolean matches(String expected, String runningValue);
protected abstract boolean stopOnMatch();
}