/* Copyright (c) 2011-2014, OpenIoT
*
* This file is part of OpenIoT.
*
* OpenIoT is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, version 3 of the License.
*
* OpenIoT 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 Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with OpenIoT. If not, see <http://www.gnu.org/licenses/>.
*
* Contact: OpenIoT mailto: info@openiot.eu
*/
package org.openiot.integration;
import java.io.IOException;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.StatusLine;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
/**
*
* @author Aleksandar
*/
public class VirtualSensor {
String gsnAddress;
List<String> sensorParameters;
List<String> sensorTypes;
List<String> lsmProperty;
List<String> lsmUnit;
String virtualSensorID;
int virtualSensorPort;
double latitude;
double longitude;
public VirtualSensor (String id, int port, double lat, double lng, List<String> param, List<String> paramTypes, List<String>lsmProp, List<String> lsmUnits, String gsn){
this.gsnAddress = gsn;
this.virtualSensorID = id;
this.virtualSensorPort = port;
this.latitude = lat;
this.longitude = lng;
this.sensorParameters = param;
this.sensorTypes = paramTypes;
this.lsmProperty = lsmProp;
this.lsmUnit = lsmUnits;
}
public void createAndRegister () throws IOException, InterruptedException {
HttpClient client = HttpClientBuilder.create().build();
String name = "FER"+virtualSensorID;
WriteXMLFile xmlFile = new WriteXMLFile(name, virtualSensorPort, sensorParameters, sensorTypes);
String virtualSensor = xmlFile.createXML();
String url = "http://"+gsnAddress+"/vs/vsensor/" + name + "/create";
HttpPost request = new HttpPost(url);
StringEntity input = new StringEntity(virtualSensor);
input.setContentType("text/xml");
request.setEntity(input);
HttpResponse response = client.execute(request);
StatusLine statusLine = response.getStatusLine();
boolean result = statusLine.getStatusCode() == 200;
EntityUtils.toString(response.getEntity());
response.getEntity().getContent().close();
WriteMetadataFile metaFile = new WriteMetadataFile(name, virtualSensorID, latitude, longitude, sensorParameters, lsmProperty, lsmUnit);
String sensorInstance = metaFile.createMetadata();
url = "http://"+gsnAddress+"/vs/vsensor/" + name + "/register";
request = new HttpPost(url);
input = new StringEntity(sensorInstance);
input.setContentType("text/xml");
request.setEntity(input);
response = client.execute(request);
statusLine = response.getStatusLine();
result = statusLine.getStatusCode() == 200;
EntityUtils.toString(response.getEntity());
response.getEntity().getContent().close();
}
}