/** * Taper.java * * @author Created by Omnicore CodeGuide */ 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.CookieJar; import edu.sc.seis.sod.SodUtil; import edu.sc.seis.sod.Threadable; import edu.sc.seis.sod.status.StringTreeLeaf; public class Taper implements WaveformProcess, Threadable { public Taper (Element config) { int type = edu.sc.seis.fissuresUtil.bag.Taper.HANNING; Element typeElement = SodUtil.getElement(config, "type"); if (typeElement != null) { String typeStr = SodUtil.getText(typeElement); if (typeStr.equals("hanning")) { type = edu.sc.seis.fissuresUtil.bag.Taper.HANNING; } else if (typeStr.equals("hamming")) { type = edu.sc.seis.fissuresUtil.bag.Taper.HANNING; } else if (typeStr.equals("cosine")) { type = edu.sc.seis.fissuresUtil.bag.Taper.COSINE; } } Element widthElement = SodUtil.getElement(config, "width"); if (widthElement != null) { float width = Float.parseFloat(SodUtil.getText(widthElement)); taper = new edu.sc.seis.fissuresUtil.bag.Taper(type, width); } else { taper = new edu.sc.seis.fissuresUtil.bag.Taper(type); } } public boolean isThreadSafe() { return true; } public WaveformResult accept(CacheEvent event, ChannelImpl channel, RequestFilter[] original, RequestFilter[] available, LocalSeismogramImpl[] seismograms, CookieJar cookieJar ) throws Exception { LocalSeismogramImpl[] out = new LocalSeismogramImpl[seismograms.length]; for (int i=0; i<seismograms.length; i++) { out[i] = taper.apply(seismograms[i]); } // end of for (int i=0; i<seismograms.length; i++) return new WaveformResult(out, new StringTreeLeaf(this, true)); } edu.sc.seis.fissuresUtil.bag.Taper taper; }