Example usage for com.mongodb MongoClientURI MongoClientURI

List of usage examples for com.mongodb MongoClientURI MongoClientURI

Introduction

In this page you can find the example usage for com.mongodb MongoClientURI MongoClientURI.

Prototype

public MongoClientURI(final String uri) 

Source Link

Document

Creates a MongoURI from the given string.

Usage

From source file:eu.vital.vitalcep.restApp.filteringApi.StaticFiltering.java

/**
 * Gets a filter./*from   w ww  .  ja v a  2s.com*/
 *
 * @param info
     * @param req
 * @return the filter 
 * @throws java.io.IOException 
 */
@POST
@Path("filterstaticquery")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response filterstaticquery(String info, @Context HttpServletRequest req) throws IOException {

    JSONObject jo = new JSONObject(info);

    if (jo.has("dolceSpecification") && jo.has("query")) {
        // && jo.has("data") for demo
        StringBuilder ck = new StringBuilder();
        Security slogin = new Security();

        JSONObject credentials = new JSONObject();

        Boolean token = slogin.login(req.getHeader("name"), req.getHeader("password"), false, ck);
        credentials.put("username", req.getHeader("name"));
        credentials.put("password", req.getHeader("password"));
        if (!token) {
            return Response.status(Response.Status.UNAUTHORIZED).build();
        }
        this.cookie = ck.toString();

        MongoClient mongo = new MongoClient(new MongoClientURI(mongoURL));
        MongoDatabase db = mongo.getDatabase(mongoDB);

        try {
            db.getCollection("staticqueryfilters");
        } catch (Exception e) {
            //System.out.println("Mongo is down");
            db = null;
            if (mongo != null) {
                mongo.close();
                mongo = null;
            }
            return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build();

        }

        if (jo.has("dolceSpecification")) {

            //Filter oFilter = new Filter(filter);
            JSONObject dsjo = jo.getJSONObject("dolceSpecification");
            String str = dsjo.toString();//"{\"dolceSpecification\": "+ dsjo.toString()+"}";

            try {

                DolceSpecification ds = new DolceSpecification(str);

                if (!(ds instanceof DolceSpecification)) {
                    return Response.status(Response.Status.BAD_REQUEST).build();
                }

                String mqin = RandomStringUtils.randomAlphanumeric(8);
                String mqout = RandomStringUtils.randomAlphanumeric(8);

                CEP cepProcess = new CEP();

                if (!(cepProcess.CEPStart(CEP.CEPType.QUERY, ds, mqin, mqout, confFile, jo.getString("query"),
                        null))) {
                    return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build();
                }

                String clientName = "collector_" + RandomStringUtils.randomAlphanumeric(4);

                if (cepProcess.PID < 1) {
                    return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build();
                }

                UUID uuid = UUID.randomUUID();
                String randomUUIDString = uuid.toString();

                DBObject dbObject = createCEPFilterStaticSensorJsonld(info, randomUUIDString, jo, dsjo,
                        "vital:CEPFilterStaticQuerySensor");
                Document doc = new Document(dbObject.toMap());

                try {
                    db.getCollection("staticqueryfilters").insertOne(doc);
                    String id = doc.get("_id").toString();

                } catch (MongoException ex) {
                    db = null;
                    if (mongo != null) {
                        mongo.close();
                        mongo = null;
                    }
                    return Response.status(Response.Status.BAD_REQUEST).build();
                }

                JSONObject opState = createOperationalStateObservation(randomUUIDString);

                DBObject oPut = (DBObject) JSON.parse(opState.toString());
                Document doc1 = new Document(oPut.toMap());

                try {
                    db.getCollection("staticqueryfiltersobservations").insertOne(doc1);
                    String id = doc1.get("_id").toString();

                } catch (MongoException ex) {
                    db = null;
                    if (mongo != null) {
                        mongo.close();
                        mongo = null;
                    }
                    return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build();
                }

                /////////////////////////////////////////////////////
                // creates client and messages process
                //
                MqttAllInOne oMqtt = new MqttAllInOne();
                TMessageProc MsgProcc = new TMessageProc();

                JSONArray aData = new JSONArray();

                try {

                    DMSManager oDMS = new DMSManager(dmsURL, cookie);

                    aData = oDMS.getObservations(jo.getString("query"));

                    if (aData.length() < 1) {
                        CepContainer.deleteCepProcess(cepProcess.PID);

                        if (!cepProcess.cepDispose()) {
                            java.util.logging.Logger.getLogger(StaticFiltering.class.getName())
                                    .log(Level.SEVERE, "bcep Instance not terminated");
                        }
                        ;
                        db = null;
                        if (mongo != null) {
                            mongo.close();
                            mongo = null;
                        }
                        return Response.status(Response.Status.BAD_REQUEST).entity("no data to be filtered")
                                .build();
                    }

                } catch (KeyManagementException | KeyStoreException ex) {
                    java.util.logging.Logger.getLogger(StaticFiltering.class.getName()).log(Level.SEVERE, null,
                            ex);
                }

                //DMSManager oDMS = new DMSManager(dmsURL,req.getHeader("vitalAccessToken"));

                /////////////////////////////////////////////////////////////////////////
                // PREPARING DOLCE INPUT
                Decoder decoder = new Decoder();
                ArrayList<String> simpleEventAL = decoder.JsonldArray2DolceInput(aData);

                /////////////////////////////////////////////////////////////////////////////
                // SENDING TO MOSQUITTO
                oMqtt.sendMsg(MsgProcc, clientName, simpleEventAL, mqin, mqout, false);

                /////////////////////////////////////////////////////////////////////////////
                //RECEIVING FROM MOSQUITO
                ArrayList<MqttMsg> mesagges = MsgProcc.getMsgs();

                //FORMATTING OBSERVATIONS OUTPUT
                Encoder encoder = new Encoder();

                ArrayList<Document> outputL;
                outputL = new ArrayList<>();

                outputL = encoder.dolceOutputList2ListDBObject(mesagges, host, randomUUIDString);

                String sOutput = "[";
                for (int i = 0; i < outputL.size(); i++) {
                    Document element = outputL.get(i);

                    if (i == 0) {
                        sOutput = sOutput + element.toJson();
                    }
                    sOutput = sOutput + "," + element.toJson();
                }

                sOutput = sOutput + "]";

                try {

                    DMSManager pDMS = new DMSManager(dmsURL, cookie);

                    MongoCollection<Document> collection = db.getCollection("staticqueryfiltersobservations");

                    if (outputL.size() > 0) {
                        collection.insertMany(outputL);
                        if (!pDMS.pushObservations(sOutput)) {
                            java.util.logging.Logger.getLogger(StaticFiltering.class.getName())
                                    .log(Level.SEVERE, "coudn't save to the DMS");
                        }
                    }

                } catch (IOException | KeyManagementException | NoSuchAlgorithmException
                        | KeyStoreException ex) {
                    db = null;
                    if (mongo != null) {
                        mongo.close();
                        mongo = null;
                    }
                    java.util.logging.Logger.getLogger(StaticFiltering.class.getName()).log(Level.SEVERE, null,
                            ex);
                }

                CepContainer.deleteCepProcess(cepProcess.PID);

                if (!cepProcess.cepDispose()) {
                    java.util.logging.Logger.getLogger(StaticFiltering.class.getName()).log(Level.SEVERE,
                            "bcep Instance not terminated");
                }
                ;
                db = null;
                if (mongo != null) {
                    mongo.close();
                    mongo = null;
                }
                return Response.status(Response.Status.OK).entity(sOutput).build();

            } catch (IOException | JSONException | NoSuchAlgorithmException | java.text.ParseException e) {
                db = null;
                if (mongo != null) {
                    mongo.close();
                    mongo = null;
                }
                return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build();
            }
        }

        return Response.status(Response.Status.BAD_REQUEST).build();

    }

    return Response.status(Response.Status.BAD_REQUEST).build();

}

From source file:eu.vital.vitalcep.restApp.vuaippi.Observation.java

