package cloud_project; import javax.ws.rs.DefaultValue; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.client.Client; import javax.ws.rs.client.ClientBuilder; import javax.ws.rs.client.WebTarget; import javax.ws.rs.core.MediaType; import org.json.JSONObject; /* import org.siddhi.api.exception.SiddhiPraserException; import org.siddhi.core.SiddhiManager; import org.siddhi.core.exception.SiddhiException; import org.siddhi.core.node.InputHandler; */ import org.wso2.siddhi.core.SiddhiManager; import org.wso2.siddhi.core.event.Event; import org.wso2.siddhi.core.stream.input.InputHandler; import org.wso2.siddhi.core.stream.output.StreamCallback; import org.wso2.siddhi.core.util.EventPrinter; @Path("server") public class DataServer { @GET @Produces(MediaType.TEXT_HTML) public String getData( @DefaultValue("") @QueryParam("sensors") String in ) throws InterruptedException { WebTarget target; Client c; String responseMsg; JSONObject obj; // sensor's id. String sensor1_id = "ci4zftqww0002032zeskt2yuc"; // IISc sensor. String sensor2_id = "ci4yfbbdb000d03zzoq8kjdl0"; // Urban Launchpad, San Francisco String sensor3_id = "ci4usvryz000202s7llxjafaf"; // mapsense, San Francisco String sensor4_id = "ci4ooqbyw0001021o7p4qiedw"; // Pineapple, Boston String sensor5_id = "ci4ue1845000102w7ni64j7pl"; // monalisa, Boston String sensor6_id = "ci4lr75v6000a02ypa256zigk"; // LEClife, Geneva String sensor7_id = "ci4oethyi000302ymejc2wc2j"; // swissnexbrazil, Rio de Janeiro String sensor8_id = "ci4vk908n000h02s7pqy6aud3"; // penguin, Shanghai String sensor9_id = "ci4vejnju000b02s70yzzonp9"; // NorthStarOne, Singapore String sensor10_id = "ci4w8gd6f000102tcnp415mz5"; // HPSG730864, Singapore String data_base_url = "http://sensor-api.localdata.com/api/v1/sources/"; // url for latest entry. String[] data_url = new String[10]; data_url[0] = data_base_url+sensor1_id+"/entries?count=1&sort=desc"; data_url[1] = data_base_url+sensor2_id+"/entries?count=1&sort=desc"; data_url[2] = data_base_url+sensor3_id+"/entries?count=1&sort=desc"; data_url[3] = data_base_url+sensor4_id+"/entries?count=1&sort=desc"; data_url[4] = data_base_url+sensor5_id+"/entries?count=1&sort=desc"; data_url[5] = data_base_url+sensor6_id+"/entries?count=1&sort=desc"; data_url[6] = data_base_url+sensor7_id+"/entries?count=1&sort=desc"; data_url[7] = data_base_url+sensor8_id+"/entries?count=1&sort=desc"; data_url[8] = data_base_url+sensor9_id+"/entries?count=1&sort=desc"; data_url[9] = data_base_url+sensor10_id+"/entries?count=1&sort=desc"; // siddhi manager SiddhiManager siddhiManager = new SiddhiManager(); String ip_stream = "IPEventStream"; String ip_stream1 = "IPEventStream1"; siddhiManager.defineStream("define stream "+ip_stream+" ( sound long, light long, airquality_raw long, airquality string, uv double, dust double, humidity double )"); InputHandler inputHandler = siddhiManager.getInputHandler("IPEventStream"); siddhiManager.defineStream("define stream "+ip_stream1+" ( sound long, light long, airquality_raw long, airquality string, uv double, dust double, humidity double )"); InputHandler inputHandler1 = siddhiManager.getInputHandler("IPEventStream1"); // siddhi query //siddhiManager.addQuery("from IPEventStream [sound >= 1000 and light >= 200] insert into OutStream1 ;"); siddhiManager.addQuery("from IPEventStream[sound >= 1000]#window.length(2000) insert into OutStream1 "); //siddhiManager.addQuery("from IPEventStream[sound >= 1000]#window.length(2000) join IPEventStream1[light >= 200]#window.length(2000) insert into JoinStream"); //siddhiManager.addQuery("from a1 = IPEventStream[dust >= 100.00]+, b1 = IPEventStream1[light >= 200] ?, b2 = IPEventStream1[airquality_raw >= 20] insert into JoinStream"); // callback at OutStream1 siddhiManager.addCallback("OutStream1", new StreamCallback() { @Override public void receive(Event[] arg0) { EventPrinter.print(arg0); } }); // callback at OutStream2 /* siddhiManager.addCallback("OutStream2", new StreamCallback() { @Override public void receive(Event[] arg0) { EventPrinter.print(arg0); } }); */ // callback at JoinStream siddhiManager.addCallback("JoinStream", new StreamCallback() { @Override public void receive(Event[] arg0) { EventPrinter.print(arg0); } }); long start_time=0, end_time=0, final_time=0; int n = Integer.parseInt(in); // while(i!=0) // { for(int i=0;i<10;i++) { for(int j=0;j<n;j++) { start_time = System.currentTimeMillis(); c = ClientBuilder.newClient(); target = c.target(ServerLauncher.restBaseUri); responseMsg = target.path("service").queryParam("url",data_url[j]).request().get(String.class); obj = new JSONObject(responseMsg); IIScSensorData data = new IIScSensorData(obj); inputHandler.send(new Object[]{data.getSound(), data.getLight(), data.getAirquality_raw(), data.getAirquality(), data.getUv(), data.getDust(), data.getHumidity()}); inputHandler1.send(new Object[]{data.getSound(), data.getLight(), data.getAirquality_raw(), data.getAirquality(), data.getUv(), data.getDust(), data.getHumidity()}); end_time=System.currentTimeMillis(); } final_time += (end_time - start_time); Thread.sleep(10000); // 10000 } // i--; // Thread.sleep(10); // } final_time /= 10; String s = String.valueOf(final_time); System.out.println(s); return s; //return "<html><body><h2>Response</h2></br>"+responseMsg.toString()+"</body></html>"; } }