Java tutorial
/** * Copyright (C) 2014 Envidatec GmbH <info@envidatec.com> * * This file is part of JECommons. * * JECommons is free software: you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation in version 3. * * JEWebService is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License along with * JECommons. If not, see <http://www.gnu.org/licenses/>. * * JECommons is part of the OpenJEVis project, further project information are * published at <http://www.OpenJEVis.org/>. */ package org.jevis.commons.json; import java.util.ArrayList; import java.util.List; import org.jevis.api.JEVisAttribute; import org.jevis.api.JEVisClass; import org.jevis.api.JEVisClassRelationship; import org.jevis.api.JEVisException; import org.jevis.api.JEVisObject; import org.jevis.api.JEVisRelationship; import org.jevis.api.JEVisSample; import org.jevis.api.JEVisType; import org.joda.time.format.DateTimeFormatter; import org.joda.time.format.ISODateTimeFormat; /** * * @author Florian Simon <florian.simon@envidatec.com> */ public class JsonFactory { // public static JEVisObject buildObject(JEVisDataSource ds, JsonObject ob){ // // } /** * * @param obj * @param attributes * @param children * @param allSample * @return * @throws JEVisException */ public static JsonObject buildObject(JEVisObject obj, boolean attributes, boolean children, boolean allSample) throws JEVisException { JsonObject json = new JsonObject(); json.setName(obj.getName()); json.setId(obj.getID()); json.setJevisClass(obj.getJEVisClass().getName()); if (!obj.getParents().isEmpty()) { json.setParent(22l); } if (attributes) { for (JEVisAttribute att : obj.getAttributes()) { json.getAttributes().add(JsonFactory.buildAttribute(att, allSample)); } } if (children) { for (JEVisObject child : obj.getChildren()) { json.getChildren().add(JsonFactory.buildObject(child, attributes, children, allSample)); } } // List<JsonRelationship> rels = new LinkedList<JsonRelationship>(); // for (JEVisRelationship rel : obj.getRelationships()) { // rels.add(JsonFactory.buildRelationship(rel)); // } // json.setRelations(rels); return json; } public static JsonRelationship buildRelationship(JEVisRelationship rel) throws JEVisException { JsonRelationship json = new JsonRelationship(); json.setFrom(rel.getStartObject().getID().toString()); json.setTo(rel.getEndObject().getID().toString()); json.setType(rel.getType());//or as String lile Link return json; } public static JsonJEVisClass buildJEVisClass(JEVisClass jclass) throws JEVisException { JsonJEVisClass json = new JsonJEVisClass(); json.setName(jclass.getName()); if (jclass.getInheritance() != null) { json.setInheritance(jclass.getInheritance().getName()); } else { json.setInheritance("null"); } json.setUnique(jclass.isUnique()); json.setDescription(jclass.getDescription()); return json; } public static JsonJEVisClass buildJEVisClassComplete(JEVisClass jclass) throws JEVisException { JsonJEVisClass json = new JsonJEVisClass(); json.setName(jclass.getName()); if (jclass.getInheritance() != null) { json.setInheritance(jclass.getInheritance().getName()); } else { json.setInheritance("null"); } json.setUnique(jclass.isUnique()); json.setDescription(jclass.getDescription()); List<JsonType> types = new ArrayList<>(); for (JEVisType type : jclass.getTypes()) { if (jclass.getInheritance() != null) { if (jclass.getInheritance().getTypes().contains(type)) { System.out.println("Dont export inherit class"); continue; } } types.add(buildType(type)); } json.setTypes(types); List<JsonRelationship> rels = new ArrayList<>(); for (JEVisClassRelationship rel : jclass.getRelationships()) { rels.add(new JsonRelationship(rel)); } json.setRelationships(rels); return json; } /** * @TODO: combine this with buildJEVisClassComplete via an attribute to * switch mode * @param jclass * @return * @throws JEVisException */ public static JsonJEVisClass buildJEVisClassWithType(JEVisClass jclass) throws JEVisException { JsonJEVisClass json = new JsonJEVisClass(); json.setName(jclass.getName()); if (jclass.getInheritance() != null) { json.setInheritance(jclass.getInheritance().getName()); } else { json.setInheritance("null"); } json.setUnique(jclass.isUnique()); json.setDescription(jclass.getDescription()); List<JsonType> types = new ArrayList<>(); for (JEVisType type : jclass.getTypes()) { if (jclass.getInheritance() != null) { if (jclass.getInheritance().getTypes().contains(type)) { System.out.println("Dont export inherit class"); continue; } } types.add(buildType(type)); } json.setTypes(types); return json; } public static JsonAttribute buildAttribute(JEVisAttribute att, boolean allSamples) throws JEVisException { JsonAttribute json = new JsonAttribute(); DateTimeFormatter fmt = ISODateTimeFormat.dateTime(); json.setName(att.getName()); if (att.hasSample()) { json.setFirstTS(fmt.print(att.getTimestampFromFirstSample())); json.setLastTS(fmt.print(att.getTimestampFromLastSample())); json.setLastvalue(att.getLatestSample().getValueAsString()); if (allSamples) { json.setSamples(new ArrayList<JsonSample>()); for (JEVisSample samp : att.getAllSamples()) { json.getSamples().add(JsonFactory.buildSample(samp)); } } } json.setSamplecount(att.getSampleCount()); json.setPeriod("P15m"); json.setObject(att.getObject().getID()); return json; } public static JsonSample buildSample(JEVisSample sample) throws JEVisException { JsonSample json = new JsonSample(); DateTimeFormatter fmt = ISODateTimeFormat.dateTime(); json.setTs(fmt.print(sample.getTimestamp())); json.setValue(sample.getValue().toString()); json.setNote(sample.getNote()); return json; } public static JsonType buildType(JEVisType type) throws JEVisException { JsonType json = new JsonType(); json.setDescription(type.getDescription()); json.setGUIDisplayType(type.getGUIDisplayType()); json.setPrimitiveType(type.getPrimitiveType()); json.setName(type.getName()); json.setValidity("" + type.getValidity()); return json; } // public static JsonUnit buildUnit(JEVisUnit unit) throws JEVisException { // JsonUnit json = new JsonUnit(); // json.set // return json; // } }