/**
* SeismogramOR.java
*
* @author Philip Crotwell
*/
package edu.sc.seis.sod.process.waveform;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
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.sc.seis.fissuresUtil.cache.CacheEvent;
import edu.sc.seis.sod.ConfigurationException;
import edu.sc.seis.sod.CookieJar;
import edu.sc.seis.sod.LocalSeismogramArm;
import edu.sc.seis.sod.status.StringTree;
import edu.sc.seis.sod.status.StringTreeBranch;
public class SeismogramOR extends ForkProcess {
public SeismogramOR(Element config) throws ConfigurationException {
super(config);
}
public WaveformResult accept(CacheEvent event,
ChannelImpl channel,
RequestFilter[] original,
RequestFilter[] available,
LocalSeismogramImpl[] seismograms,
CookieJar cookieJar) throws Exception {
List reasons = new ArrayList();
Iterator it = localSeisProcessList.iterator();
WaveformResult result = new WaveformResult(false, seismograms, this);
while(it.hasNext() && !result.isSuccess()) {
WaveformProcess processor = (WaveformProcess)it.next();
result = LocalSeismogramArm.runProcessorThreadCheck(processor,
event,
channel,
original,
available,
result.getSeismograms(),
cookieJar);
reasons.add(result.getReason());
} // end of while (it.hasNext())
return new WaveformResult(result.getSeismograms(),
new StringTreeBranch(this,
result.isSuccess(),
(StringTree[])reasons.toArray(new StringTree[0])));
}
}