/* 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.ws;
import java.io.File;
import java.sql.SQLException;
import java.util.List;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.jws.Oneway;
import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import org.openiot.qos.QoSManager;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.ejb.Singleton;
import javax.ejb.Startup;
import org.openiot.cupus.artefact.HashtablePublication;
import org.openiot.cupus.artefact.TripletSubscription;
/**
*
* @author Martina
*/
@Singleton
@Startup
@WebService(serviceName = "QoSManagerWS")
public class QoSManagerWS {
QoSManager manager;
private static final String PROPERTIES_FILE = "openiot.properties";
String jbosServerConfigDir;
String openIotConfigFile;
public QoSManagerWS() {
this.jbosServerConfigDir = System.getProperty("jboss.server.config.dir");
this.openIotConfigFile = jbosServerConfigDir + File.separator + PROPERTIES_FILE;
}
/**
* Web service operation
*/
@WebMethod(operationName = "initialize")
@PostConstruct
private void initialize() {
try {
this.manager = new QoSManager(new File(openIotConfigFile));
} catch (SQLException ex) {
Logger.getLogger(QoSManagerWS.class.getName()).log(Level.SEVERE, null, ex);
}
}
/**
* Web service operation
*/
@WebMethod(operationName = "getAllSensors")
public Set<String> getAllSensors() {
//TODO write your implementation code here:
return this.manager.getAllAvailableSensors();
}
/**
* Web service operation
*/
@WebMethod(operationName = "getLatLongFromArea")
public List<Float> getLatLongFromArea(@WebParam(name = "area") String area) {
//TODO write your implementation code here:
return this.manager.getLatLongFromArea(area);
}
/**
* Web service operation
*/
@WebMethod(operationName = "getAreaFromLatLng")
public String getAreaFromLatLng(@WebParam(name = "lat") double lat, @WebParam(name = "lng") double lng, @WebParam(name = "accuracy") int accuracy) {
//TODO write your implementation code here:
return this.manager.getAreaFromLatLong(lat, lng, accuracy);
}
/**
* Web service operation
*/
@WebMethod(operationName = "getActiveSensorsInArea")
public Set<String> getActiveSensorsInArea(@WebParam(name = "area") String area) {
//TODO write your implementation code here:
return this.manager.getActiveSensorsInArea(area);
}
/**
* Web service operation
*/
@WebMethod(operationName = "getAllSensorsInArea")
public Set<String> getAllSensorsInArea(@WebParam(name = "area") String area) {
//TODO write your implementation code here:
return this.manager.getAllSensorsInArea(area);
}
/**
* Web service operation
*/
@WebMethod(operationName = "setNumberOfActiveSensors")
@Oneway
public void setNumberOfActiveSensors(@WebParam(name = "maxNumberOfActiveSensors") int maxNumberOfActiveSensors) {
this.manager.setNumberOfActiveSensors(maxNumberOfActiveSensors);
}
/**
* Web service operation
*/
@WebMethod(operationName = "setBatteryLevels")
@Oneway
public void setBatteryLevels(@WebParam(name = "highBatteryLevel") double highBatteryLevel, @WebParam(name = "lowBatteryLevel") double lowBatteryLevel) {
this.manager.setBatteryLevels(highBatteryLevel, lowBatteryLevel);
}
/**
* Web service operation
*/
@WebMethod(operationName = "shutdown")
@Oneway
public void shutdown() {
this.manager.shutdown();
}
/**
* Web service operation
*/
@WebMethod(operationName = "average")
public String average(@WebParam(name = "area") String area) {
return this.manager.getAverageSensorReadingsInArea(area).toString();
}
/**
* Web service operation
*/
@WebMethod(operationName = "defineNewSubscriptionInArea")
public void defineNewSubscriptionInArea(@WebParam(name = "area") String area) {
this.manager.defineNewSubscriptionInArea(area);
}
/**
* Web service operation
*/
@WebMethod(operationName = "getAverageSensorReadingsInArea")
public HashtablePublication getAverageSensorReadingsInArea(@WebParam(name = "area") String area) {
return this.manager.getAverageSensorReadingsInArea(area);
}
/**
* Web service operation
*/
@WebMethod(operationName = "getAllSubscriptionsInArea")
public List<TripletSubscription> getAllSubscriptionsInArea(@WebParam(name = "area") String area) {
return this.manager.getAllSubscriptionsInArea(area);
}
}