package edu.sc.seis.sod.process.waveform;
import java.io.BufferedOutputStream;
import java.io.DataOutput;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import org.w3c.dom.Element;
import edu.iris.Fissures.network.ChannelImpl;
import edu.iris.Fissures.seismogramDC.LocalSeismogramImpl;
import edu.sc.seis.fissuresUtil.cache.CacheEvent;
import edu.sc.seis.fissuresUtil.sound.FissuresToWAV;
import edu.sc.seis.fissuresUtil.time.MicroSecondTimeRange;
import edu.sc.seis.fissuresUtil.xml.SeismogramFileTypes;
import edu.sc.seis.sod.ConfigurationException;
import edu.sc.seis.sod.SodUtil;
public class WavWriter extends AbstractSeismogramWriter {
public WavWriter(String workingDir, String fileTemplate, String prefix, int speedup) throws ConfigurationException {
super(workingDir, fileTemplate, prefix, false);
this.speedup = speedup;
}
public WavWriter(Element el) throws ConfigurationException {
this(extractWorkingDir(el),
extractFileTemplate(el, DEFAULT_FILE_TEMPLATE),
extractPrefix(el),
SodUtil.loadInt(el, SPEEDUP, 2000));
}
public static final String DEFAULT_FILE_TEMPLATE = DEFAULT_FILE_TEMPLATE_WO_EXT+".wav";
@Override
public SeismogramFileTypes getFileType() {
// not used as not saved in db
return null;
}
@Override
public void write(String loc, LocalSeismogramImpl seis, ChannelImpl chan, CacheEvent ev) throws Exception {
File f = new File(loc);
FissuresToWAV fisToWAV = new FissuresToWAV(seis, speedup);
DataOutputStream out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(f)));
fisToWAV.writeWAV(out, new MicroSecondTimeRange(seis));
out.close();
}
int speedup = 2000;
public static final String SPEEDUP = "speedup";
}