package edu.sc.seis.sod.process.waveform; import org.w3c.dom.Element; import edu.iris.Fissures.IfSeismogramDC.RequestFilter; import edu.iris.Fissures.network.ChannelImpl; import edu.iris.Fissures.seismogramDC.LocalSeismogramImpl; import edu.iris.Fissures.seismogramDC.RequestFilterUtil; import edu.sc.seis.fissuresUtil.cache.CacheEvent; import edu.sc.seis.fissuresUtil.time.CoverageTool; import edu.sc.seis.sod.CookieJar; import edu.sc.seis.sod.status.StringTreeLeaf; /** * @author groves Created on Sep 8, 2004 */ public class FullDataCoverage implements WaveformProcess { public FullDataCoverage() { super(); } public FullDataCoverage(Element config) {} public WaveformResult accept(CacheEvent event, ChannelImpl channel, RequestFilter[] original, RequestFilter[] available, LocalSeismogramImpl[] seismograms, CookieJar cookieJar) { if (seismograms.length == 0) { return new WaveformResult(seismograms, new StringTreeLeaf(this, false, "No seismograms")); } RequestFilter[] notCovered = CoverageTool.notCovered(original, seismograms); notCovered = RequestFilterUtil.removeSmallRequests(notCovered, seismograms[0].getSampling().getPeriod()); // remove time windows smaller than one sample if (notCovered.length == 0) { String reason = "Data returned completly covers the request"; return new WaveformResult(seismograms, new StringTreeLeaf(this, true, reason)); } String reason = "Data does not cover "+notCovered.length+" sections of the request. "; for (int i = 0; i < notCovered.length; i++) { reason += notCovered[i].start_time.date_time + " to " + notCovered[i].end_time.date_time+", "; } return new WaveformResult(seismograms, new StringTreeLeaf(this, false, reason)); } }