/**
* Gets sensors metadata .//from ww  w . j ava2s .c o m
*
* @return the metadata of the sensors 
* @throws java.io.FileNotFoundException 
*/
@POST
@Path("stream/subscribe")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response subscribeToObservations(String info, @Context HttpServletRequest req)
        throws FileNotFoundException, IOException {

    StringBuilder ck = new StringBuilder();
    Security slogin = new Security();

    Boolean token = slogin.login(req.getHeader("name"), req.getHeader("password"), false, ck);
    if (!token) {
        return Response.status(Response.Status.UNAUTHORIZED).build();
    }

    MongoClient mongo = new MongoClient(new MongoClientURI(mongoURL));

    MongoDatabase db = mongo.getDatabase(mongoDB);

    DBObject dbObject = (DBObject) JSON.parse(info);

    if (!dbObject.containsField("sensor")) {
        return Response.status(Response.Status.BAD_REQUEST).build();
    }
    if (!dbObject.containsField("property")) {
        return Response.status(Response.Status.BAD_REQUEST).build();
    }
    if (!dbObject.containsField("url")) {
        return Response.status(Response.Status.BAD_REQUEST).build();
    }

    Document doc = new Document(dbObject.toMap());

    try {
        db.getCollection("subscriptions").insertOne(doc);
        String id = doc.get("_id").toString();
        return Response.status(Response.Status.OK).entity("{\"subscription\":\"" + id + "\"}").build();
    } catch (MongoException ex) {
        return Response.status(Response.Status.BAD_REQUEST).build();
    } finally {
        db = null;
        if (mongo != null) {
            mongo.close();
            mongo = null;
        }
    }

}

From source file:eu.vital.vitalcep.restApp.vuaippi.Observation.java

@POST
@Path("stream/unsubscribe")
@Consumes(MediaType.APPLICATION_JSON)/*from w w w.  j  av  a  2s . co m*/
@Produces(MediaType.APPLICATION_JSON)
public Response unSubscribeToObservations(String info, @Context HttpServletRequest req)
        throws FileNotFoundException, IOException {
    JSONObject jObject = new JSONObject();
    try {
        jObject = new JSONObject(info);
        if (!jObject.has("subscription")) {
            return Response.status(Response.Status.BAD_REQUEST).build();
        }

    } catch (Exception e) {
        return Response.status(Response.Status.BAD_REQUEST).build();
    }

    StringBuilder ck = new StringBuilder();
    Security slogin = new Security();

    Boolean token = slogin.login(req.getHeader("name"), req.getHeader("password"), false, ck);
    if (!token) {
        return Response.status(Response.Status.UNAUTHORIZED).build();
    }

    MongoClient mongo = new MongoClient(new MongoClientURI(mongoURL));

    MongoDatabase db = mongo.getDatabase(mongoDB);

    Document doc = new Document("_id", new ObjectId(jObject.getString("subscription")));

    DeleteResult deleted = db.getCollection("subscriptions").deleteOne(doc);

    db = null;
    if (mongo != null) {
        mongo.close();
        mongo = null;
    }

    if (deleted.wasAcknowledged() != true || deleted.getDeletedCount() != 1) {
        return Response.status(Response.Status.NOT_FOUND).build();
    }

    return Response.status(Response.Status.OK).build();
}

From source file:eu.vital.vitalcep.restApp.vuaippi.Sensor.java

