package edu.sc.seis.sod.status.eventArm; import java.util.Iterator; import org.w3c.dom.Element; import edu.sc.seis.fissuresUtil.cache.CacheEvent; import edu.sc.seis.sod.ConfigurationException; import edu.sc.seis.sod.hibernate.StatefulEvent; import edu.sc.seis.sod.status.EventFormatter; import edu.sc.seis.sod.status.GenericTemplate; import edu.sc.seis.sod.status.Template; import edu.sc.seis.sod.subsetter.origin.EventSorter; public class EventGroupTemplate extends Template implements GenericTemplate{ protected EventGroupTemplate() { sorter = new EventSorter(); } public EventGroupTemplate(Element config) throws ConfigurationException { this(); parse(config); } public static EventGroupTemplate createDefaultTemplate(){ EventGroupTemplate egt = new EventGroupTemplate(); egt.useDefaultConfig(); return egt; } public void parse(Element el) throws ConfigurationException { if(el.hasChildNodes() == false) useDefaultConfig(); else super.parse(el); if(sorter == null) sorter = new EventSorter(); } protected void useDefaultConfig(){ templates.add(EventFormatter.getDefaultFormatter()); sorter = new EventSorter(); } protected Object getTemplate(String tag, Element el) throws ConfigurationException { if(el.getNodeName().equals("eventLabel")){ return new EventFormatter(el); }else if(el.getNodeName().equals("sorting")){ sorter = new EventSorter(el); return textTemplate(""); } return super.getTemplate(tag, el); } public Object textTemplate(final String text){ return new EventTemplate(){ public String getResult(CacheEvent ev) { return text; } }; } public String getResult(){ StringBuffer output = new StringBuffer(); Iterator it = sorter.getSortedEvents().iterator(); while(it.hasNext()) { StatefulEvent curEv = (StatefulEvent)it.next(); Iterator e = templates.iterator(); while(e.hasNext()){ Object cur = e.next(); if(cur instanceof EventTemplate){ output.append(((EventTemplate)cur).getResult(curEv)); }else{ output.append(cur); } } } return output.substring(0, output.length());//don't include last newline } public void setArmStatus(String status) {}// NO IMPL protected EventSorter sorter; }