001package var.web.ws.datasensor;
002
003import java.io.StringReader;
004import java.util.Date;
005
006import javax.json.Json;
007import javax.json.JsonObject;
008import javax.json.JsonReader;
009import javax.websocket.DecodeException;
010import javax.websocket.Decoder;
011import javax.websocket.EndpointConfig;
012
013public class DataDecoder implements Decoder.Text<Messung> {
014
015        @Override
016        public void destroy() {
017        }
018
019        @Override
020        public void init(EndpointConfig arg0) {
021        }
022
023        @Override
024        public Messung decode(String messungData) throws DecodeException {
025                JsonReader reader = Json.createReader(new StringReader(messungData));
026                JsonObject messungJson = reader.readObject();
027                Messung messung = new Messung();
028                messung.setUnit(Messung.Unit.valueOf(messungJson.getString("unit")));
029                messung.setObservation(Double.parseDouble(messungJson.getString("observation")));
030                Messung.Place where = new Messung.Place();
031                where.setLat(messungJson.getJsonObject("where").getInt("lat"));
032                where.setLon(messungJson.getJsonObject("where").getInt("lon"));
033                messung.setWhere(where);
034                messung.setSensor(messungJson.getString("sensor"));
035                messung.setWhen(new Date(messungJson.getJsonNumber("when").longValueExact()));
036                reader.close();
037                return messung;
038        }
039
040        @Override
041        public boolean willDecode(String arg0) {
042                return true;
043        }
044
045}