package org.openiot.scheduler.core.api.impl.GetServiceStatus; /** * 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 */ import java.util.ArrayList; import java.util.List; import java.util.Set; import org.openiot.commons.util.PropertyManagement; import org.openiot.scheduler.core.utils.sparql.SesameSPARQLClient; import org.openrdf.query.BindingSet; import org.openrdf.query.QueryEvaluationException; import org.openrdf.query.TupleQueryResult; import org.openrdf.repository.RepositoryException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Properties; public class GetServiceStatus { private static class Queries { public static class ServiceStatusData { private String serviceStatus; private String serviceStatusTime; public String getServiceStatus() { return serviceStatus; } public void setServiceStatus(String serviceStatus) { this.serviceStatus = serviceStatus; } public String getServiceStatusTime() { return serviceStatusTime; } public void setServiceStatusTime(String serviceStatusTime) { this.serviceStatusTime = serviceStatusTime; } } public static ArrayList<String> parseServicesOfOAMO(TupleQueryResult qres) { ArrayList<String> oamoServicesList = new ArrayList<String>(); try { while (qres.hasNext()) { BindingSet b = qres.next(); Set names = b.getBindingNames(); String oamoService = null; for (Object n : names) { if (((String) n).equalsIgnoreCase("serviceID")) { String str = (b.getValue((String) n) == null) ? null : b.getValue((String) n) .stringValue(); oamoService = str; System.out.print("oamo service: " + oamoService); } } oamoServicesList.add(oamoService); }// while return oamoServicesList; } catch (QueryEvaluationException e) { e.printStackTrace(); return null; } catch (Exception e) { e.printStackTrace(); return null; } } public static ServiceStatusData parseServiceStatusOfOSMO(TupleQueryResult qres) { ServiceStatusData serviceStatusData = new ServiceStatusData(); try { // while (qres.hasNext()) // { BindingSet b = qres.next(); Set names = b.getBindingNames(); for (Object n : names) { if (((String) n).equalsIgnoreCase("srvcStatus")) { String str = (b.getValue((String) n) == null) ? null : b.getValue((String) n) .stringValue(); serviceStatusData.setServiceStatus(str); System.out.print("setServiceStatus: " + serviceStatusData.getServiceStatus() + " "); } else if (((String) n).equalsIgnoreCase("srvcStatusTime")) { String str = (b.getValue((String) n) == null) ? null : b.getValue((String) n) .stringValue(); serviceStatusData.setServiceStatusTime(str); System.out .print("srvcStatusTime : " + serviceStatusData.getServiceStatusTime() + " "); } } // }//while return serviceStatusData; } catch (QueryEvaluationException e) { e.printStackTrace(); return null; } catch (Exception e) { e.printStackTrace(); return null; } } public static String getServicesOfOAMO(String lsmFunctionalGraph,String oamoID) { StringBuilder update = new StringBuilder(); String str = ("SELECT ?serviceID " + "from <" + lsmFunctionalGraph + "> " + "WHERE " + "{" + "?serviceID <http://openiot.eu/ontology/ns/oamo> <" + oamoID + "> . " + "}"); update.append(str); return update.toString(); } public static String getServiceStatusOfOSMO(String lsmFunctionalGraph,String serviceID) { StringBuilder update = new StringBuilder(); String str = ("select ?srvcStatus ?srvcStatusTime " + "from <" + lsmFunctionalGraph + "> " + "WHERE " + "{" + "?srvcStatusID rdf:type ?srvcStatus ." + "?srvcStatusID <http://openiot.eu/ontology/ns/serviceStatusTime> ?srvcStatusTime ." + "?srvcStatusID <http://openiot.eu/ontology/ns/serviceStatusOf> <" + serviceID + "> ." + "}"); update.append(str); return update.toString(); } } // /// final static Logger logger = LoggerFactory.getLogger(GetServiceStatus.class); private String lsmFunctionalGraph; // private String oamoID; // constructor public GetServiceStatus(String oamoID) { PropertyManagement propertyManagement = new PropertyManagement(); lsmFunctionalGraph = propertyManagement.getSchedulerLsmFunctionalGraph(); this.oamoID = oamoID; logger.debug("Recieved Parameters: " + "serviceID=" + oamoID); findServiceStatus(); } // public ServiceStatus getServiceStatus() // { // return serviceStatusData; // } private void findServiceStatus() { SesameSPARQLClient sparqlCl = null; try { sparqlCl = new SesameSPARQLClient(); } catch (RepositoryException e) { logger.error("Init sparql repository error. ", e); return; } TupleQueryResult qres = sparqlCl.sparqlToQResult(Queries.getServicesOfOAMO(lsmFunctionalGraph,oamoID)); ArrayList<String> oamoServicesList = Queries.parseServicesOfOAMO(qres); for (String oamoID : oamoServicesList) { qres = sparqlCl.sparqlToQResult(Queries.getServiceStatusOfOSMO(lsmFunctionalGraph,oamoID)); Queries.ServiceStatusData serviceStatusData = Queries.parseServiceStatusOfOSMO(qres); // need to populate the ServiceStatus object which is described in // Community&DevelopmentCookbook } } }// class