/**
* Gets sensors metadata ./*from w w  w .ja  va2 s. c o  m*/
*
* @param info
* @param req
* @return the metadata of the sensors 
* @throws java.io.FileNotFoundException 
*/
@POST
@Path("metadata")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response getSensorMetadata(String info, @Context HttpServletRequest req)
        throws FileNotFoundException, IOException {

    //        StringBuilder ck = new StringBuilder();
    //        Security slogin = new Security();
    //                  
    //        Boolean token = slogin.login(req.getHeader("name")
    //                ,req.getHeader("password"),false,ck);
    //        if (!token){
    //              return Response.status(Response.Status.UNAUTHORIZED).build();
    //        }

    MongoClient mongo = new MongoClient(new MongoClientURI(mongoURL));

    MongoDatabase db = mongo.getDatabase(mongoDB);

    try {
        JSONObject filter = new JSONObject(info);

        if (!filter.has("type") && !filter.has("id")) {

            final JSONArray sensorspool1 = new JSONArray();
            // create an empty query
            BasicDBObject query = new BasicDBObject();
            BasicDBObject fields = new BasicDBObject().append("_id", false).append("query", false)
                    .append("data", false).append("complexEvent", false).append("source", false)
                    .append("event", false).append("dolceSpecification", false);

            FindIterable<Document> coll = db.getCollection("continuousfilters").find(query).projection(fields);

            coll.forEach(new Block<Document>() {
                @Override
                public void apply(final Document document) {
                    String aux = document.toJson();
                    JSONObject sensoraux = new JSONObject(aux);
                    sensoraux.put("status", "vital:Running");
                    sensorspool1.put(sensoraux);
                }
            });

            BasicDBObject query3 = new BasicDBObject();

            BasicDBObject fields3 = new BasicDBObject().append("_id", false).append("query", false)
                    .append("data", false).append("complexEvent", false).append("source", false)
                    .append("event", false).append("dolceSpecification", false);

            FindIterable<Document> coll3 = db.getCollection("staticdatafilters").find(query3)
                    .projection(fields3);

            coll3.forEach(new Block<Document>() {
                @Override
                public void apply(final Document document) {
                    String aux = document.toJson();
                    JSONObject sensoraux = new JSONObject(aux);
                    sensoraux.put("status", "vital:Running");
                    sensorspool1.put(sensoraux);
                }
            });

            BasicDBObject query4 = new BasicDBObject();

            BasicDBObject fields4 = new BasicDBObject().append("_id", false).append("query", false)
                    .append("data", false).append("complexEvent", false).append("source", false)
                    .append("event", false).append("dolceSpecification", false);

            FindIterable<Document> coll4 = db.getCollection("staticqueryfilters").find(query4)
                    .projection(fields4);

            coll4.forEach(new Block<Document>() {
                @Override
                public void apply(final Document document) {
                    String aux = document.toJson();
                    JSONObject sensoraux = new JSONObject(aux);
                    sensoraux.put("status", "vital:Running");
                    sensorspool1.put(sensoraux);
                }
            });

            // create an empty query
            BasicDBObject fieldscep = new BasicDBObject().append("_id", false).append("source", false)
                    .append("query", false).append("complexEvent", false).append("data", false)
                    .append("event", false).append("dolceSpecification", false);

            FindIterable<Document> coll2 = db.getCollection("cepicos").find(query).projection(fieldscep);

            coll2.forEach(new Block<Document>() {
                @Override
                public void apply(final Document document) {
                    String aux = document.toJson();
                    JSONObject sensoraux = new JSONObject(aux);
                    sensoraux.put("status", "vital:Running");
                    sensorspool1.put(sensoraux);
                }
            });

            JSONObject monSensor = new JSONObject();

            monSensor.put("@context", "http://vital-iot.eu/contexts/sensor.jsonld");
            monSensor.put("id", host + "/sensor/1");
            monSensor.put("type", "vital:MonitoringSensor");
            monSensor.put("name", "CEP System Monitoring Sensor");
            monSensor.put("description",
                    "A virtual sensor that monitors the operationalstate of the CEP system");

            JSONObject observesItem1 = new JSONObject();

            observesItem1.put("type", "vital:OperationalState");
            observesItem1.put("id", host + "/sensor/1/operationalState");

            JSONObject observesItem2 = new JSONObject();

            observesItem2.put("type", "vital:SysUptime");
            observesItem2.put("id", host + "/sensor/1/sysUptime");

            JSONObject observesItem3 = new JSONObject();

            observesItem3.put("type", "vital:SysLoad");
            observesItem3.put("id", host + "/sensor/1/sysLoad");

            JSONObject observesItem4 = new JSONObject();

            observesItem4.put("type", "vital:errors");
            observesItem4.put("id", host + "/sensor/1/errors");

            JSONArray observes = new JSONArray();

            observes.put(observesItem1);
            observes.put(observesItem2);
            observes.put(observesItem3);
            //observes.put(observesItem4);     

            monSensor.put("ssn:observes", observes);
            monSensor.put("status", "vital:Running");

            sensorspool1.put(monSensor);

            return Response.status(Response.Status.OK).entity(sensorspool1.toString()).build();

        } else if (filter.has("type")) {
            JSONArray filteredSensors = new JSONArray();
            final JSONArray sensorspool = new JSONArray();

            JSONArray types = filter.getJSONArray("type");
            for (int i = 0; i < types.length(); i++) {

                String type = types.getString(i);

                switch (type) {
                case CEPICOSENSOR_TYPE:
                case "vital:CEPSensor":
                case "CEPSensor":

                    // create an empty query
                    BasicDBObject fieldscep = new BasicDBObject().append("_id", false).append("source", false)
                            .append("query", false).append("complexEvent", false).append("data", false)
                            .append("event", false).append("dolceSpecification", false);
                    BasicDBObject query = new BasicDBObject();

                    FindIterable<Document> coll2 = db.getCollection("cepicoss").find(query)
                            .projection(fieldscep);

                    coll2.forEach(new Block<Document>() {
                        @Override
                        public void apply(final Document document) {
                            String aux = document.toJson();
                            JSONObject sensoraux = new JSONObject(aux);
                            sensoraux.put("status", "vital:Running");
                            sensorspool.put(sensoraux);
                        }
                    });

                    break;
                case MONITORINGSENSOR_TYPE:
                    JSONObject monSensor = new JSONObject();

                    monSensor.put("@context", "http://vital-iot.eu/contexts/sensor.jsonld");
                    monSensor.put("id", host + "/sensor/1");
                    monSensor.put("type", "vital:MonitoringSensor");
                    monSensor.put("name", "CEP System Monitoring Sensor");
                    monSensor.put("description",
                            "A virtual sensor that monitors the operationalstate of the CEP system");

                    JSONObject observesItem1 = new JSONObject();

                    observesItem1.put("type", "vital:OperationalState");
                    observesItem1.put("id", host + "/sensor/1/operationalState");

                    JSONObject observesItem2 = new JSONObject();

                    observesItem2.put("type", "vital:SysUptime");
                    observesItem2.put("id", host + "/sensor/1/sysUptime");

                    JSONObject observesItem3 = new JSONObject();

                    observesItem3.put("type", "vital:SysLoad");
                    observesItem3.put("id", host + "/sensor/1/sysLoad");

                    JSONObject observesItem4 = new JSONObject();

                    observesItem4.put("type", "vital:errors");
                    observesItem4.put("id", host + "/sensor/1/errors");

                    JSONArray observes = new JSONArray();

                    observes.put(observesItem1);
                    observes.put(observesItem2);
                    observes.put(observesItem3);
                    //observes.put(observesItem4);     

                    monSensor.put("ssn:observes", observes);
                    monSensor.put("status", "vital:Running");

                    sensorspool.put(monSensor);
                    filteredSensors.put(monSensor);
                    break;

                case CEPFILTERSTATICDATASENSOR_TYPE:
                case "vital:CEPFilterStaticDataSensor":
                case "CEPFilterStaticDataSensor":

                    BasicDBObject query3 = new BasicDBObject();

                    BasicDBObject fields3 = new BasicDBObject().append("_id", false).append("query", false)
                            .append("data", false).append("complexEvent", false).append("source", false)
                            .append("event", false).append("dolceSpecification", false);

                    FindIterable<Document> coll3 = db.getCollection("staticdatafilters").find(query3)
                            .projection(fields3);

                    coll3.forEach(new Block<Document>() {
                        @Override
                        public void apply(final Document document) {
                            String aux = document.toJson();
                            JSONObject sensoraux = new JSONObject(aux);
                            sensoraux.put("status", "vital:Running");
                            sensorspool.put(sensoraux);
                        }
                    });

                    break;

                case CEPFILTERSTATICQUERYSENSOR_TYPE:
                case "vital:CEPFilterStaticQuerySensor":
                case "CEPFilterStaticQuerySensor":
                    BasicDBObject query4 = new BasicDBObject();

                    BasicDBObject fields4 = new BasicDBObject().append("_id", false).append("query", false)
                            .append("data", false).append("complexEvent", false).append("source", false)
                            .append("event", false).append("dolceSpecification", false);

                    FindIterable<Document> coll4 = db.getCollection("staticqueryfilters").find(query4)
                            .projection(fields4);

                    coll4.forEach(new Block<Document>() {
                        @Override
                        public void apply(final Document document) {
                            String aux = document.toJson();
                            JSONObject sensoraux = new JSONObject(aux);
                            sensoraux.put("status", "vital:Running");
                            sensorspool.put(sensoraux);
                        }
                    });

                    break;

                case CEPFILTERSENSOR_TYPE:
                case "vital:CEPFilterSensor":
                case "CEPFilterSensor":

                    // create an empty query
                    BasicDBObject query2 = new BasicDBObject();
                    BasicDBObject fields = new BasicDBObject().append("_id", false).append("query", false)
                            .append("data", false).append("complexEvent", false).append("source", false)
                            .append("event", false).append("dolceSpecification", false);

                    FindIterable<Document> coll = db.getCollection("continuousfilters").find(query2)
                            .projection(fields);

                    coll.forEach(new Block<Document>() {
                        @Override
                        public void apply(final Document document) {
                            String aux = document.toJson();
                            JSONObject sensoraux = new JSONObject(aux);
                            sensoraux.put("status", "vital:Running");
                            sensorspool.put(sensoraux);
                        }
                    });

                    break;

                default:
                    return Response.status(Response.Status.BAD_REQUEST).build();
                }
            }
            return Response.status(Response.Status.OK).entity(sensorspool.toString()).build();

        } else if (filter.has("id")) {
            final JSONArray sensorspool2 = new JSONArray();
            JSONArray ids = filter.getJSONArray("id");
            for (int i = 0; i < ids.length(); i++) {

                String id = ids.getString(i);
                // create an empty query
                BasicDBObject query = new BasicDBObject("id", id);
                BasicDBObject fields = new BasicDBObject().append("_id", false).append("query", false)
                        .append("data", false).append("complexEvent", false).append("source", false)
                        .append("event", false).append("dolceSpecification", false);

                FindIterable<Document> coll = db.getCollection("filters").find(query).projection(fields);

                coll.forEach(new Block<Document>() {
                    @Override
                    public void apply(final Document document) {
                        String aux = document.toJson();
                        JSONObject sensoraux = new JSONObject(aux);
                        sensoraux.put("status", "vital:Running");
                        sensorspool2.put(sensoraux);
                    }
                });

                BasicDBObject fields3 = new BasicDBObject().append("_id", false).append("query", false)
                        .append("data", false).append("complexEvent", false).append("source", false)
                        .append("event", false).append("dolceSpecification", false);

                FindIterable<Document> coll3 = db.getCollection("staticdatafilters").find(query)
                        .projection(fields3);

                coll3.forEach(new Block<Document>() {
                    @Override
                    public void apply(final Document document) {
                        String aux = document.toJson();
                        JSONObject sensoraux = new JSONObject(aux);
                        sensoraux.put("status", "vital:Running");
                        sensorspool2.put(sensoraux);
                    }
                });

                BasicDBObject fields4 = new BasicDBObject().append("_id", false).append("query", false)
                        .append("data", false).append("complexEvent", false).append("source", false)
                        .append("event", false).append("dolceSpecification", false);

                FindIterable<Document> coll4 = db.getCollection("staticqueryfilters").find(query)
                        .projection(fields4);

                coll4.forEach(new Block<Document>() {
                    @Override
                    public void apply(final Document document) {
                        String aux = document.toJson();
                        JSONObject sensoraux = new JSONObject(aux);
                        sensoraux.put("status", "vital:Running");
                        sensorspool2.put(sensoraux);
                    }
                });

                // create an empty query
                BasicDBObject fieldscep = new BasicDBObject().append("_id", false).append("source", false)
                        .append("query", false).append("complexEvent", false).append("data", false)
                        .append("event", false).append("dolceSpecification", false);

                FindIterable<Document> coll2 = db.getCollection("ceps").find(query).projection(fieldscep);

                coll2.forEach(new Block<Document>() {
                    @Override
                    public void apply(final Document document) {
                        String aux = document.toJson();
                        JSONObject sensoraux = new JSONObject(aux);
                        sensoraux.put("status", "vital:Running");
                        sensorspool2.put(sensoraux);
                    }
                });

                if (id.equals(host + "/sensor/1")) {
                    JSONObject monSensor = new JSONObject();

                    monSensor.put("@context", "http://vital-iot.eu/contexts/sensor.jsonld");
                    monSensor.put("id", host + "/sensor/1");
                    monSensor.put("type", "vital:MonitoringSensor");
                    monSensor.put("name", "CEP System Monitoring Sensor");
                    monSensor.put("description",
                            "A virtual sensor that monitors the operationalstate of the CEP system");

                    JSONObject observesItem1 = new JSONObject();

                    observesItem1.put("type", "vital:OperationalState");
                    observesItem1.put("id", host + "/sensor/1/operationalState");

                    JSONObject observesItem2 = new JSONObject();

                    observesItem2.put("type", "vital:SysUptime");
                    observesItem2.put("id", host + "/sensor/1/sysUptime");

                    JSONObject observesItem3 = new JSONObject();

                    observesItem3.put("type", "vital:SysLoad");
                    observesItem3.put("id", host + "/sensor/1/sysLoad");

                    JSONObject observesItem4 = new JSONObject();

                    observesItem4.put("type", "vital:errors");
                    observesItem4.put("id", host + "/sensor/1/errors");

                    JSONArray observes = new JSONArray();

                    observes.put(observesItem1);
                    observes.put(observesItem2);
                    observes.put(observesItem3);
                    //observes.put(observesItem4);     

                    monSensor.put("ssn:observes", observes);
                    monSensor.put("status", "vital:Running");

                    sensorspool2.put(monSensor);

                }
            }
            return Response.status(Response.Status.OK).entity(sensorspool2.toString()).build();
        }
    } catch (JSONException ex) {
        return Response.status(Response.Status.BAD_REQUEST).build();
    } finally {
        db = null;
        if (mongo != null) {
            mongo.close();
            mongo = null;
        }
    }

    return Response.status(Response.Status.BAD_REQUEST).build();

}

