/**
* ChannelsInSiteTemplate.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.Channel;
import edu.iris.Fissures.IfNetwork.Site;
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.SiteFormatter;
public class ChannelsInSiteTemplate extends NetworkInfoTemplate{
private Site site;
private List channelListeners = new ArrayList();
private Logger logger = LoggerFactory.getLogger(ChannelsInSiteTemplate.class);
public ChannelsInSiteTemplate(Element el, String baseDir, String outputLocation, Site site) throws ConfigurationException , IOException{
super(baseDir, outputLocation);
this.site = site;
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("channels")){
ChannelGroupTemplate cgt = new ChannelGroupTemplate(el);
channelListeners.add(cgt);
return cgt;
}
else if (tag.equals("site")){
return new MySiteTemplate(el);
}
return super.getTemplate(tag,el);
}
public void change(Channel channel, Status status){
logger.debug("change(channel, status): " + site.getStation().getNetworkAttr().get_code() + "."
+ site.getStation().getNetworkAttr().get_code() + "." + site.getStation().get_code()
+ "." + site.get_code() + "." + channel.get_code() + ", " + status.toString());
Iterator it = channelListeners.iterator();
while (it.hasNext()){
((ChannelGroupTemplate)it.next()).change(channel, status);
}
write();
}
private class MySiteTemplate implements GenericTemplate{
public MySiteTemplate(Element el) throws ConfigurationException {
formatter = new SiteFormatter(el);
}
public String getResult(){
return formatter.getResult(site);
}
SiteFormatter formatter;
}
}