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.sc.seis.fissuresUtil.cache.CacheEvent;
import edu.sc.seis.sod.ConfigurationException;
import edu.sc.seis.sod.CookieJar;
import edu.sc.seis.sod.Stage;
import edu.sc.seis.sod.Standing;
import edu.sc.seis.sod.Status;
import edu.sc.seis.sod.hibernate.SodDB;
import edu.sc.seis.sod.status.StringTreeBranch;
public class RetryAndContinue extends ResultWrapper {
public RetryAndContinue(Element config) throws ConfigurationException {
super(config);
}
public String toString() {
return "RetryAndContinue(" + subprocess.toString() + ")";
}
public WaveformResult accept(CacheEvent event,
ChannelImpl channel,
RequestFilter[] original,
RequestFilter[] available,
LocalSeismogramImpl[] seismograms,
CookieJar cookieJar) throws Exception {
if(sodDb == null) {
sodDb = SodDB.getSingleton();
}
WaveformResult result = subprocess.accept(event,
channel,
original,
available,
seismograms,
cookieJar);
if(!result.isSuccess()) {
cookieJar.getPair().update(Status.get(Stage.AVAILABLE_DATA_SUBSETTER,
Standing.RETRY));
return wrapResult(result);
}
return result;
}
protected WaveformResult wrapResult(WaveformResult result) {
return new WaveformResult(result.getSeismograms(),
new StringTreeBranch(this,
true,
result.getReason()));
}
private SodDB sodDb;
}