package edu.sc.seis.sod.subsetter.station;
import java.io.IOException;
import java.util.regex.Pattern;
import org.w3c.dom.Element;
import edu.iris.Fissures.network.StationImpl;
import edu.sc.seis.fissuresUtil.cache.FilterNetworkAccess;
import edu.sc.seis.fissuresUtil.cache.FilterNetworkDC;
import edu.sc.seis.fissuresUtil.display.configuration.DOMHelper;
import edu.sc.seis.sod.SodUtil;
import edu.sc.seis.sod.source.network.NetworkSource;
import edu.sc.seis.sod.status.Fail;
import edu.sc.seis.sod.status.Pass;
import edu.sc.seis.sod.status.StringTree;
/**
* @author groves Created on Mar 4, 2005
*/
public class StationRegularExpression implements StationSubsetter {
public StationRegularExpression(Element el) throws IOException {
if (DOMHelper.hasElement(el, "url")) {
String url = DOMHelper.extractText(el, "url");
patterns = FilterNetworkDC.readPattern(url);
} else if (DOMHelper.hasElement(el, "code")) {
patterns = new Pattern[] { Pattern.compile(SodUtil.getNestedText(DOMHelper.getElement(el, "code"))) };
}
}
public StringTree accept(StationImpl station, NetworkSource network) throws Exception {
for(int i = 0; i < patterns.length; i++) {
if(patterns[i].matcher(FilterNetworkAccess.getStationString(station.get_id()))
.matches()) { return new Pass(this); }
}
return new Fail(this);
}
private Pattern[] patterns;
}