package edu.sc.seis.sod.subsetter.request; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import edu.iris.Fissures.Dimension; import edu.iris.Fissures.Plottable; import edu.iris.Fissures.IfSeismogramDC.RequestFilter; import edu.iris.Fissures.network.ChannelIdUtil; import edu.iris.Fissures.network.ChannelImpl; import edu.sc.seis.fissuresUtil.cache.CacheEvent; import edu.sc.seis.fissuresUtil.cache.NSPlottableDC; import edu.sc.seis.fissuresUtil.cache.ProxyPlottableDC; import edu.sc.seis.fissuresUtil.cache.RetryPlottableDC; import edu.sc.seis.fissuresUtil.display.PlottableDisplay; import edu.sc.seis.fissuresUtil.xml.XMLUtil; import edu.sc.seis.sod.CommonAccess; import edu.sc.seis.sod.CookieJar; import edu.sc.seis.sod.SodUtil; import edu.sc.seis.sod.source.AbstractSource; import edu.sc.seis.sod.status.Pass; import edu.sc.seis.sod.status.StringTree; public class PlottableRequest extends AbstractSource implements RequestSubsetter { public PlottableRequest(Element config) throws Exception { super(config, "DelilahCache"); dns = SodUtil.loadText(config, "dns", "edu/iris/dmc"); NodeList dims = config.getElementsByTagName("pixelsPerDay"); pixelsPerDay = new int[dims.getLength()]; for(int i=0;i<dims.getLength();i++) { pixelsPerDay[i] = Integer.parseInt(XMLUtil.getText((Element)dims.item(i))); } plottableCache = new RetryPlottableDC(new NSPlottableDC(getDNS(), getName(), CommonAccess.getNameService()), 2); } public StringTree accept(CacheEvent event, ChannelImpl channel, RequestFilter[] request, CookieJar cookieJar) throws Exception { Plottable[] plottables = new Plottable[0]; for (int i = 0; i < request.length; i++) { for (int k = 0; k < pixelsPerDay.length; k++) { Dimension dimension = new Dimension(pixelsPerDay[k], PlottableDisplay.OFFSET); plottables = plottableCache.get_plottable(request[i], dimension); } } System.out.println("Got "+plottables.length+" plottable for "+ChannelIdUtil.toStringNoDates(channel)+" "+request[0].start_time.date_time+" to "+request[0].end_time.date_time); return new Pass(this); } public String getDNS() { return dns; } private String dns = ""; private ProxyPlottableDC plottableCache; private int[] pixelsPerDay; }