From source file:eu.vital.vitalcep.restApp.vuaippi.Sensor.java

/**
* Gets sensors status ./*  w  ww. ja va 2 s . co  m*/
*
* @param info
* @param req
* @return the metadata of the sensors 
* @throws java.io.FileNotFoundException 
*/
@POST
@Path("status")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response getSensorStatus(String info, @Context HttpServletRequest req)
        throws FileNotFoundException, IOException {

    //        StringBuilder ck = new StringBuilder();
    //        Security slogin = new Security();
    //                  
    //        Boolean token = slogin.login(req.getHeader("name")
    //                ,req.getHeader("password"),false,ck);
    //        if (!token){
    //              return Response.status(Response.Status.UNAUTHORIZED).build();
    //        }

    MongoClient mongo = new MongoClient(new MongoClientURI(mongoURL));

    MongoDatabase db = mongo.getDatabase(mongoDB);

    final JSONArray sensorspool = new JSONArray();

    try {
        JSONObject filter = new JSONObject(info);

        if (filter.has("id")) {

            JSONArray ids = filter.getJSONArray("id");
            for (int i = 0; i < ids.length(); i++) {

                String id = ids.getString(i);
                BasicDBObject query = new BasicDBObject("ssn:featureOfInterest", id);
                BasicDBObject fields = new BasicDBObject().append("_id", false);
                FindIterable<Document> coll = db.getCollection("filtersobservations").find(query)
                        .projection(fields);

                coll.forEach(new Block<Document>() {
                    @Override
                    public void apply(final Document document) {
                        String aux = document.toJson();
                        JSONObject sensoraux = new JSONObject(aux);
                        sensorspool.put(sensoraux);
                    }
                });

                BasicDBObject fields3 = new BasicDBObject().append("_id", false).append("query", false)
                        .append("data", false).append("complexEvent", false).append("source", false)
                        .append("event", false).append("dolceSpecification", false);

                FindIterable<Document> coll3 = db.getCollection("staticdatafiltersobservations").find(query)
                        .projection(fields3);
                //DBCollection coll3 = db.getCollection("staticdatafiltersobservations");

                coll3.forEach(new Block<Document>() {
                    @Override
                    public void apply(final Document document) {
                        String aux = document.toJson();
                        JSONObject sensoraux = new JSONObject(aux);
                        sensorspool.put(sensoraux);
                    }
                });

                BasicDBObject fields4 = new BasicDBObject().append("_id", false).append("query", false)
                        .append("data", false).append("complexEvent", false).append("source", false)
                        .append("event", false).append("dolceSpecification", false);

                FindIterable<Document> coll4 = db.getCollection("staticqueryfiltersobservations").find(query)
                        .projection(fields4);

                //DBCollection coll4 = db.getCollection("staticqueryfiltersobservations");

                coll4.forEach(new Block<Document>() {
                    @Override
                    public void apply(final Document document) {
                        String aux = document.toJson();
                        JSONObject sensoraux = new JSONObject(aux);
                        sensorspool.put(sensoraux);
                    }
                });

                BasicDBObject fieldscep = new BasicDBObject().append("_id", false).append("source", false)
                        .append("query", false).append("complexEvent", false).append("data", false)
                        .append("event", false).append("dolceSpecification", false);
                //DBCollection coll2 = db.getCollection("cepsobservations");
                // create an empty query
                FindIterable<Document> coll2 = db.getCollection("cepsobservations").find(query)
                        .projection(fieldscep);

                coll2.forEach(new Block<Document>() {
                    @Override
                    public void apply(final Document document) {
                        String aux = document.toJson();
                        JSONObject sensoraux = new JSONObject(aux);
                        sensorspool.put(sensoraux);
                    }
                });

                DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");

                if (id.equals(host + "/sensor/1")) {
                    JSONObject opState = new JSONObject();

                    opState.put("@context", "http://vital-iot.eu/contexts/measurement.jsonld");

                    opState.put("id", host + "/sensor/1/observation/1");

                    opState.put("type", "ssn:Observation");

                    opState.put("ssn:featureOfInterest", host + "/sensor/1");

                    JSONObject property = new JSONObject();
                    property.put("type", "vital:OperationalState");
                    opState.put("ssn:observationProperty", property);

                    JSONObject resultTime = new JSONObject();

                    Date date = new Date();

                    resultTime.put("time:inXSDDateTime", dateFormat.format(date));//check format

                    opState.put("ssn:observationResultTime", resultTime);
                    //"time:inXSDDateTime": "2015-10-14T11:59:11+02:00"

                    JSONObject hasValue = new JSONObject();
                    hasValue.put("type", "ssn:ObservationValue");
                    hasValue.put("value", "vital:Running");
                    JSONObject observationResult = new JSONObject();
                    observationResult.put("ssn:hasValue", hasValue);
                    observationResult.put("type", "ssn:SensorOutput");
                    opState.put("ssn:observationResult", observationResult);
                    sensorspool.put(opState);

                    JSONObject sysUpTime = new JSONObject();

                    sysUpTime.put("@context", "http://vital-iot.eu/contexts/measurement.jsonld");
                    sysUpTime.put("id", host + "/sensor/1/observation/2");
                    sysUpTime.put("type", "ssn:Observation");

                    JSONObject property2 = new JSONObject();
                    property2.put("type", "vital:SysUptime");
                    sysUpTime.put("ssn:observationProperty", property2);

                    JSONObject resultTime2 = new JSONObject();
                    Date date2 = new Date();

                    resultTime2.put("time:inXSDDateTime", dateFormat.format(date2));//check format
                    sysUpTime.put("ssn:observationResultTime", resultTime2);
                    sysUpTime.put("ssn:featureOfInterest", host + "/sensor/1");

                    JSONObject hasValue2 = new JSONObject();
                    hasValue2.put("type", "ssn:ObservationValue");
                    RuntimeMXBean rb = ManagementFactory.getRuntimeMXBean();
                    long uptime = rb.getUptime();
                    hasValue2.put("value", "" + uptime);
                    hasValue2.put("qudt:unit", "qudt:Milliseconds");
                    JSONObject observationResult2 = new JSONObject();
                    observationResult2.put("ssn:hasValue", hasValue2);
                    observationResult2.put("type", "ssn:SensorOutput");
                    sysUpTime.put("ssn:observationResult", observationResult2);
                    sensorspool.put(sysUpTime);

                    JSONObject sysLoad = new JSONObject();

                    sysLoad.put("@context", "http://vital-iot.eu/contexts/measurement.jsonld");
                    sysLoad.put("id", host + "/sensor/1/observation/3");
                    sysLoad.put("type", "ssn:Observation");

                    JSONObject property3 = new JSONObject();
                    property3.put("type", "vital:SysLoad");
                    sysLoad.put("ssn:observationProperty", property3);

                    JSONObject resultTime3 = new JSONObject();

                    Date date3 = new Date();

                    resultTime3.put("time:inXSDDateTime", dateFormat.format(date3));//check format
                    sysLoad.put("ssn:observationResultTime", resultTime3);
                    sysLoad.put("ssn:featureOfInterest", host + "/sensor/1");

                    JSONObject hasValue3 = new JSONObject();
                    hasValue3.put("type", "ssn:ObservationValue");
                    hasValue3.put("value", ThreadLocalRandom.current().nextInt(1, 5 + 1) + "%");
                    hasValue3.put("qudt:unit", "qudt:Percent");
                    JSONObject observationResult3 = new JSONObject();
                    observationResult3.put("ssn:hasValue", hasValue3);
                    observationResult3.put("type", "ssn:SensorOutput");
                    sysLoad.put("ssn:observationResult", observationResult3);
                    sensorspool.put(sysLoad);
                }
            }
        } else if (filter.has("type")) {

            JSONArray types = filter.getJSONArray("type");
            for (int i = 0; i < types.length(); i++) {

                String type = types.getString(i);

                BasicDBObject query = new BasicDBObject();

                switch (type) {
                case CEPICOSENSOR_TYPE:

                    //DBCollection coll2 = db.getCollection("cepsobservations");
                    // create an empty query
                    BasicDBObject fieldscep = new BasicDBObject().append("_id", false).append("source", false)
                            .append("query", false).append("complexEvent", false).append("data", false)
                            .append("event", false).append("dolceSpecification", false);

                    FindIterable<Document> coll2 = db.getCollection("cepsobservations").find(query)
                            .projection(fieldscep);

                    coll2.forEach(new Block<Document>() {
                        @Override
                        public void apply(final Document document) {
                            String aux = document.toJson();
                            JSONObject sensoraux = new JSONObject(aux);
                            sensorspool.put(sensoraux);
                        }
                    });

                    break;
                case MONITORINGSENSOR_TYPE:

                    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");

                    JSONObject opState = new JSONObject();

                    opState.put("@context", "http://vital-iot.eu/contexts/measurement.jsonld");

                    opState.put("id", host + "/sensor/1/observation/1");

                    opState.put("type", "ssn:Observation");

                    opState.put("ssn:featureOfInterest", host + "/sensor/1");

                    JSONObject property = new JSONObject();
                    property.put("type", "vital:OperationalState");
                    opState.put("ssn:observationProperty", property);

                    JSONObject resultTime = new JSONObject();

                    Date date = new Date();

                    resultTime.put("time:inXSDDateTime", dateFormat.format(date));//check format

                    opState.put("ssn:observationResultTime", resultTime);
                    //"time:inXSDDateTime": "2015-10-14T11:59:11+02:00"

                    JSONObject hasValue = new JSONObject();
                    hasValue.put("type", "ssn:ObservationValue");
                    hasValue.put("value", "vital:Running");
                    JSONObject observationResult = new JSONObject();
                    observationResult.put("ssn:hasValue", hasValue);
                    observationResult.put("type", "ssn:SensorOutput");
                    opState.put("ssn:observationResult", observationResult);
                    sensorspool.put(opState);

                    JSONObject sysUpTime = new JSONObject();

                    sysUpTime.put("@context", "http://vital-iot.eu/contexts/measurement.jsonld");
                    sysUpTime.put("id", host + "/sensor/1/observation/2");
                    sysUpTime.put("type", "ssn:Observation");

                    JSONObject property2 = new JSONObject();
                    property2.put("type", "vital:SysUptime");
                    sysUpTime.put("ssn:observationProperty", property2);

                    JSONObject resultTime2 = new JSONObject();
                    Date date2 = new Date();

                    resultTime2.put("time:inXSDDateTime", dateFormat.format(date2));//check format
                    sysUpTime.put("ssn:observationResultTime", resultTime2);
                    sysUpTime.put("ssn:featureOfInterest", host + "/sensor/1");

                    JSONObject hasValue2 = new JSONObject();
                    hasValue2.put("type", "ssn:ObservationValue");
                    RuntimeMXBean rb = ManagementFactory.getRuntimeMXBean();
                    long uptime = rb.getUptime();
                    hasValue2.put("value", "" + uptime);
                    hasValue2.put("qudt:unit", "qudt:Milliseconds");
                    JSONObject observationResult2 = new JSONObject();
                    observationResult2.put("ssn:hasValue", hasValue2);
                    observationResult2.put("type", "ssn:SensorOutput");
                    sysUpTime.put("ssn:observationResult", observationResult2);
                    sensorspool.put(sysUpTime);

                    JSONObject sysLoad = new JSONObject();

                    sysLoad.put("@context", "http://vital-iot.eu/contexts/measurement.jsonld");
                    sysLoad.put("id", host + "/sensor/1/observation/3");
                    sysLoad.put("type", "ssn:Observation");

                    JSONObject property3 = new JSONObject();
                    property3.put("type", "vital:SysLoad");
                    sysLoad.put("ssn:observationProperty", property3);

                    JSONObject resultTime3 = new JSONObject();

                    Date date3 = new Date();

                    resultTime3.put("time:inXSDDateTime", dateFormat.format(date3));//check format
                    sysLoad.put("ssn:observationResultTime", resultTime3);
                    sysLoad.put("ssn:featureOfInterest", host + "/sensor/1");

                    JSONObject hasValue3 = new JSONObject();
                    hasValue3.put("type", "ssn:ObservationValue");
                    hasValue3.put("value", ThreadLocalRandom.current().nextInt(1, 5 + 1) + "%");
                    hasValue3.put("qudt:unit", "qudt:Percent");
                    JSONObject observationResult3 = new JSONObject();
                    observationResult3.put("ssn:hasValue", hasValue3);
                    observationResult3.put("type", "ssn:SensorOutput");
                    sysLoad.put("ssn:observationResult", observationResult3);
                    sensorspool.put(sysLoad);
                    break;
                case CEPFILTERSTATICDATASENSOR_TYPE:
                    //DBCollection coll3 = db.getCollection("staticdatafiltersobservations");

                    BasicDBObject fields3 = new BasicDBObject().append("_id", false).append("query", false)
                            .append("data", false).append("complexEvent", false).append("source", false)
                            .append("event", false).append("dolceSpecification", false);
                    FindIterable<Document> coll3 = db.getCollection("staticdatafiltersobservations").find(query)
                            .projection(fields3);

                    coll3.forEach(new Block<Document>() {
                        @Override
                        public void apply(final Document document) {
                            String aux = document.toJson();
                            JSONObject sensoraux = new JSONObject(aux);
                            sensorspool.put(sensoraux);
                        }
                    });

                    break;
                case CEPFILTERSTATICQUERYSENSOR_TYPE:
                    //DBCollection coll4 = db.getCollection("staticqueryfiltersobservations");

                    BasicDBObject fields4 = new BasicDBObject().append("_id", false).append("query", false)
                            .append("data", false).append("complexEvent", false).append("source", false)
                            .append("event", false).append("dolceSpecification", false);

                    FindIterable<Document> coll4 = db.getCollection("staticqueryfiltersobservations")
                            .find(query).projection(fields4);

                    coll4.forEach(new Block<Document>() {
                        @Override
                        public void apply(final Document document) {
                            String aux = document.toJson();
                            JSONObject sensoraux = new JSONObject(aux);
                            sensorspool.put(sensoraux);
                        }
                    });

                    break;
                case CEPFILTERSENSOR_TYPE:
                    //DBCollection coll = db.getCollection("filtersobservations");

                    BasicDBObject fields = new BasicDBObject().append("_id", false).append("query", false)
                            .append("data", false).append("complexEvent", false).append("source", false)
                            .append("event", false).append("dolceSpecification", false);
                    FindIterable<Document> coll = db.getCollection("filtersobservations").find(query)
                            .projection(fields);

                    coll.forEach(new Block<Document>() {
                        @Override
                        public void apply(final Document document) {
                            String aux = document.toJson();
                            JSONObject sensoraux = new JSONObject(aux);
                            sensorspool.put(sensoraux);
                        }
                    });

                    break;
                default:
                    return Response.status(Response.Status.BAD_REQUEST).build();
                }
            }
        } else {

            //DBCollection coll = db.getCollection("filtersobservations");
            // create an empty query
            BasicDBObject query = new BasicDBObject();
            BasicDBObject fields = new BasicDBObject().append("_id", false);
            FindIterable<Document> coll = db.getCollection("filtersobservations").find(query)
                    .projection(fields);

            coll.forEach(new Block<Document>() {
                @Override
                public void apply(final Document document) {
                    JSONObject curr = new JSONObject();

                    curr.put("@context", "http://vital-iot.eu/contexts/measurement.jsonld");

                    curr.put("id", document.get("id"));

                    curr.put("type", "ssn:Observation");

                    curr.put("ssn:featureOfInterest", document.get("id"));

                    JSONObject property = new JSONObject();
                    property.put("type", "vital:ComplexEvent");
                    curr.put("ssn:observationProperty", property);

                    JSONObject resultTime = new JSONObject();

                    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
                    Date date = new Date();

                    resultTime.put("time:inXSDDateTime", dateFormat.format(date));//check format

                    curr.put("ssn:observationResultTime", resultTime);
                    //"time:inXSDDateTime": "2015-10-14T11:59:11+02:00"

                    JSONObject hasValue = new JSONObject();
                    hasValue.put("type", "ssn:ObservationValue");
                    hasValue.put("value", "vital:Running");
                    JSONObject observationResult = new JSONObject();
                    observationResult.put("ssn:hasValue", hasValue);
                    observationResult.put("type", "ssn:SensorOutput");
                    curr.put("ssn:observationResult", observationResult);

                    sensorspool.put(curr);
                }
            });

            BasicDBObject fields3 = new BasicDBObject().append("_id", false);
            FindIterable<Document> coll3 = db.getCollection("filtersobservations").find(query)
                    .projection(fields3);

            coll3.forEach(new Block<Document>() {
                @Override
                public void apply(final Document document) {
                    JSONObject curr = new JSONObject();

                    curr.put("@context", "http://vital-iot.eu/contexts/measurement.jsonld");

                    curr.put("id", document.get("id"));

                    curr.put("type", "ssn:Observation");

                    curr.put("ssn:featureOfInterest", document.get("ssn:featureOfInterest"));

                    JSONObject property = new JSONObject();
                    property.put("type", "vital:ComplexEvent");
                    curr.put("ssn:observationProperty", property);

                    JSONObject resultTime = new JSONObject();

                    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
                    Date date = new Date();

                    resultTime.put("time:inXSDDateTime", dateFormat.format(date));//check format

                    curr.put("ssn:observationResultTime", resultTime);
                    //"time:inXSDDateTime": "2015-10-14T11:59:11+02:00"

                    JSONObject hasValue = new JSONObject();
                    hasValue.put("type", "ssn:ObservationValue");
                    hasValue.put("value", "vital:Running");
                    JSONObject observationResult = new JSONObject();
                    observationResult.put("ssn:hasValue", hasValue);
                    observationResult.put("type", "ssn:SensorOutput");
                    curr.put("ssn:observationResult", observationResult);

                    sensorspool.put(curr);
                }
            });

            BasicDBObject fields4 = new BasicDBObject().append("_id", false).append("query", false)
                    .append("data", false).append("complexEvent", false).append("source", false)
                    .append("event", false).append("dolceSpecification", false);
            FindIterable<Document> coll4 = db.getCollection("staticqueryfiltersobservations").find(query)
                    .projection(fields4);

            coll4.forEach(new Block<Document>() {
                @Override
                public void apply(final Document document) {
                    JSONObject curr = new JSONObject();

                    curr.put("@context", "http://vital-iot.eu/contexts/measurement.jsonld");

                    curr.put("id", document.get("id"));

                    curr.put("type", "ssn:Observation");

                    curr.put("ssn:featureOfInterest", document.get("ssn:featureOfInterest"));

                    JSONObject property = new JSONObject();
                    property.put("type", "vital:ComplexEvent");
                    curr.put("ssn:observationProperty", property);

                    JSONObject resultTime = new JSONObject();

                    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
                    Date date = new Date();

                    resultTime.put("time:inXSDDateTime", dateFormat.format(date));//check format

                    curr.put("ssn:observationResultTime", resultTime);
                    //"time:inXSDDateTime": "2015-10-14T11:59:11+02:00"

                    JSONObject hasValue = new JSONObject();
                    hasValue.put("type", "ssn:ObservationValue");
                    hasValue.put("value", "vital:Running");
                    JSONObject observationResult = new JSONObject();
                    observationResult.put("ssn:hasValue", hasValue);
                    observationResult.put("type", "ssn:SensorOutput");
                    curr.put("ssn:observationResult", observationResult);

                    sensorspool.put(curr);
                }
            });

            BasicDBObject fieldscep = new BasicDBObject().append("_id", false);
            FindIterable<Document> coll2 = db.getCollection("cepsobservations").find(query)
                    .projection(fieldscep);

            coll2.forEach(new Block<Document>() {
                @Override
                public void apply(final Document document) {
                    if (document.containsKey("id")) {
                        JSONObject curr = new JSONObject();

                        curr.put("@context", "http://vital-iot.eu/contexts/measurement.jsonld");

                        curr.put("id", document.get("id"));

                        curr.put("type", "ssn:Observation");

                        curr.put("ssn:featureOfInterest", document.get("ssn:featureOfInterest"));//ver

                        JSONObject property = new JSONObject();
                        property.put("type", "vital:ComplexEvent");
                        curr.put("ssn:observationProperty", property);

                        JSONObject resultTime = new JSONObject();

                        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
                        Date date = new Date();

                        resultTime.put("time:inXSDDateTime", dateFormat.format(date));//check format

                        curr.put("ssn:observationResultTime", resultTime);
                        //"time:inXSDDateTime": "2015-10-14T11:59:11+02:00"

                        JSONObject hasValue = new JSONObject();
                        hasValue.put("type", "ssn:ObservationValue");
                        hasValue.put("value", "vital:Running");
                        JSONObject observationResult = new JSONObject();
                        observationResult.put("ssn:hasValue", hasValue);
                        observationResult.put("type", "ssn:SensorOutput");
                        curr.put("ssn:observationResult", observationResult);

                        sensorspool.put(curr);
                    }
                }
            });

            JSONObject opState = new JSONObject();

            opState.put("@context", "http://vital-iot.eu/contexts/measurement.jsonld");

            opState.put("id", host + "/sensor/1/observation/1");

            opState.put("type", "ssn:Observation");

            opState.put("ssn:featureOfInterest", host + "/sensor/1");

            JSONObject property = new JSONObject();
            property.put("type", "vital:OperationalState");
            opState.put("ssn:observationProperty", property);

            JSONObject resultTime = new JSONObject();

            DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
            Date date = new Date();

            resultTime.put("time:inXSDDateTime", dateFormat.format(date));//check format

            opState.put("ssn:observationResultTime", resultTime);
            //"time:inXSDDateTime": "2015-10-14T11:59:11+02:00"

            JSONObject hasValue = new JSONObject();
            hasValue.put("type", "ssn:ObservationValue");
            hasValue.put("value", "vital:Running");
            JSONObject observationResult = new JSONObject();
            observationResult.put("ssn:hasValue", hasValue);
            observationResult.put("type", "ssn:SensorOutput");
            opState.put("ssn:observationResult", observationResult);

            JSONObject sysUpTime = new JSONObject();

            sysUpTime.put("@context", "http://vital-iot.eu/contexts/measurement.jsonld");
            sysUpTime.put("id", host + "/sensor/1/observation/2");
            sysUpTime.put("type", "ssn:Observation");

            JSONObject property2 = new JSONObject();
            property2.put("type", "vital:SysUptime");
            sysUpTime.put("ssn:observationProperty", property2);

            JSONObject resultTime2 = new JSONObject();
            Date date2 = new Date();

            resultTime2.put("time:inXSDDateTime", dateFormat.format(date2));//check format
            sysUpTime.put("ssn:observationResultTime", resultTime2);
            sysUpTime.put("ssn:featureOfInterest", host + "/sensor/1");

            JSONObject hasValue2 = new JSONObject();
            hasValue2.put("type", "ssn:ObservationValue");
            RuntimeMXBean rb = ManagementFactory.getRuntimeMXBean();
            long uptime = rb.getUptime();
            hasValue2.put("value", "" + uptime);
            hasValue2.put("qudt:unit", "qudt:Milliseconds");
            JSONObject observationResult2 = new JSONObject();
            observationResult2.put("ssn:hasValue", hasValue2);
            observationResult2.put("type", "ssn:SensorOutput");
            sysUpTime.put("ssn:observationResult", observationResult2);

            JSONObject sysLoad = new JSONObject();

            sysLoad.put("@context", "http://vital-iot.eu/contexts/measurement.jsonld");
            sysLoad.put("id", host + "/sensor/1/observation/3");
            sysLoad.put("type", "ssn:Observation");

            JSONObject property3 = new JSONObject();
            property3.put("type", "vital:SysLoad");
            sysLoad.put("ssn:observationProperty", property3);

            JSONObject resultTime3 = new JSONObject();

            Date date3 = new Date();

            resultTime3.put("time:inXSDDateTime", dateFormat.format(date3));//check format
            sysLoad.put("ssn:observationResultTime", resultTime3);
            sysLoad.put("ssn:featureOfInterest", host + "/sensor/1");

            JSONObject hasValue3 = new JSONObject();
            hasValue3.put("type", "ssn:ObservationValue");
            hasValue3.put("value", ThreadLocalRandom.current().nextInt(1, 5 + 1) + "%");
            hasValue3.put("qudt:unit", "qudt:Percent");
            JSONObject observationResult3 = new JSONObject();
            observationResult3.put("ssn:hasValue", hasValue3);
            observationResult3.put("type", "ssn:SensorOutput");
            sysLoad.put("ssn:observationResult", observationResult3);

            sensorspool.put(opState);
            sensorspool.put(sysUpTime);
            sensorspool.put(sysLoad);
        }
    } catch (JSONException ex) {
        return Response.status(Response.Status.BAD_REQUEST).build();
    }

    return Response.status(Response.Status.OK).entity(sensorspool.toString()).build();

}

