[Bprocessor-commit] model/src/net/sourceforge/bprocessor/model/sense/brunata BrunataHistory.java,
Status: Pre-Alpha
Brought to you by:
henryml
From: Michael L. <he...@us...> - 2010-08-31 13:48:12
|
Update of /cvsroot/bprocessor/model/src/net/sourceforge/bprocessor/model/sense/brunata In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv20256/src/net/sourceforge/bprocessor/model/sense/brunata Added Files: BrunataHistory.java TargetManager.java Log Message: --- NEW FILE: TargetManager.java --- package net.sourceforge.bprocessor.model.sense.brunata; import java.util.HashMap; import java.util.Map; import net.sourceforge.bprocessor.model.sense.core.History; import net.sourceforge.bprocessor.model.sense.core.Sensor; import net.sourceforge.bprocessor.model.sense.core.Target; public class TargetManager { private static TargetManager instance; public static TargetManager instance() { if (instance == null) { instance = new TargetManager(); } return instance; } private Map<String, Target> targets; private BrunataHistory history; public TargetManager() { targets = new HashMap<String, Target>(); history = new BrunataHistory(); } public Target getTarget(String id) { Target target = targets.get(id); if (target == null) { target = new Target(id); Sensor temperature = new Sensor("TEMPERATURE", "temperature"); target.getSensors().add(temperature); Sensor humidity = new Sensor("HUMIDITY", "humidity"); target.getSensors().add(humidity); targets.put(id, target); } return target; } public History getHistory() { return history; } } --- NEW FILE: BrunataHistory.java --- package net.sourceforge.bprocessor.model.sense.brunata; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; import java.text.DecimalFormat; import java.text.NumberFormat; import java.util.Date; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import net.sourceforge.bprocessor.model.sense.brunata.xml.Document; import net.sourceforge.bprocessor.model.sense.brunata.xml.DocumentParser; import net.sourceforge.bprocessor.model.sense.brunata.xml.Element; import net.sourceforge.bprocessor.model.sense.brunata.xml.Atom; import net.sourceforge.bprocessor.model.sense.brunata.xml.Persistence; import net.sourceforge.bprocessor.model.sense.brunata.xml.Persistence.Serie; import net.sourceforge.bprocessor.model.sense.brunata.xml.Persistence.DataItem; import net.sourceforge.bprocessor.model.sense.core.History; import net.sourceforge.bprocessor.model.sense.core.Measurement; import net.sourceforge.bprocessor.model.sense.core.Sensor; import net.sourceforge.bprocessor.model.sense.core.Target; public class BrunataHistory extends History { private Map<String, String> map; public BrunataHistory() { map = new HashMap<String, String>(); map.put("3134", "2501858"); map.put("3132", "2501861"); map.put("3119", "2501863"); map.put("3138", "2501864"); map.put("3127", "2501865"); } public List<Measurement> fetch(Target target, Sensor sensor, Date from) { List<Measurement> result = new LinkedList<Measurement>(); String id = map.get(target.getId()); String type = sensor.getId(); try { URL url = address(id, type, from); Document document = fetch(url); Persistence persistence = new Persistence(); List<Serie> series = persistence.internalize(document); NumberFormat format = new DecimalFormat("0.0"); for (Serie current : series) { for (DataItem item : current.items()) { String value = format.format(item.value); long time = item.timestamp; Measurement measurement = new Measurement(time, value); result.add(measurement); } } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return result; } public List<Measurement> fetch(Target target, Sensor sensor, Date from, Date to) { List<Measurement> result = new LinkedList<Measurement>(); for (Measurement current : fetch(target, sensor, from)) { if (current.getTime() < to.getTime()) { result.add(current); } } return result; } private Document fetch(URL url) throws Exception { URLConnection connection = url.openConnection(); DocumentParser parser = new DocumentParser(); InputStream input = connection.getInputStream(); Document document = parser.parse(input); input.close(); return document; } private URL address(String id, String type, Date from) throws Exception { String www = "https://ext.brunata.com/ws-webmon/v1/da/"; String login = "040985:b35c52662aee64d6b12faa2a2eb7013a/"; String what = "meters/"; String meter = ":(" + type + ").xml"; String parameter = "?period=" + from.getTime(); String address = www + login + what + id + meter + parameter; return new URL(address); } } |