/**
* ChannelsInStationTemplate.java
*
* @author Created by Omnicore CodeGuide
*/
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.Channel;
import edu.iris.Fissures.IfNetwork.Site;
import edu.iris.Fissures.IfNetwork.Station;
import edu.sc.seis.sod.ConfigurationException;
import edu.sc.seis.sod.Status;
import edu.sc.seis.sod.status.ChannelGroupTemplate;
import edu.sc.seis.sod.status.GenericTemplate;
import edu.sc.seis.sod.status.SiteGroupTemplate;
import edu.sc.seis.sod.status.StationFormatter;
public class ChannelsInStationTemplate extends NetworkInfoTemplate {
private Station station;
private List channelListeners = new ArrayList();
private List siteListeners = new ArrayList();
private Logger logger = LoggerFactory.getLogger(ChannelsInStationTemplate.class);
public ChannelsInStationTemplate(Element el, String baseDir,
String outputLocation, Station sta) throws ConfigurationException,
IOException {
super(baseDir, outputLocation);
station = sta;
parse(el);
write();
}
protected Object getTemplate(String tag, Element el)
throws ConfigurationException {
if(tag.equals("channels")) {
ChannelGroupTemplate cgt = new ChannelGroupTemplate(el);
channelListeners.add(cgt);
return cgt;
} else if(tag.equals("sites")) {
SiteGroupTemplate sgt = new SiteGroupTemplate(el);
siteListeners.add(sgt);
return sgt;
} else if(tag.equals("station")) { return new MyStationTemplate(el); }
return super.getTemplate(tag, el);
}
public void change(Channel channel, Status status) {
logger.debug("change(channel, status): "
+ channel.getSite().getStation().getNetworkAttr().get_code() + "."
+ channel.getSite().getStation().get_code() + "."
+ channel.getSite().get_code() + "." + channel.get_code() + ", "
+ status.toString());
Iterator it = channelListeners.iterator();
while(it.hasNext()) {
((ChannelGroupTemplate)it.next()).change(channel, status);
}
write();
}
public void change(Site site, Status status) {
logger.debug("change(site , status): "
+ site.getStation().getNetworkAttr().get_code() + "."
+ site.getStation().get_code() + "." + site.get_code() + ", "
+ status.toString());
Iterator it = siteListeners.iterator();
while(it.hasNext()) {
((SiteGroupTemplate)it.next()).change(site, status);
}
write();
}
private class MyStationTemplate implements GenericTemplate {
public MyStationTemplate(Element el) throws ConfigurationException {
formatter = new StationFormatter(el);
}
public String getResult() {
return formatter.getResult(station);
}
StationFormatter formatter;
}
}