/** * StationsInNetworkTemplate.java * * @author Created by Philip Oliver-Paull */ package edu.sc.seis.sod.status.networkArm; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.w3c.dom.Element; import edu.iris.Fissures.IfNetwork.NetworkAttr; import edu.iris.Fissures.IfNetwork.Station; import edu.sc.seis.sod.ConfigurationException; import edu.sc.seis.sod.Status; import edu.sc.seis.sod.status.GenericTemplate; import edu.sc.seis.sod.status.NetworkFormatter; import edu.sc.seis.sod.status.StationGroupTemplate; public class StationsInNetworkTemplate extends NetworkInfoTemplate { private NetworkAttr network; private List stationListeners = new ArrayList(); private Logger logger = LoggerFactory.getLogger(StationsInNetworkTemplate.class); public StationsInNetworkTemplate(Element el, String baseDir, String outputLocation, NetworkAttr net) throws IOException, ConfigurationException { super(baseDir, outputLocation); network = net; parse(el); write(); } /** * if this class has an template for this tag, it creates it using the * passed in element and returns it. Otherwise it returns null. */ protected Object getTemplate(String tag, Element el) throws ConfigurationException { if(tag.equals("stations")) { StationGroupTemplate sgt = new StationGroupTemplate(el); stationListeners.add(sgt); return sgt; } else if(tag.equals("network")) { return new MyNetworkTemplate(el); } return super.getTemplate(tag, el); } public void change(Station station, Status status) { Iterator it = stationListeners.iterator(); while(it.hasNext()) { ((StationGroupTemplate)it.next()).change(station, status); } write(); } public NetworkAttr getNetwork() { return network; } private class MyNetworkTemplate implements GenericTemplate { public MyNetworkTemplate(Element el) throws ConfigurationException { formatter = new NetworkFormatter(el); } public String getResult() { return formatter.getResult(network); } NetworkFormatter formatter; } }