package edu.sc.seis.sod.source.seismogram; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import edu.iris.Fissures.IfSeismogramDC.RequestFilter; import edu.iris.Fissures.network.ChannelImpl; import edu.sc.seis.fissuresUtil.cache.CacheEvent; import edu.sc.seis.sod.ConfigurationException; import edu.sc.seis.sod.CookieJar; import edu.sc.seis.sod.SodElement; import edu.sc.seis.sod.SodUtil; import edu.sc.seis.sod.status.StringTree; import edu.sc.seis.sod.subsetter.Subsetter; import edu.sc.seis.sod.subsetter.eventChannel.EventChannelLogicalSubsetter; import edu.sc.seis.sod.subsetter.eventChannel.EventChannelSubsetter; import edu.sc.seis.sod.subsetter.origin.OriginTimeRange; public class ChoiceSourceItem implements EventChannelSubsetter, SeismogramSourceLocator { public ChoiceSourceItem(Element config) throws ConfigurationException { NodeList childNodes = config.getChildNodes(); Node node; for(int counter = 0; counter < childNodes.getLength(); counter++) { node = childNodes.item(counter); if ( ! (node instanceof Element)) { continue; } SodElement sodElement = (SodElement)SodUtil.load((Element)node, new String[] {"seismogram", "eventChannel", "eventStation", "channel", "station", "network", "origin"}); if(sodElement instanceof SeismogramSourceLocator) { locator = (SeismogramSourceLocator)sodElement; } else { eventChannelSubsetter = EventChannelLogicalSubsetter.createSubsetter((Subsetter)sodElement); } } } public ChoiceSourceItem(OriginTimeRange subsetter, SeismogramSourceLocator source) throws ConfigurationException { eventChannelSubsetter = EventChannelLogicalSubsetter.createSubsetter(subsetter); locator = source; } public SeismogramSource getSeismogramSource(CacheEvent event, ChannelImpl channel, RequestFilter[] infilters, CookieJar cookieJar) throws Exception { return locator.getSeismogramSource(event, channel, infilters, cookieJar); } public StringTree accept(CacheEvent event, ChannelImpl channel, CookieJar cookieJar) throws Exception { return eventChannelSubsetter.accept(event, channel, cookieJar); } SeismogramSourceLocator locator; EventChannelSubsetter eventChannelSubsetter; }