package org.openiot.scheduler.core.api.impl.RegisterService; /** * 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.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Properties; //import lsm.beans.User; import org.openiot.lsm.schema.LSMSchema; import org.openiot.lsm.server.LSMTripleStore; import org.openiot.commons.osdspec.model.OAMO; import org.openiot.commons.osdspec.model.OSDSpec; import org.openiot.commons.osdspec.model.OSMO; import org.openiot.commons.osdspec.model.PresentationAttr; import org.openiot.commons.osdspec.model.Widget; import org.openiot.commons.sparql.protocoltypes.model.QueryRequest; import org.openiot.commons.util.PropertyManagement; import org.openiot.scheduler.core.utils.SecurityUtil; import org.openiot.scheduler.core.utils.lsmpa.entities.Query; import org.openiot.scheduler.core.utils.lsmpa.entities.Service; import org.openiot.scheduler.core.utils.lsmpa.entities.WidgetAttributes; import org.openiot.scheduler.core.utils.lsmpa.entities.WidgetAvailable; import org.openiot.scheduler.core.utils.lsmpa.entities.WidgetPresentation; import org.openiot.scheduler.core.utils.sparql.SesameSPARQLClient; import org.openiot.security.client.OAuthorizationCredentials; import org.openrdf.query.TupleQueryResult; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.hp.hpl.jena.ontology.OntModelSpec; /** * @author Stavros Petris (spet) e-mail: spet@ait.edu.gr * @author Nikos Kefalakis (nkef) e-mail: nkef@ait.edu.gr * */ public class RegisterServiceImpl { final static Logger logger = LoggerFactory.getLogger(RegisterServiceImpl.class); private String lsmFunctionalGraph; private String lsmUserName; private String lsmPassword; private String lsmDeriServer; // private OSDSpec osdSpec; private String replyMessage = ""; // constructor public RegisterServiceImpl(OSDSpec osdSpec) { PropertyManagement propertyManagement = new PropertyManagement(); lsmFunctionalGraph = propertyManagement.getSchedulerLsmFunctionalGraph(); lsmUserName = propertyManagement.getSchedulerLsmUserName(); lsmPassword = propertyManagement.getSchedulerLsmPassword(); lsmDeriServer = propertyManagement.getSchedulerLsmRemoteServer(); this.osdSpec = osdSpec; logger.debug("Recieved OSDSpec from User with userID: " + osdSpec.getUserID()); registerService(); } /** * @return String */ public String replyMessage() { return replyMessage; } private void registerService() { // User user = new User(); // user.setUsername(lsmUserName); // user.setPass(lsmPassword); LSMTripleStore lsmStore = new LSMTripleStore(lsmDeriServer); // lsmStore.setUser(user); LSMSchema myOnt = new LSMSchema(OntModelSpec.OWL_DL_MEM); LSMSchema myOntInstance = new LSMSchema(); org.openiot.scheduler.core.utils.lsmpa.entities.User userEnt = new org.openiot.scheduler.core.utils.lsmpa.entities.User( myOnt, myOntInstance, lsmFunctionalGraph, lsmStore); userEnt.setId(osdSpec.getUserID()); // // userEnt.createClassIdv(); for (OAMO oamo : osdSpec.getOAMO()) { logger.debug("OAMO Description: {} ID: {}", oamo.getDescription(), oamo.getId()); logger.debug("OAMO Name: {}", oamo.getName()); org.openiot.scheduler.core.utils.lsmpa.entities.OAMO oamoEnt = new org.openiot.scheduler.core.utils.lsmpa.entities.OAMO( myOnt, myOntInstance, lsmFunctionalGraph, lsmStore); oamoEnt.setId(oamo.getId()); oamoEnt.setName(oamo.getName()); oamoEnt.setUser(userEnt); oamoEnt.setDescription(oamo.getDescription()); oamoEnt.setGraphMeta(oamo.getGraphMeta()); // oamoEnt.createClassIdv(); oamoEnt.createPoamoName(); oamoEnt.createPoamoUserOf(); oamoEnt.createPoamoDescription(); oamoEnt.createPoamoGraphMeta(); userEnt.addService(oamoEnt); // userEnt.createPuserOf(); for (OSMO osmo : oamo.getOSMO()) { logger.debug("OSMO ID: {}", osmo.getId()); logger.debug("OSMO Name: {}", osmo.getName()); logger.debug("OSMO Description: {}", osmo.getDescription()); for (QueryRequest qr : osmo.getQueryRequest()) { logger.debug("qr.getQuery():" + qr.getQuery()); } Service srvcEnt = new Service(myOnt, myOntInstance, lsmFunctionalGraph, lsmStore); srvcEnt.setId(osmo.getId()); srvcEnt.setName(osmo.getName()); srvcEnt.setDescription(osmo.getDescription()); // for (QueryRequest qr : osmo.getQueryRequest()) { Query qstring = new Query(myOnt, myOntInstance, lsmFunctionalGraph, lsmStore); qstring.setqString(qr.getQuery()); // qstring.createClassIdv(); qstring.createPqueryString(); srvcEnt.addQueryString(qstring); } // srvcEnt.createClassIdv(); srvcEnt.createPserviceName(); srvcEnt.createPserviceDescription(); srvcEnt.createPqString(); for (Widget widget : osmo.getRequestPresentation().getWidget()) { WidgetPresentation widgetPre = new WidgetPresentation(myOnt, myOntInstance, lsmFunctionalGraph, lsmStore); widgetPre.setService(srvcEnt); // widgetPre.createClassIdv(); widgetPre.createPwidgetPresOf(); // srvcEnt.addWidgetPresentation(widgetPre); srvcEnt.createPwidgetPres(); logger.debug("widget available id: {}", widget.getWidgetID()); WidgetAvailable wAvail = new WidgetAvailable(myOnt, myOntInstance, lsmFunctionalGraph,lsmStore); wAvail.setId(widget.getWidgetID()); wAvail.setWidgetPre(widgetPre); // / wAvail.createClassIdv(); wAvail.createPWidgetOf(); // widgetPre.setWidgetAvailable(wAvail); widgetPre.createPwidget(); // // for (PresentationAttr pAttr : widget.getPresentationAttr()) { logger.debug("pAttr id: {} --- name: {}", pAttr.getName(), pAttr.getValue()); WidgetAttributes wAttr = new WidgetAttributes(myOnt, myOntInstance,lsmFunctionalGraph, lsmStore); wAttr.setDescription(pAttr.getValue()); wAttr.setName(pAttr.getName()); wAttr.setWidgetPre(widgetPre); // / wAttr.createClassIdv(); wAttr.createPdesc(); wAttr.createPname(); wAttr.createPWidgetAttrOf(); // widgetPre.addWidgetAttr(wAttr); widgetPre.createPwidgetAttr(); }// PresentationAttr }// widget srvcEnt.setOAMO(oamoEnt); // // srvcEnt.createPOAMO(); oamoEnt.addService(srvcEnt); // oamoEnt.createPoamoService(); // }// osmo }// oamo logger.debug(myOntInstance.exportToTriples("TURTLE")); // boolean ok = OAuthorizationCredentials credentials = SecurityUtil.getCredentials(); lsmStore.pushRDF(lsmFunctionalGraph, myOntInstance.exportToTriples("N-TRIPLE"), credentials.getClientId(), credentials.getAccessToken()); // if (ok) { // replyMessage = "regester service successfull"; // } else { // replyMessage = "regester service error"; // } logger.debug(replyMessage); } }