From source file:eu.vital.vitalcep.restApp.vuaippi.Sensor.java

private JSONArray getObservations(BasicDBList sensor, String property, String from, String to) {

    JSONArray aData = new JSONArray();

    BasicDBObject query = new BasicDBObject();

    final JSONArray oObservations = new JSONArray();
    MongoClient mongo = new MongoClient(new MongoClientURI(mongoURL));
    MongoDatabase db = mongo.getDatabase(mongoDB);

    if (!(to == null) && !(from == null)) {
        try {//from w w w . java2 s  .  com
            String queryS = createQuery(sensor, property, from, to);
            Object queryO = com.mongodb.util.JSON.parse(queryS);
            query = (BasicDBObject) queryO;

            Block<Document> block = new Block<Document>() {
                @Override
                public void apply(final Document document) {
                    JSONObject oCollector = new JSONObject(document.toJson());
                    oObservations.put(oCollector);

                }
            };

            db.getCollection("cepicosobservations").find(query).projection(fields(excludeId())).forEach(block);
            db.getCollection("continuosfiltersobservations").find(query).projection(fields(excludeId()))
                    .forEach(block);
            db.getCollection("alertsobservations").find(query).projection(fields(excludeId())).forEach(block);
            db.getCollection("staticdatafiltersobservations").find(query).projection(fields(excludeId()))
                    .forEach(block);
            db.getCollection("staticqueryfiltersobservations").find(query).projection(fields(excludeId()))
                    .forEach(block);

        } catch (Exception e) {
            String a = "a";
        } finally {
            db = null;
            if (mongo != null) {
                mongo.close();
                mongo = null;
            }
        }

    } else {
        try {
            Object queryO = com.mongodb.util.JSON.parse(createQuery(sensor, property, null, null));
            query = (BasicDBObject) queryO;

            Block<Document> block = new Block<Document>() {
                @Override
                public void apply(final Document document) {
                    JSONObject oCollector = new JSONObject(document.toJson());
                    oObservations.put(oCollector);

                }
            };

            BasicDBObject sortObject = new BasicDBObject().append("_id", -1);

            db.getCollection("cepicosobservations").find(query).projection(fields(excludeId())).sort(sortObject)
                    .limit(1).forEach(block);
            db.getCollection("continuosfiltersobservations").find(query).projection(fields(excludeId()))
                    .sort(sortObject).limit(1).forEach(block);
            db.getCollection("alertsobservations").find(query).projection(fields(excludeId())).sort(sortObject)
                    .limit(1).forEach(block);
            db.getCollection("staticdatafiltersobservations").find(query).projection(fields(excludeId()))
                    .sort(sortObject).limit(1).forEach(block);
            db.getCollection("staticqueryfiltersobservations").find(query).projection(fields(excludeId()))
                    .sort(sortObject).limit(1).forEach(block);

        } catch (Exception e) {
            String a = "a";
        } finally {
            db = null;
            if (mongo != null) {
                mongo.close();
                mongo = null;
            }
        }

    }

    return oObservations;

}

