package edu.sc.seis.sod.status.eventArm; import java.io.IOException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.w3c.dom.Element; import edu.sc.seis.fissuresUtil.cache.CacheEvent; import edu.sc.seis.fissuresUtil.display.EQDataEvent; import edu.sc.seis.fissuresUtil.map.OpenMap; import edu.sc.seis.fissuresUtil.map.colorizer.event.FreshnessEventColorizer; import edu.sc.seis.fissuresUtil.map.layers.EventLayer; import edu.sc.seis.sod.SodElement; import edu.sc.seis.sod.Status; import edu.sc.seis.sod.hibernate.StatefulEventDB; import edu.sc.seis.sod.status.FileWritingTemplate; import edu.sc.seis.sod.status.MapPool; import edu.sc.seis.sod.status.OutputScheduler; public class MapEventStatus implements SodElement, EventMonitor, Runnable { private String fileLoc; public MapEventStatus(Element element) { this(getLocation(element)); } public MapEventStatus(String location) { fileLoc = location; run(); } public static String getLocation(Element el) { return FileWritingTemplate.getBaseDirectoryName() + '/' + el.getAttribute("xlink:href"); } public void change(CacheEvent event, Status status) { OutputScheduler.getDefault().schedule(this); } public String getLocation() { return fileLoc; } public void run() { OpenMap map = pool.getMap(new FreshnessEventColorizer()); try { EventLayer el = map.getEventLayer(); el.eventDataChanged(new EQDataEvent(StatefulEventDB.getSingleton().getAll())); map.writeMapToPNG(fileLoc); } catch(IOException e) { throw new RuntimeException("Trouble writing map", e); } finally { pool.returnMap(map); } } public void setArmStatus(String status) {}// noImpl private static MapPool pool = MapPool.getDefaultPool(); private static Logger logger = LoggerFactory.getLogger(MapEventStatus.class); }