package edu.sc.seis.sod.subsetter;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import edu.sc.seis.sod.ConfigurationException;
import edu.sc.seis.sod.SodUtil;
public abstract class LogicalSubsetter implements Subsetter {
protected LogicalSubsetter() {}
public LogicalSubsetter (Element config) throws ConfigurationException {
NodeList kids = config.getChildNodes();
for (int i = 0; i< kids.getLength(); i++) {
if (kids.item(i) instanceof Element) {
Object obj = SodUtil.load((Element)kids.item(i), getPackages().toArray(new String[0]));
if(obj instanceof Subsetter){ filterList.add(getSubsetter((Subsetter)obj)); }
}
}
}
public List<Subsetter> getSubsetters() {
return Collections.unmodifiableList(filterList);
}
public abstract List<String> getPackages();
protected abstract Subsetter getSubsetter(Subsetter s) throws ConfigurationException;
protected List<Subsetter> filterList = new LinkedList<Subsetter>();
private static Logger logger = LoggerFactory.getLogger(LogicalSubsetter.class);
}// LogicalSubsetter