From source file:eu.vital.vitalcep.restApp.vuaippi.System.java

@POST
@Path("metadata")
@Consumes(MediaType.APPLICATION_JSON)/*from  w w  w .j a  v  a  2s. c o  m*/
@Produces(MediaType.APPLICATION_JSON)
public Response getSystemMetadata(String info, @Context HttpServletRequest req)
        throws FileNotFoundException, IOException {

    //        StringBuilder ck = new StringBuilder();
    //        Security slogin = new Security();
    //                  
    //        Boolean token = slogin.login(req.getHeader("name")
    //                ,req.getHeader("password"),false,ck);
    //        if (!token){
    //              return Response.status(Response.Status.UNAUTHORIZED).build();
    //        }      

    MongoClient mongo = new MongoClient(new MongoClientURI(mongoURL));
    MongoDatabase db = mongo.getDatabase(mongoDB);

    BasicDBObject query = new BasicDBObject();
    BasicDBObject fields = new BasicDBObject().append("_id", false);
    fields.append("dolceSpecification", false);

    FindIterable<Document> collStaticData = db.getCollection("staticdatafilters").find(query)
            .projection(fields);

    final JSONArray sensors = new JSONArray();

    collStaticData.forEach(new Block<Document>() {
        @Override
        public void apply(final Document document) {
            sensors.put(document.get("id"));
        }
    });

    FindIterable<Document> collStaticQuery = db.getCollection("staticqueryfilters").find(query)
            .projection(fields);

    collStaticQuery.forEach(new Block<Document>() {
        @Override
        public void apply(final Document document) {
            sensors.put(document.get("id"));
        }
    });

    FindIterable<Document> collContinuous = db.getCollection("continuousfilters").find(query)
            .projection(fields);

    collContinuous.forEach(new Block<Document>() {
        @Override
        public void apply(final Document document) {
            sensors.put(document.get("id"));
        }
    });

    BasicDBObject querycep = new BasicDBObject();
    BasicDBObject fieldscep = new BasicDBObject().append("_id", false).append("dolceSpecification", false);

    FindIterable<Document> collcepicos = db.getCollection("cepicos").find(querycep).projection(fieldscep);
    // create an empty query

    collcepicos.forEach(new Block<Document>() {
        @Override
        public void apply(final Document document) {
            sensors.put(document.get("id"));
        }
    });

    BasicDBObject queryalert = new BasicDBObject();
    BasicDBObject fieldsalert = new BasicDBObject().append("_id", false).append("dolceSpecification", false);

    FindIterable<Document> collalerts = db.getCollection("alerts").find(queryalert).projection(fieldsalert);
    // create an empty query

    collalerts.forEach(new Block<Document>() {
        @Override
        public void apply(final Document document) {
            sensors.put(document.get("id"));
        }
    });

    sensors.put(host + "/sensor/1");
    JSONObject metadata = new JSONObject();

    JSONArray services = new JSONArray();
    services.put(host + "/service/monitoring");
    services.put(host + "/service/cepicosmanagement");
    services.put(host + "/service/filtering");
    services.put(host + "/service/alertingmanagement");
    services.put(host + "/service/observation");

    metadata.put("@context", "http://vital-iot.eu/contexts/system.jsonld");
    metadata.put("id", host);
    metadata.put("type", "vital:VitalSystem");
    metadata.put("name", "CEP IoT system");
    metadata.put("description", "This is a VITAL compliant IoT system.");
    metadata.put("operator", "elisa.herrmann@atos.net");
    metadata.put("status", "vital:Running");
    metadata.put("services", services);
    //        metadata.put("sensors", sensors);
    metadata.append("sensors", sensors);

    db = null;
    if (mongo != null) {
        mongo.close();
        mongo = null;
    }
    return Response.status(Response.Status.OK).entity(metadata.toString()).build();
}

