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);
}
}
|