/**
* NetworkFormatter.java
*
* @author Created by Omnicore CodeGuide
*/
package edu.sc.seis.sod.status;
import java.util.Iterator;
import java.util.StringTokenizer;
import org.w3c.dom.Element;
import edu.iris.Fissures.IfNetwork.NetworkAttr;
import edu.iris.Fissures.network.NetworkIdUtil;
import edu.sc.seis.sod.ConfigurationException;
import edu.sc.seis.sod.Status;
public class NetworkFormatter extends Template implements NetworkTemplate {
private NetworkGroupTemplate ngt;
public NetworkFormatter(Element el) throws ConfigurationException {
this(el, null);
}
public NetworkFormatter(Element el, NetworkGroupTemplate ngt)
throws ConfigurationException {
this.ngt = ngt;
parse(el);
}
/**
* Method getResult
*
* @param network
* a NetworkAccess
* @return a String
*/
public String getResult(NetworkAttr network) {
StringBuffer buf = new StringBuffer();
Iterator it = templates.iterator();
while(it.hasNext()) {
NetworkTemplate cur = (NetworkTemplate)it.next();
buf.append(cur.getResult(network));
}
return buf.toString();
}
/**
* returns an object of the template type that this class uses, and returns
* the passed in text when the getResult method of that template type is
* called
*/
protected Object textTemplate(final String text) {
return new NetworkTemplate() {
public String getResult(NetworkAttr net) {
return text;
}
};
}
/**
* 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, final Element el) {
if(tag.equals("networkCode")) {
return new NetworkTemplate() {
public String getResult(NetworkAttr net) {
return net.get_code();
}
};
} else if(tag.equals("beginTime")) {
return new NetworkTemplate() {
public String getResult(NetworkAttr net) {
return btt.getResult(net.get_id().begin_time);
}
TimeTemplate btt = new TimeTemplate(el, false);
};
} else if(tag.equals("endTime")) {
return new NetworkTemplate() {
public String getResult(NetworkAttr net) {
return btt.getResult(net.getEffectiveTime().end_time);
}
TimeTemplate btt = new TimeTemplate(el, false);
};
} else if(tag.equals("beginTimeUnformatted")) {
return new NetworkTemplate() {
public String getResult(NetworkAttr net) {
return net.get_id().begin_time.date_time;
}
};
} else if(tag.equals("name")) {
return new NetworkTemplate() {
public String getResult(NetworkAttr net) {
return net.getName();
}
};
} else if(tag.equals("firstWord")) {
return new NetworkTemplate() {
public String getResult(NetworkAttr net) {
if(net.getName() == null || net.getName().equals("")){
return "";
}
StringTokenizer tok = new StringTokenizer(net.getName(), " /,.-");
return tok.nextToken();
}
};
} else if(tag.equals("description")) {
return new NetworkTemplate() {
public String getResult(NetworkAttr net) {
return net.getDescription();
}
};
} else if(tag.equals("owner")) {
return new NetworkTemplate() {
public String getResult(NetworkAttr net) {
return net.getOwner();
}
};
} else if(tag.equals("status") && ngt != null) {
return new NetworkTemplate() {
public String getResult(NetworkAttr net) {
String id = NetworkIdUtil.toString(net.get_id());
return ngt.statusMap.get(id).toString();
}
};
} else if(tag.equals("standing") && ngt != null) {
return new NetworkTemplate() {
public String getResult(NetworkAttr net) {
String id = NetworkIdUtil.toString(net.get_id());
Status status = (Status)ngt.statusMap.get(id);
return status.getStanding().toString();
}
};
}
return getCommonTemplate(tag, el);
}
}