From source file:examples.tour.QuickTour.java

License:Apache License

/**
 * Run this main method to see the output of this quick example.
 *
 * @param args takes an optional single argument for the connection string
 *//*  w w  w.  j  a  v a 2  s  . c  o  m*/
public static void main(final String[] args) {
    MongoClient mongoClient;

    if (args.length == 0) {
        // connect to the local database server
        mongoClient = new MongoClient();
    } else {
        mongoClient = new MongoClient(new MongoClientURI(args[0]));
    }

    // get handle to "mydb" database
    MongoDatabase database = mongoClient.getDatabase("mydb");

    // get a handle to the "test" collection
    MongoCollection<Document> collection = database.getCollection("test");

    // drop all the data in it
    collection.drop();

    // make a document and insert it
    Document doc = new Document("name", "MongoDB").append("type", "database").append("count", 1).append("info",
            new Document("x", 203).append("y", 102));

    collection.insertOne(doc);

    // get it (since it's the only one in there since we dropped the rest earlier on)
    Document myDoc = collection.find().first();
    System.out.println(myDoc.toJson());

    // now, lets add lots of little documents to the collection so we can explore queries and cursors
    List<Document> documents = new ArrayList<Document>();
    for (int i = 0; i < 100; i++) {
        documents.add(new Document("i", i));
    }
    collection.insertMany(documents);
    System.out.println(
            "total # of documents after inserting 100 small ones (should be 101) " + collection.count());

    // find first
    myDoc = collection.find().first();
    System.out.println(myDoc.toJson());

    // lets get all the documents in the collection and print them out
    MongoCursor<Document> cursor = collection.find().iterator();
    try {
        while (cursor.hasNext()) {
            System.out.println(cursor.next().toJson());
        }
    } finally {
        cursor.close();
    }

    for (Document cur : collection.find()) {
        System.out.println(cur.toJson());
    }

    // now use a query to get 1 document out
    myDoc = collection.find(eq("i", 71)).first();
    System.out.println(myDoc.toJson());

    // now use a range query to get a larger subset
    cursor = collection.find(gt("i", 50)).iterator();

    try {
        while (cursor.hasNext()) {
            System.out.println(cursor.next().toJson());
        }
    } finally {
        cursor.close();
    }

    // range query with multiple constraints
    cursor = collection.find(and(gt("i", 50), lte("i", 100))).iterator();

    try {
        while (cursor.hasNext()) {
            System.out.println(cursor.next().toJson());
        }
    } finally {
        cursor.close();
    }

    // Query Filters
    myDoc = collection.find(eq("i", 71)).first();
    System.out.println(myDoc.toJson());

    // now use a range query to get a larger subset
    Block<Document> printBlock = new Block<Document>() {

        public void apply(final Document document) {
            System.out.println(document.toJson());
        }
    };
    collection.find(gt("i", 50)).forEach(printBlock);

    // filter where; 50 < i <= 100
    collection.find(and(gt("i", 50), lte("i", 100))).forEach(printBlock);

    // Sorting
    myDoc = collection.find(exists("i")).sort(descending("i")).first();
    System.out.println(myDoc.toJson());

    // Projection
    myDoc = collection.find().projection(excludeId()).first();
    System.out.println(myDoc.toJson());

    // Aggregation
    collection
            .aggregate(
                    asList(match(gt("i", 0)), project(Document.parse("{ITimes10: {$multiply: ['$i', 10]}}"))))
            .forEach(printBlock);

    myDoc = collection.aggregate(singletonList(group(null, sum("total", "$i")))).first();
    System.out.println(myDoc.toJson());

    // Update One
    collection.updateOne(eq("i", 10), set("i", 110));

    // Update Many
    UpdateResult updateResult = collection.updateMany(lt("i", 100), inc("i", 100));
    System.out.println(updateResult.getModifiedCount());

    // Delete One
    collection.deleteOne(eq("i", 110));

    // Delete Many
    DeleteResult deleteResult = collection.deleteMany(gte("i", 100));
    System.out.println(deleteResult.getDeletedCount());

    collection.drop();

    // ordered bulk writes
    List<WriteModel<Document>> writes = new ArrayList<WriteModel<Document>>();
    writes.add(new InsertOneModel<Document>(new Document("_id", 4)));
    writes.add(new InsertOneModel<Document>(new Document("_id", 5)));
    writes.add(new InsertOneModel<Document>(new Document("_id", 6)));
    writes.add(
            new UpdateOneModel<Document>(new Document("_id", 1), new Document("$set", new Document("x", 2))));
    writes.add(new DeleteOneModel<Document>(new Document("_id", 2)));
    writes.add(new ReplaceOneModel<Document>(new Document("_id", 3), new Document("_id", 3).append("x", 4)));

    collection.bulkWrite(writes);

    collection.drop();

    collection.bulkWrite(writes, new BulkWriteOptions().ordered(false));
    //collection.find().forEach(printBlock);

    // Clean up
    database.drop();

    // release resources
    mongoClient.close();
}

From source file:ezbake.example.ezmongo.EzMongoSampleClient.java

License:Apache License

public static synchronized MongoClientURI getMongoClientURI() {
    if (mongoClientURI == null) {
        String mongoURIProperty = System.getProperty(MONGODB_URI_SYSTEM_PROPERTY_NAME);
        String mongoURIString = mongoURIProperty == null || mongoURIProperty.isEmpty() ? DEFAULT_URI
                : mongoURIProperty;//from  w w w  . j a v a 2s.co m
        mongoClientURI = new MongoClientURI(mongoURIString);
    }
    return mongoClientURI;
}

From source file:fi.vm.sade.osoitepalvelu.kooste.config.MongoConfig.java

License:EUPL

@Bean
@Override//w w  w.j a  v a2s. c om
public SimpleMongoDbFactory mongoDbFactory() throws MongoException, UnknownHostException {
    return new SimpleMongoDbFactory(new MongoURI(new MongoClientURI(mongoUri)));
}