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}