/** * set a node attribute * * @param objectID unique ID of the JEVisObject on the Server. * @param attributeName unique name of the Attribute under this Object * @param value and its value */ public static void writeToJEVis(long objectID, String attributeName, Object value) { try { // Check if the connection is still alive. An JEVisException will be // thrown if you use one of the functions and the connection is lost if (jevis.isConnectionAlive()) { // Get the JEVisObject with the given ID. You can get the uniqe // ID with the help of JEConfig. if (jevis.getObject(objectID) != null) { JEVisObject myObject = jevis.getObject(objectID); Logger.getLogger(WiotechStructureCreator.class.getName()) .log(Level.INFO, "JEVisObject: " + myObject); // Get the JEVisAttribute by its unique identifier. if (myObject.getAttribute(attributeName) != null) { JEVisAttribute attribute = myObject.getAttribute(attributeName); Logger.getLogger(WiotechStructureCreator.class.getName()) .log(Level.INFO, "JEVisAttribute: " + attribute); DateTime timestamp = DateTime.now(); // Now we let the Attribute creates an JEVisSample,an JEVisSample allways need an // Timestamp and an value. JEVisSample newSample = attribute.buildSample(timestamp, value, "This is an note, imported via SysReader"); // Until now we created the sample only localy and we have to commit it to the JEVis // Server. newSample.commit(); // TODO: we need an example for attribute.addSamples(listOfSamples); function. This // function allows to commit a bunch of sample at once } else { Logger.getLogger(WiotechStructureCreator.class.getName()) .log(Level.SEVERE, "Could not found the Attribute with the name:" + attributeName); } } else { Logger.getLogger(WiotechStructureCreator.class.getName()) .log(Level.SEVERE, "Could not found the Object with the id:" + objectID); } } else { Logger.getLogger(WiotechStructureCreator.class.getName()) .log(Level.SEVERE, "Connection to the JEVisServer is not alive"); // TODO: the programm could now retry to connect, // We dont have to do the isConnectionAlive() but use the JEVisException to handle this // problem. } } catch (JEVisException ex) { Logger.getLogger(WiotechStructureCreator.class.getName()).log(Level.SEVERE, null, ex); } }
/** * Create an new JEVisObject on the JEVis Server. * * @param parentObjectID unique ID of the parent object where the new object will be created under * @param newObjectClass The JEVisClass of the new JEVisObject * @param newObjectName The name of the new JEVisObject */ private static JEVisObject createObject( long parentObjectID, String newObjectClass, String newObjectName) { JEVisObject newObject = null; try { // Check if the connection is still alive. An JEVisException will be // thrown if you use one of the functions and the connection is lost if (jevis.isConnectionAlive()) { // Get the ParentObject from the JEVis system if (jevis.getObject(parentObjectID) != null) { JEVisObject parentObject = jevis.getObject(parentObjectID); JEVisClass parentClass = parentObject.getJEVisClass(); // Get the JEVisClass we want our new JEVisObject to have if (jevis.getJEVisClass(newObjectClass) != null) { JEVisClass newClass = jevis.getJEVisClass(newObjectClass); // Check if the JEVisObject with this class is allowed under a parent of the other Class // it will also check if the JEVisClass is unique and if another object of the Class // exist. if (newClass.isAllowedUnder(parentClass)) { newObject = parentObject.buildObject(newObjectName, newClass); newObject.commit(); Logger.getLogger(WiotechStructureCreator.class.getName()) .log(Level.INFO, "New ID: " + newObject.getID()); } else { Logger.getLogger(WiotechStructureCreator.class.getName()) .log( Level.SEVERE, "Cannot create Object because the parent JEVisClass does not allow the child"); } } } else { Logger.getLogger(WiotechStructureCreator.class.getName()) .log(Level.SEVERE, "Cannot create Object because the parent is not accessible"); } } else { Logger.getLogger(WiotechStructureCreator.class.getName()) .log(Level.SEVERE, "Connection to the JEVisServer is not alive"); } } catch (JEVisException ex) { Logger.getLogger(WiotechStructureCreator.class.getName()).log(Level.SEVERE, null, ex); } return newObject; }
private static ObjectAndBoolean createObjectCheckNameExistance( long parentObjectID, String newObjectClass, String newObjectName) { try { // Check if the connection is still alive. An JEVisException will be // thrown if you use one of the functions and the connection is lost if (jevis.isConnectionAlive()) { // Get the ParentObject from the JEVis system if (jevis.getObject(parentObjectID) != null) { JEVisObject parentObject = jevis.getObject(parentObjectID); List<JEVisObject> children = parentObject.getChildren(); for (JEVisObject child : children) { try { String mac = child.getAttribute("MAC").getLatestSample().getValueAsString(); if (mac.equals(newObjectName)) { return new ObjectAndBoolean(child, false); } } catch (NullPointerException ex) { if (child.getName().equals(newObjectName)) { return new ObjectAndBoolean(child, false); } } } } else { Logger.getLogger(WiotechStructureCreator.class.getName()) .log(Level.SEVERE, "Cannot create Object because the parent is not accessible"); } } else { Logger.getLogger(WiotechStructureCreator.class.getName()) .log(Level.SEVERE, "Connection to the JEVisServer is not alive"); } } catch (JEVisException ex) { Logger.getLogger(WiotechStructureCreator.class.getName()).log(Level.SEVERE, null, ex); } return new ObjectAndBoolean(createObject(parentObjectID, newObjectClass, newObjectName), true); }