diff --git a/etc/build.properties b/etc/build.properties index c62cdc4..d6395ca 100755 --- a/etc/build.properties +++ b/etc/build.properties @@ -3,3 +3,4 @@ lib.dir = Dependencies/VREModeler wsdl.1 = ModelerFactory wsdl.2 = ModelerService namespace.1=http://gcube-system.org/namespaces/vremanagement/vremodeler +namespace.2=http://gcube-system.org/namespaces/vremanagement/vremodeler/types \ No newline at end of file diff --git a/etc/deploy-jndi-config.xml b/etc/deploy-jndi-config.xml index e8251d1..63260be 100755 --- a/etc/deploy-jndi-config.xml +++ b/etc/deploy-jndi-config.xml @@ -17,7 +17,7 @@ override="false" /> diff --git a/etc/hsqldb/vreModelerDBInitializer b/etc/hsqldb/vreModelerDBInitializer index 18d0bf7..edca113 100644 --- a/etc/hsqldb/vreModelerDBInitializer +++ b/etc/hsqldb/vreModelerDBInitializer @@ -1,7 +1,7 @@ CREATE CACHED TABLE COLLECTION(ID VARCHAR NOT NULL PRIMARY KEY,NAME VARCHAR,DESCRIPTION VARCHAR,MEMBERS VARCHAR,CREATION VARCHAR,LASTUPDATE VARCHAR) CREATE CACHED TABLE GHN(ID VARCHAR NOT NULL PRIMARY KEY,HOST VARCHAR,SECURITY VARCHAR,UPTIME VARCHAR,MAINMEMORYVA VARCHAR,MAINMEMORYVS VARCHAR,LOCALAS VARCHAR,LOCATION VARCHAR,COUNTRY VARCHAR,DOMAIN VARCHAR) CREATE CACHED TABLE MCOLLECTION(ID VARCHAR NOT NULL PRIMARY KEY,NAME VARCHAR,DESCRIPTION VARCHAR,RELATEDCOLLECTIONID VARCHAR NOT NULL,CONSTRAINT SYS_FK_50 FOREIGN KEY(RELATEDCOLLECTIONID) REFERENCES COLLECTION(ID)) -CREATE CACHED TABLE VRE(ID VARCHAR NOT NULL PRIMARY KEY,NAME VARCHAR NOT NULL,DESCRIPTION VARCHAR NOT NULL,VREDESIGNER VARCHAR NOT NULL,VREMANAGER VARCHAR NOT NULL,INTERVALFROM DATE,INTERVALTO DATE,EPR VARCHAR,STATUS VARCHAR) +CREATE CACHED TABLE VRE(ID VARCHAR NOT NULL PRIMARY KEY,NAME VARCHAR NOT NULL,DESCRIPTION VARCHAR NOT NULL,VREDESIGNER VARCHAR NOT NULL,VREMANAGER VARCHAR NOT NULL,INTERVALFROM DATE,INTERVALTO DATE,STATUS VARCHAR) CREATE CACHED TABLE CS(ID VARCHAR NOT NULL PRIMARY KEY,NAME VARCHAR NOT NULL,DESCRIPTION VARCHAR NOT NULL) CREATE CACHED TABLE RUNNINGINSTANCE(ID VARCHAR NOT NULL PRIMARY KEY,NAME VARCHAR NOT NULL, CLASS VARCHAR NOT NULL) CREATE CACHED TABLE GHNRELATEDRI(GHNID VARCHAR NOT NULL,RIID VARCHAR NOT NULL,PRIMARY KEY(GHNID,RIID)) diff --git a/schema/ModelerFactory.wsdl b/schema/ModelerFactory.wsdl index 3275064..69e5a8c 100644 --- a/schema/ModelerFactory.wsdl +++ b/schema/ModelerFactory.wsdl @@ -6,7 +6,8 @@ xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:coretypes="http://gcube-system.org/namespaces/common/core/types" xmlns:corefaults="http://gcube-system.org/namespaces/common/core/faults" - xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" > + xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/03/addressing" + xmlns:vretypes="http://gcube-system.org/namespaces/vremanagement/vremodeler/types"> @@ -24,7 +25,7 @@ - + @@ -33,7 +34,7 @@ - + diff --git a/schema/ModelerService.wsdl b/schema/ModelerService.wsdl index 2525152..f37f2b4 100644 --- a/schema/ModelerService.wsdl +++ b/schema/ModelerService.wsdl @@ -8,7 +8,8 @@ xmlns:wsrp="http://docs.oasis-open.org/wsrf/2004/06/wsrf-WS-ResourceProperties-1.2-draft-01.xsd" xmlns:coretypes="http://gcube-system.org/namespaces/common/core/types" xmlns:corefaults="http://gcube-system.org/namespaces/common/core/faults" - xmlns:provider="http://gcube-system.org/namespaces/common/core/porttypes/GCUBEProvider"> + xmlns:provider="http://gcube-system.org/namespaces/common/core/porttypes/GCUBEProvider" + xmlns:vretypes="http://gcube-system.org/namespaces/vremanagement/vremodeler/types"> @@ -29,31 +30,22 @@ + + - + - + - - - - - - - - - - + - - - + - + @@ -67,7 +59,7 @@ - + @@ -96,7 +88,7 @@ - + @@ -111,7 +103,7 @@ - + @@ -173,18 +165,18 @@ ============================================================--> - - + + - - + + - - + + - - + + @@ -290,14 +282,14 @@ wsdlpp:extends="provider:GCUBEProvider" wsrp:ResourceProperties="tns:ModelerProperties"> - - - + + + - - - + + + diff --git a/schema/VRETypes.xsd b/schema/VRETypes.xsd new file mode 100644 index 0000000..c8fc1af --- /dev/null +++ b/schema/VRETypes.xsd @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/org/gcube/vremanagement/vremodeler/consumers/CollectionConsumer.java b/src/org/gcube/vremanagement/vremodeler/consumers/CollectionConsumer.java index 7621893..9b2baae 100644 --- a/src/org/gcube/vremanagement/vremodeler/consumers/CollectionConsumer.java +++ b/src/org/gcube/vremanagement/vremodeler/consumers/CollectionConsumer.java @@ -1,13 +1,11 @@ package org.gcube.vremanagement.vremodeler.consumers; +import java.io.StringReader; import javax.xml.namespace.QName; - import org.gcube.common.core.contexts.GHNContext; -import org.gcube.common.core.informationsystem.client.AtomicCondition; -import org.gcube.common.core.informationsystem.client.ISClient; -import org.gcube.common.core.informationsystem.client.queries.GCUBECollectionQuery; import org.gcube.common.core.informationsystem.notifier.ISNotifier.BaseNotificationConsumer; import org.gcube.common.core.informationsystem.notifier.ISNotifier.NotificationEvent; +import org.gcube.common.core.resources.GCUBECollection; import org.gcube.common.core.scope.GCUBEScope; import org.gcube.common.core.utils.logging.GCUBELog; import org.gcube.vremanagement.vremodeler.impl.ServiceContext; @@ -31,16 +29,17 @@ public class CollectionConsumer extends BaseNotificationConsumer{ logger.trace("notificetion received"); ServiceContext.getContext().setScope(this.scope); String id= event.getPayload().getMessage()[0].getChildNodes().item(0).getChildNodes().item(0).getNodeValue(); - String operation=event.getPayload().getMessage()[0].getChildNodes().item(1).getChildNodes().item(0).getNodeValue(); + String profile=event.getPayload().getMessage()[0].getChildNodes().item(1).getChildNodes().item(0).getNodeValue(); + String operation=event.getPayload().getMessage()[0].getChildNodes().item(2).getChildNodes().item(0).getNodeValue(); + if (operation.compareTo("create")==0){ logger.trace("adding a new GHN in DB"); - ISClient client=GHNContext.getImplementation(ISClient.class); - GCUBECollectionQuery query= client.getQuery(GCUBECollectionQuery.class); - query.addAtomicConditions(new AtomicCondition("/ID",id)); - Thread.sleep(60000); - new CollectionHandler().add(client.execute(query, this.scope).get(0)); - } else if (operation.compareTo("remove")==0){ - logger.trace("removing a GHN from DB"); + GCUBECollection collection= GHNContext.getImplementation(GCUBECollection.class); + collection.load(new StringReader(profile)); + new CollectionHandler().add(collection); + } else if (operation.compareTo("destroy")==0){ + logger.trace("removing a collection from DB"); + new CollectionHandler().drop(id); } }catch(Exception e){logger.error("error in notification received",e);} diff --git a/src/org/gcube/vremanagement/vremodeler/consumers/GHNConsumer.java b/src/org/gcube/vremanagement/vremodeler/consumers/GHNConsumer.java index 719c664..a78bc0c 100644 --- a/src/org/gcube/vremanagement/vremodeler/consumers/GHNConsumer.java +++ b/src/org/gcube/vremanagement/vremodeler/consumers/GHNConsumer.java @@ -1,13 +1,13 @@ package org.gcube.vremanagement.vremodeler.consumers; +import java.io.StringReader; + import javax.xml.namespace.QName; import org.gcube.common.core.contexts.GHNContext; -import org.gcube.common.core.informationsystem.client.AtomicCondition; -import org.gcube.common.core.informationsystem.client.ISClient; -import org.gcube.common.core.informationsystem.client.queries.GCUBEGHNQuery; import org.gcube.common.core.informationsystem.notifier.ISNotifier.BaseNotificationConsumer; import org.gcube.common.core.informationsystem.notifier.ISNotifier.NotificationEvent; +import org.gcube.common.core.resources.GCUBEHostingNode; import org.gcube.common.core.scope.GCUBEScope; import org.gcube.common.core.utils.logging.GCUBELog; import org.gcube.vremanagement.vremodeler.impl.ServiceContext; @@ -29,17 +29,18 @@ public class GHNConsumer extends BaseNotificationConsumer{ public void onNotificationReceived(NotificationEvent event){ try{ - logger.trace("notificetion received"); + logger.trace("notification received"); ServiceContext.getContext().setScope(this.scope); String id= event.getPayload().getMessage()[0].getChildNodes().item(0).getChildNodes().item(0).getNodeValue(); - String operation=event.getPayload().getMessage()[0].getChildNodes().item(1).getChildNodes().item(0).getNodeValue(); + String profile=event.getPayload().getMessage()[0].getChildNodes().item(1).getChildNodes().item(0).getNodeValue(); + String operation=event.getPayload().getMessage()[0].getChildNodes().item(2).getChildNodes().item(0).getNodeValue(); + //logger.trace("received id: "+id+" op: "+operation+" profile: "+profile); + if (operation.compareTo("create")==0){ logger.trace("adding a new GHN in DB"); - ISClient client=GHNContext.getImplementation(ISClient.class); - GCUBEGHNQuery query= client.getQuery(GCUBEGHNQuery.class); - query.addAtomicConditions(new AtomicCondition("/ID",id)); - Thread.sleep(60000); - new GHNHandler().add(client.execute(query, this.scope).get(0)); + GCUBEHostingNode ghn= GHNContext.getImplementation(GCUBEHostingNode.class); + ghn.load(new StringReader(profile)); + new GHNHandler().add(ghn); } else if (operation.compareTo("destroy")==0){ logger.trace("removing a GHN from DB"); new GHNHandler().drop(id); diff --git a/src/org/gcube/vremanagement/vremodeler/consumers/GenericResourceConsumer.java b/src/org/gcube/vremanagement/vremodeler/consumers/GenericResourceConsumer.java index 10665f1..9d1882c 100644 --- a/src/org/gcube/vremanagement/vremodeler/consumers/GenericResourceConsumer.java +++ b/src/org/gcube/vremanagement/vremodeler/consumers/GenericResourceConsumer.java @@ -1,15 +1,8 @@ package org.gcube.vremanagement.vremodeler.consumers; import java.io.StringReader; -import java.io.StringWriter; - import javax.xml.namespace.QName; - import org.gcube.common.core.contexts.GHNContext; -import org.gcube.common.core.informationsystem.client.AtomicCondition; -import org.gcube.common.core.informationsystem.client.ISClient; -import org.gcube.common.core.informationsystem.client.queries.GCUBEGenericQuery; -import org.gcube.common.core.informationsystem.client.queries.GCUBEGenericResourceQuery; import org.gcube.common.core.informationsystem.notifier.ISNotifier.BaseNotificationConsumer; import org.gcube.common.core.informationsystem.notifier.ISNotifier.NotificationEvent; import org.gcube.common.core.resources.GCUBEGenericResource; @@ -39,39 +32,31 @@ private GCUBELog logger= new GCUBELog(GHNConsumer.class); try{ ServiceContext.getContext().setScope(this.scope); String id= event.getPayload().getMessage()[0].getChildNodes().item(0).getChildNodes().item(0).getNodeValue(); - String operation=event.getPayload().getMessage()[0].getChildNodes().item(1).getChildNodes().item(0).getNodeValue(); + String profile=event.getPayload().getMessage()[0].getChildNodes().item(1).getChildNodes().item(0).getNodeValue(); + String operation=event.getPayload().getMessage()[0].getChildNodes().item(2).getChildNodes().item(0).getNodeValue(); + logger.info("notification received for genericResource "+id+" and operation "+operation); if (id.compareTo(this.functionalityResourceId)==0 && (operation.compareTo("update")==0)){ logger.trace("notification received for functionalityResource with id "+id+" in scope "+scope.toString()); KGCUBEGenericFunctionalityResource resource= new KGCUBEGenericFunctionalityResource(); - ISClient client=GHNContext.getImplementation(ISClient.class); - GCUBEGenericResourceQuery query= client.getQuery(GCUBEGenericResourceQuery.class); - query.addAtomicConditions(new AtomicCondition("/Profile/Name","FuctionalitiesResource"), new AtomicCondition("/Profile/SecondaryType","VREModelerResource")); - GCUBEGenericQuery genericQuery= client.getQuery(GCUBEGenericQuery.class); - genericQuery.setExpression(query.getExpression()); - Thread.sleep(60000); - resource.load(new StringReader(client.execute(genericQuery, ServiceContext.getContext().getScope()).get(0).toString())); + resource.load(new StringReader(profile)); //FunctionalityHandler FunctionalityHandler functionalityHandler= new FunctionalityHandler(); functionalityHandler.add(resource); }else if (operation.compareTo("create")==0){ logger.trace("notification received for generic resource with operation create"); - ISClient client=GHNContext.getImplementation(ISClient.class); - GCUBEGenericResourceQuery query= client.getQuery(GCUBEGenericResourceQuery.class); - query.addAtomicConditions(new AtomicCondition("/ID",id)); - GCUBEGenericResource resource =client.execute(query, ServiceContext.getContext().getScope()).get(0); - if (resource.getName().compareTo("FuctionalitiesResource")==0){ + GCUBEGenericResource genericResource= GHNContext.getImplementation(GCUBEGenericResource.class); + genericResource.load(new StringReader(profile)); + if (genericResource.getName().compareTo("FuctionalitiesResource")==0){ FunctionalityHandler functionalityHandler= new FunctionalityHandler(); KGCUBEGenericFunctionalityResource functResource=new KGCUBEGenericFunctionalityResource(); - StringWriter sw= new StringWriter(); - resource.store(sw); - functResource.load(new StringReader(sw.toString())); + functResource.load(new StringReader(profile)); functionalityHandler.add(functResource); } else - if (ServiceContext.getContext().getSecondaryTypeGenericResourceRequired().contains(resource.getSecondaryType())) - new GenericResourceHandler().add(resource); + if (ServiceContext.getContext().getSecondaryTypeGenericResourceRequired().contains(genericResource.getSecondaryType())) + new GenericResourceHandler().add(genericResource); }else if (operation.compareTo("destroy")==0){ logger.trace("notification received for generic resource with operation destroy"); new GenericResourceHandler().drop(id); diff --git a/src/org/gcube/vremanagement/vremodeler/consumers/MCollectionConsumer.java b/src/org/gcube/vremanagement/vremodeler/consumers/MCollectionConsumer.java index 06999fc..f55ba10 100644 --- a/src/org/gcube/vremanagement/vremodeler/consumers/MCollectionConsumer.java +++ b/src/org/gcube/vremanagement/vremodeler/consumers/MCollectionConsumer.java @@ -1,11 +1,10 @@ package org.gcube.vremanagement.vremodeler.consumers; +import java.io.StringReader; + import javax.xml.namespace.QName; import org.gcube.common.core.contexts.GHNContext; -import org.gcube.common.core.informationsystem.client.AtomicCondition; -import org.gcube.common.core.informationsystem.client.ISClient; -import org.gcube.common.core.informationsystem.client.queries.GCUBEMCollectionQuery; import org.gcube.common.core.informationsystem.notifier.ISNotifier.BaseNotificationConsumer; import org.gcube.common.core.informationsystem.notifier.ISNotifier.NotificationEvent; import org.gcube.common.core.resources.GCUBEMCollection; @@ -32,17 +31,16 @@ public class MCollectionConsumer extends BaseNotificationConsumer{ //logger.trace("notification received"); ServiceContext.getContext().setScope(this.scope); String id= event.getPayload().getMessage()[0].getChildNodes().item(0).getChildNodes().item(0).getNodeValue(); - String operation=event.getPayload().getMessage()[0].getChildNodes().item(1).getChildNodes().item(0).getNodeValue(); + String profile=event.getPayload().getMessage()[0].getChildNodes().item(1).getChildNodes().item(0).getNodeValue(); + String operation=event.getPayload().getMessage()[0].getChildNodes().item(2).getChildNodes().item(0).getNodeValue(); if (operation.compareTo("create")==0){ logger.trace("adding a new MCollection in DB"); - ISClient client=GHNContext.getImplementation(ISClient.class); - GCUBEMCollectionQuery query= client.getQuery(GCUBEMCollectionQuery.class); - query.addAtomicConditions(new AtomicCondition("/ID",id)); - GCUBEMCollection mColl= client.execute(query, this.scope).get(0); - Thread.sleep(60000); - new MCollectionHandler(mColl.getRelCollection().getCollectionID()).add(mColl); - } else if (operation.compareTo("remove")==0){ - logger.trace("removing a GHN from DB"); + GCUBEMCollection mCollection= GHNContext.getImplementation(GCUBEMCollection.class); + mCollection.load(new StringReader(profile)); + new MCollectionHandler(mCollection.getRelCollection().getCollectionID()).add(mCollection); + } else if (operation.compareTo("destroy")==0){ + logger.trace("removing a MCollection from DB"); + new MCollectionHandler(null).drop(id); } }catch(Exception e){logger.error("error in notification received",e);} diff --git a/src/org/gcube/vremanagement/vremodeler/consumers/RunningInstanceConsumer.java b/src/org/gcube/vremanagement/vremodeler/consumers/RunningInstanceConsumer.java index f51ef76..31f63f8 100644 --- a/src/org/gcube/vremanagement/vremodeler/consumers/RunningInstanceConsumer.java +++ b/src/org/gcube/vremanagement/vremodeler/consumers/RunningInstanceConsumer.java @@ -1,11 +1,8 @@ package org.gcube.vremanagement.vremodeler.consumers; +import java.io.StringReader; import javax.xml.namespace.QName; - import org.gcube.common.core.contexts.GHNContext; -import org.gcube.common.core.informationsystem.client.AtomicCondition; -import org.gcube.common.core.informationsystem.client.ISClient; -import org.gcube.common.core.informationsystem.client.queries.GCUBERIQuery; import org.gcube.common.core.informationsystem.notifier.ISNotifier.BaseNotificationConsumer; import org.gcube.common.core.informationsystem.notifier.ISNotifier.NotificationEvent; import org.gcube.common.core.resources.GCUBERunningInstance; @@ -32,16 +29,12 @@ public class RunningInstanceConsumer extends BaseNotificationConsumer{ logger.trace("notification received for RI"); ServiceContext.getContext().setScope(this.scope); String id= event.getPayload().getMessage()[0].getChildNodes().item(0).getChildNodes().item(0).getNodeValue(); - String operation=event.getPayload().getMessage()[0].getChildNodes().item(1).getChildNodes().item(0).getNodeValue(); + String profile=event.getPayload().getMessage()[0].getChildNodes().item(1).getChildNodes().item(0).getNodeValue(); + String operation=event.getPayload().getMessage()[0].getChildNodes().item(2).getChildNodes().item(0).getNodeValue(); if (operation.compareTo("create")==0){ logger.trace("adding a new RI in DB"); - ISClient client=GHNContext.getImplementation(ISClient.class); - GCUBERIQuery query= client.getQuery(GCUBERIQuery.class); - logger.trace("id: "+id); - query.addAtomicConditions(new AtomicCondition("/ID",id)); - Thread.sleep(60000); - GCUBERunningInstance ri= client.execute(query, this.scope).get(0); - + GCUBERunningInstance ri= GHNContext.getImplementation(GCUBERunningInstance.class); + ri.load(new StringReader(profile)); new RunningInstancesHandler(ri.getGHNID()).add(ri); } else if (operation.compareTo("destroy")==0){ logger.trace("removing a RI from DB"); diff --git a/src/org/gcube/vremanagement/vremodeler/impl/ModelFactoryService.java b/src/org/gcube/vremanagement/vremodeler/impl/ModelFactoryService.java index 164fc80..a8d3800 100644 --- a/src/org/gcube/vremanagement/vremodeler/impl/ModelFactoryService.java +++ b/src/org/gcube/vremanagement/vremodeler/impl/ModelFactoryService.java @@ -9,8 +9,10 @@ import org.gcube.common.core.faults.GCUBEFault; import org.gcube.common.core.types.VOID; import org.gcube.common.core.utils.logging.GCUBELog; import org.gcube.vremanagement.vremodeler.db.DBInterface; -import org.gcube.vremanagement.vremodeler.impl.util.XMLUtil; +import org.gcube.vremanagement.vremodeler.impl.util.Util; import org.gcube.vremanagement.vremodeler.stubs.GetExistingNamesResponseMessage; +import org.gcube.vremanagement.vremodeler.stubs.Report; +import org.gcube.vremanagement.vremodeler.stubs.ReportList; @@ -60,7 +62,7 @@ public class ModelFactoryService{ res= DBInterface.queryDB("select VRE.name from VRE;"); while (res.next()) toReturn.add(res.getString(1)); - }catch(Exception e) {logger.error("error on DB"); throw new GCUBEFault(e);} + }catch(Exception e) {logger.error("error on DB",e); throw new GCUBEFault(e);} GetExistingNamesResponseMessage response = new GetExistingNamesResponseMessage(); response.setNames(toReturn.toArray(new String[0])); @@ -85,8 +87,7 @@ public class ModelFactoryService{ try{ ServiceContext.getContext().intializeDB(); }catch(Exception e){ - logger.error("DB inizialization failed"+e); - e.printStackTrace(); + logger.error("DB inizialization failed",e); } } }; @@ -101,20 +102,19 @@ public class ModelFactoryService{ * @return String * @throws RemoteException - */ - public String getAllVREs(VOID arg) throws GCUBEFault{ - String toReturn = null; + public ReportList getAllVREs(VOID arg) throws GCUBEFault{ ResultSet res=null; try{ DBInterface.connect(); - res= DBInterface.queryDB("select VRE.name, VRE.description, VRE.status, VRE.epr from VRE;"); - }catch(Exception e) {logger.error("VREModel: error on DB"); throw new GCUBEFault(e);} + res= DBInterface.queryDB("select VRE.name, VRE.description, VRE.status, VRE.id from VRE;"); + }catch(Exception e) {logger.error("error on DB",e); throw new GCUBEFault(e);} try { - toReturn=XMLUtil.PrepareAllVREsXML(res); + return new ReportList(Util.prepareVREsList(res).toArray(new Report[0])); } catch (Exception e) { - logger.error("VREModel parsing error in function getAllDLs "+e.getMessage()); + logger.error("parsing error in function getAllVREs ",e); throw new GCUBEFault(e); } - return toReturn; + } diff --git a/src/org/gcube/vremanagement/vremodeler/impl/ModelerResource.java b/src/org/gcube/vremanagement/vremodeler/impl/ModelerResource.java index da661d0..c580aa9 100644 --- a/src/org/gcube/vremanagement/vremodeler/impl/ModelerResource.java +++ b/src/org/gcube/vremanagement/vremodeler/impl/ModelerResource.java @@ -85,4 +85,6 @@ public class ModelerResource extends GCUBEWSResource { this.getResourcePropertySet().get(RP_FIRSTREPORT).add(reportFirstStep); } + + } diff --git a/src/org/gcube/vremanagement/vremodeler/impl/ModelerService.java b/src/org/gcube/vremanagement/vremodeler/impl/ModelerService.java index 0844918..291f34b 100644 --- a/src/org/gcube/vremanagement/vremodeler/impl/ModelerService.java +++ b/src/org/gcube/vremanagement/vremodeler/impl/ModelerService.java @@ -2,12 +2,11 @@ package org.gcube.vremanagement.vremodeler.impl; import java.net.URI; import java.rmi.RemoteException; -import java.sql.Date; import java.sql.ResultSet; import java.util.ArrayList; +import java.util.Calendar; import java.util.Hashtable; import java.util.List; -import javax.xml.namespace.QName; import org.gcube.common.core.faults.GCUBEFault; import org.gcube.common.core.faults.GCUBEUnrecoverableFault; import org.gcube.common.core.types.VOID; @@ -15,27 +14,27 @@ import org.gcube.common.core.utils.logging.GCUBELog; import org.gcube.vremanagement.vremodeler.db.DBInterface; import org.gcube.vremanagement.vremodeler.impl.thread.DeployVRE; import org.gcube.vremanagement.vremodeler.impl.util.ModelerCollection; -import org.gcube.vremanagement.vremodeler.impl.util.XMLUtil; +import org.gcube.vremanagement.vremodeler.impl.util.Util; import org.gcube.vremanagement.vremodeler.resources.MetadataFormat; import org.gcube.vremanagement.vremodeler.stubs.CheckStatusResponse; import org.gcube.vremanagement.vremodeler.stubs.CollectionArray; +import org.gcube.vremanagement.vremodeler.stubs.CollectionList; +import org.gcube.vremanagement.vremodeler.stubs.CollectionType; import org.gcube.vremanagement.vremodeler.stubs.FunctionalityIDArray; +import org.gcube.vremanagement.vremodeler.stubs.FunctionalityItem; +import org.gcube.vremanagement.vremodeler.stubs.FunctionalityList; import org.gcube.vremanagement.vremodeler.stubs.GHNArray; +import org.gcube.vremanagement.vremodeler.stubs.GHNList; +import org.gcube.vremanagement.vremodeler.stubs.GHNType; +import org.gcube.vremanagement.vremodeler.stubs.MetadataFormatResponse; import org.gcube.vremanagement.vremodeler.stubs.SetMDFormatArgs; -import org.gcube.vremanagement.vremodeler.stubs.VRERequest; +import org.gcube.vremanagement.vremodeler.stubs.VREDescription; +import org.gcube.vremanagement.vremodeler.stubs.VREState; import org.globus.wsrf.ResourceException; -import org.globus.wsrf.encoding.ObjectSerializer; -import org.globus.wsrf.encoding.SerializationException; + public class ModelerService { - - public static final String INPROGRESS="In Progress"; - public static final String DEPLOYED="Deployed"; - public static final String FAILED="Failed"; - public static final String PENDING="Pending"; - public static final String DEPLOYING="Deploying"; - private static final GCUBELog logger = new GCUBELog(ModelerService.class); @@ -52,35 +51,23 @@ public class ModelerService { * @throws RemoteException - * */ - public void setVREModel(VRERequest request) throws GCUBEFault{ + public void setDescription(VREDescription request) throws GCUBEFault{ - Date dateFrom=null, dateTo=null; + Calendar dateFrom=null, dateTo=null; ResultSet res=null; try { res=DBInterface.queryDB("select * from VRE where VRE.id='"+getResource().getId()+"'; "); if(res.next()) { - dateFrom=new Date(request.getStartTime()); - dateTo=new Date(request.getEndTime()); - DBInterface.queryDB("update VRE set name='"+request.getVREName()+"', description='"+request.getVREDescription()+"', vredesigner='"+request.getVREDesigner()+"', vremanager= '"+request.getVREManager()+"', intervalfrom='"+dateFrom+"', intervalto='"+dateTo+"' where VRE.id='"+getResource().getId()+"'; "); + dateFrom=request.getStartTime(); + dateTo=request.getEndTime(); + DBInterface.queryDB("update VRE set name='"+request.getName()+"', description='"+request.getDescription()+"', vredesigner='"+request.getDesigner()+"', vremanager= '"+request.getManager()+"', intervalfrom='"+dateFrom.getTime()+"', intervalto='"+dateTo.getTime()+"' where VRE.id='"+getResource().getId()+"'; "); }else{ - dateFrom=new Date(request.getStartTime()); - dateTo=new Date(request.getEndTime()); - String eprToString; - try { - eprToString = ObjectSerializer.toString(getResource().getEPR(), new QName(ModelerContext.getPortTypeContext().getNamespace(), "ModelResourceReference")); - //logger.debug("EPR: "+eprToString); - } catch (SerializationException e) { - //logger.error("VDL Model Service: error serializing EPR"); - logger.error("VDL Model Service: error serializing EPR",e); - throw new GCUBEFault(e); - } - - DBInterface.ExecuteUpdate("insert into VRE values('"+getResource().getId()+"','"+request.getVREName()+"','"+request.getVREDescription()+"','"+request.getVREDesigner()+"','"+request.getVREManager()+"','"+dateFrom+"','"+dateTo+"','"+eprToString+"','"+INPROGRESS+"'); "); + dateFrom=request.getStartTime(); + dateTo=request.getEndTime(); + DBInterface.ExecuteUpdate("insert into VRE values('"+getResource().getId()+"','"+request.getName()+"','"+request.getDescription()+"','"+request.getDesigner()+"','"+request.getManager()+"','"+dateFrom+"','"+dateTo+"','"+VREState.IN_PROGRESS+"'); "); } - - } catch (Exception e) { logger.error(e); throw new GCUBEFault(e); @@ -97,35 +84,26 @@ public class ModelerService { * @return VoidType * @throws RemoteException - */ - public String getVREModel(VOID var) throws GCUBEFault{ - - - String toReturn =null; - ResultSet res=null; - + public VREDescription getDescription(VOID var) throws GCUBEFault{ //logger.debug("Request DL with ID "+ID); try { - String ID=getResource().getId(); DBInterface.connect(); - res=DBInterface.queryDB("select * from VRE where VRE.id='"+ID+"';"); - toReturn=XMLUtil.PrepareVREModelXML(res); + return Util.prepareVREDescription(DBInterface.queryDB("select * from VRE where VRE.id='"+getResource().getId()+"';")); } catch (Exception e) { - logger.error("VDLModel parsing error in function getDLModel ",e); + logger.error("error getting VRE informations",e); throw new GCUBEFault(e); - } - return toReturn; } /** - * return an XML containing the DHN list + * return an XML containing the GHN list * * @param request void * @return a XML String * @throws RemoteException - */ - public String getGHNs(VOID var) throws GCUBEFault{ - logger.info("getGHNs method"); + public GHNList getGHNs(VOID var) throws GCUBEFault{ + logger.trace("getGHNs method"); ResultSet res; ArrayList relatedGHN=new ArrayList(); try{ @@ -139,9 +117,10 @@ public class ModelerService { relatedGHN.add(resRelated.getString(1)); if (resRelated.getBoolean(2)) candidatedGHN=resRelated.getString(1); } - return XMLUtil.PrepareGHNsXML(res, relatedGHN,candidatedGHN); + + return new GHNList(Util.prepareGHNs(res, relatedGHN,candidatedGHN).toArray(new GHNType[0])); }catch(Exception e) { - logger.error("VRE Modeler: error retreiving GHNs",e); + logger.error("error retreiving GHNs",e); throw new GCUBEFault(e);} } @@ -188,7 +167,7 @@ public class ModelerService { * @return the collection retrieved from the database * @throws RemoteException - */ - public String getCollection(VOID var) throws GCUBEFault{ + public CollectionList getCollection(VOID var) throws GCUBEFault{ ResultSet res; ArrayList relatedCollection=new ArrayList(); try{ @@ -206,7 +185,7 @@ public class ModelerService { throw new GCUBEFault(e);} - return XMLUtil.PrepareCollectionXML(res, relatedCollection); + return new CollectionList(Util.prepareCollections(res, relatedCollection).toArray(new CollectionType[0])); } /** @@ -253,7 +232,7 @@ public class ModelerService { * @return a XML format string * @throws RemoteException - */ - public String getMetadataRelatedToCollection(VOID var) throws GCUBEFault { + public MetadataFormatResponse getMetadataRelatedToCollection(VOID var) throws GCUBEFault { Hashtable> nativeMetadataFormat; Hashtable> selectedMetadataFormat; @@ -293,53 +272,14 @@ public class ModelerService { } } - /* - //recovering possible previous selection for metadataFormat - while (metadataSelected.next()){ - if(selectedMetadataStructure.containsKey(metadataSelected.getString(1))) - selectedMetadataStructure.get(metadataSelected.getString(1)).add(metadataSelected.getString(2)); - else { - ArrayList temp= new ArrayList(); - temp.add(metadataSelected.getString(2)); - selectedMetadataStructure.put(metadataSelected.getString(1), temp); - } - } - - if(!enter) throw new GCUBEFault("no collection selected for this VRE"); - else preparedWhere=preparedWhere.substring(0, preparedWhere.length()-4)+") "; - - - //retrieving all available MDFromat - totalMF = DBInterface.queryDB("select MDFORMAT.id, MDFORMAT.name, MDFORMAT.schemauri, MDFORMAT.language from MDFORMAT;"); - totalMFList= new ArrayList(); - while (totalMF.next()){ - MetadataFormat mf= new MetadataFormat(totalMF.getString(1),totalMF.getString(2), new URI(totalMF.getString(3)), totalMF.getString(4) ); - totalMFList.add(mf); - } - - - - - /* - resDerivable= DBInterface.queryDB("select mdc.collid, mdc.collname, mdc.colldesc , collmdf.id as mdfid from (select * from DERIVABLEMDF INNER JOIN MDFORMAT on DERIVABLEMDF.mdfid= MDFORMAT.id) " + - "as COLLMDF,(select COLLECTION.id as collid, COLLECTION.name as collname, COLLECTION.description as colldesc, MDCOLLECTION.id as mdid from COLLECTION INNER JOIN MDCOLLECTION " + - "ON COLLECTION.id = MDCOLLECTION.relatedcollectionid) as MDC where COLLMDF.mdcollid= MDC.mdid "+preparedWhere+";"); - - - resNative= DBInterface.queryDB("select mdc.collid, mdc.collname, mdc.colldesc , collmdf.id as mdfid from (select * from NATIVEMDF INNER JOIN MDFORMAT on NATIVEMDF.mdfid= MDFORMAT.id) " + - "as COLLMDF,(select COLLECTION.id as collid, COLLECTION.name as collname, COLLECTION.description as colldesc, MDCOLLECTION.id as mdid from COLLECTION INNER JOIN MDCOLLECTION " + - "ON COLLECTION.id = MDCOLLECTION.relatedcollectionid) as MDC where COLLMDF.mdcollid= MDC.mdid "+preparedWhere+";"); - - */ - - + }catch(Exception e) { - logger.error("ModelService: getMEtadataRelatedToCollection Error ",e); + logger.error("getMEtadataRelatedToCollection Error ",e); throw new GCUBEFault(e); } - return XMLUtil.PrepareMCFormatXML( nativeMetadataFormat ,selectedMetadataFormat); + return Util.prepareMCFormat( nativeMetadataFormat ,selectedMetadataFormat); } @@ -389,7 +329,7 @@ public class ModelerService { * @return an xml String containing selectable functionalities * @throws RemoteException - */ - public String getFunctionality(VOID var) throws GCUBEFault { + public FunctionalityList getFunctionality(VOID var) throws GCUBEFault { ResultSet resFunct=null; ResultSet selectedFuncRes=null; @@ -411,7 +351,7 @@ public class ModelerService { throw new GCUBEFault(e); } - return XMLUtil.PrepareFunctionalityXML(resFunct, selectedFunctionality, selectedCS); + return new FunctionalityList(Util.prepareFunctionalities(resFunct, selectedFunctionality, selectedCS).toArray(new FunctionalityItem[0])); } @@ -476,7 +416,7 @@ public class ModelerService { * @throws RemoteException - */ public String getQuality(VOID var) throws GCUBEFault{ - return XMLUtil.PrepareQualityXML(); + return Util.prepareQualityXML(); } @@ -500,7 +440,7 @@ public class ModelerService { */ public void setVREtoPendingState(VOID var) throws GCUBEFault{ try{ - DBInterface.ExecuteUpdate("UPDATE VRE SET STATUS='"+PENDING+"' WHERE VRE.id='"+getResource().getId()+"';"); + DBInterface.ExecuteUpdate("UPDATE VRE SET STATUS='"+VREState.PENDING+"' WHERE VRE.id='"+getResource().getId()+"';"); }catch(Exception e){throw new GCUBEFault(e);} } @@ -520,7 +460,7 @@ public class ModelerService { } try{ - DBInterface.ExecuteUpdate("UPDATE VRE SET STATUS='"+DEPLOYING+"' WHERE VRE.id='"+resourceID+"';"); + DBInterface.ExecuteUpdate("UPDATE VRE SET STATUS='"+VREState.DEPLOYING+"' WHERE VRE.id='"+resourceID+"';"); } catch (Exception e) { logger.error("DB Error ",e); throw new GCUBEUnrecoverableFault(e); diff --git a/src/org/gcube/vremanagement/vremodeler/impl/ServiceContext.java b/src/org/gcube/vremanagement/vremodeler/impl/ServiceContext.java index 737d00d..68e7b14 100644 --- a/src/org/gcube/vremanagement/vremodeler/impl/ServiceContext.java +++ b/src/org/gcube/vremanagement/vremodeler/impl/ServiceContext.java @@ -10,9 +10,6 @@ import org.gcube.common.core.contexts.GCUBEServiceContext; import org.gcube.common.core.contexts.GHNContext; import org.gcube.common.core.informationsystem.notifier.ISNotifier; import org.gcube.common.core.scope.GCUBEScope; -import org.gcube.common.core.security.GCUBESecurityManager; -import org.gcube.common.core.security.GCUBESecurityManagerImpl; - import org.gcube.vremanagement.vremodeler.consumers.CollectionConsumer; import org.gcube.vremanagement.vremodeler.consumers.GHNConsumer; import org.gcube.vremanagement.vremodeler.consumers.GenericResourceConsumer; @@ -72,12 +69,6 @@ public class ServiceContext extends GCUBEServiceContext{ this.setSecondaryTypeGenericResourceRequired(genResList.toArray(new String[0])); - GCUBESecurityManager secMan= new GCUBESecurityManagerImpl(){ - @Override - public boolean isSecurityEnabled() { - return false; - }}; - IStoDBUtil.initDB(scope); new GHNHandler().initialize(); new CollectionHandler().initialize(); @@ -89,23 +80,23 @@ public class ServiceContext extends GCUBEServiceContext{ //GHNNotification ArrayList qnameList= new ArrayList(); qnameList.add(GHNConsumer.ghnQName); - notifier.registerToISNotification(qnameList, new GHNConsumer(scope), secMan, scope); + notifier.registerToISNotification(qnameList, new GHNConsumer(scope), this, scope); //RINotification qnameList= new ArrayList(); qnameList.add(RunningInstanceConsumer.riQName); - notifier.registerToISNotification(qnameList, new RunningInstanceConsumer(scope), secMan, scope); + notifier.registerToISNotification(qnameList, new RunningInstanceConsumer(scope), this, scope); //CollectionNotification qnameList= new ArrayList(); qnameList.add(CollectionConsumer.collectionQName); - notifier.registerToISNotification(qnameList, new CollectionConsumer(scope), secMan, scope); + notifier.registerToISNotification(qnameList, new CollectionConsumer(scope), this, scope); //MCollectionNotification qnameList= new ArrayList(); qnameList.add(MCollectionConsumer.mCollectionQName); - notifier.registerToISNotification(qnameList, new MCollectionConsumer(scope), secMan, scope); + notifier.registerToISNotification(qnameList, new MCollectionConsumer(scope), this, scope); //FunctionalityResource qnameList= new ArrayList(); qnameList.add(GenericResourceConsumer.functionalityQName); - notifier.registerToISNotification(qnameList, new GenericResourceConsumer(scope,functionalityHandler.getFunctionalityResourceId()), secMan, scope); + notifier.registerToISNotification(qnameList, new GenericResourceConsumer(scope,functionalityHandler.getFunctionalityResourceId()), this, scope); logger.debug("consumers registered"); } diff --git a/src/org/gcube/vremanagement/vremodeler/impl/thread/DeployVRE.java b/src/org/gcube/vremanagement/vremodeler/impl/thread/DeployVRE.java index 10b13a2..ac38e8e 100644 --- a/src/org/gcube/vremanagement/vremodeler/impl/thread/DeployVRE.java +++ b/src/org/gcube/vremanagement/vremodeler/impl/thread/DeployVRE.java @@ -21,14 +21,15 @@ import org.gcube.common.core.scope.GCUBEScope; import org.gcube.common.core.utils.handlers.GCUBEServiceClientImpl; import org.gcube.common.core.utils.logging.GCUBELog; import org.gcube.common.resources.kxml.KGCUBEResource; -import org.gcube.vremanagement.vremanager.stubs.vremanager.AddResourcesParameters; -import org.gcube.vremanagement.vremanager.stubs.vremanager.OptionsParameters; -import org.gcube.vremanagement.vremanager.stubs.vremanager.ResourceItem; -import org.gcube.vremanagement.vremanager.stubs.vremanager.ResourceList; -import org.gcube.vremanagement.vremanager.stubs.vremanager.ScopeOption; -import org.gcube.vremanagement.vremanager.stubs.vremanager.ServiceItem; -import org.gcube.vremanagement.vremanager.stubs.vremanager.ServiceList; -import org.gcube.vremanagement.vremanager.stubs.vremanager.VREManagerPortType; +import org.gcube.vremanagement.resourcemanager.stubs.resourcemanager.AddResourcesParameters; +import org.gcube.vremanagement.resourcemanager.stubs.resourcemanager.CreateScopeParameters; +import org.gcube.vremanagement.resourcemanager.stubs.resourcemanager.OptionsParameters; +import org.gcube.vremanagement.resourcemanager.stubs.resourcemanager.ResourceItem; +import org.gcube.vremanagement.resourcemanager.stubs.resourcemanager.ResourceList; +import org.gcube.vremanagement.resourcemanager.stubs.resourcemanager.ResourceManagerPortType; +import org.gcube.vremanagement.resourcemanager.stubs.resourcemanager.ScopeOption; +import org.gcube.vremanagement.resourcemanager.stubs.resourcemanager.ServiceItem; +import org.gcube.vremanagement.resourcemanager.stubs.resourcemanager.ServiceList; import org.gcube.vremanagement.vremodeler.db.DBInterface; import org.gcube.vremanagement.vremodeler.impl.ModelerContext; import org.gcube.vremanagement.vremodeler.impl.ModelerResource; @@ -38,6 +39,7 @@ import org.gcube.vremanagement.vremodeler.impl.util.VREManagerServiceHandler; import org.gcube.vremanagement.vremodeler.portallayout.CollectionResourceCreation; import org.gcube.vremanagement.vremodeler.portallayout.GenericResourcePortlet; import org.gcube.vremanagement.vremodeler.portallayout.LayoutCreation; +import org.gcube.vremanagement.vremodeler.stubs.VREState; import org.globus.wsrf.ResourceException; import org.w3c.dom.Document; import org.w3c.dom.NodeList; @@ -76,7 +78,7 @@ public class DeployVRE extends Thread{ } if (GHNList.size()<2){ - throw new Exception("No ghn Selected (at least 2 GHNs have to be selcted)"); + throw new Exception("No ghn Selected (at least 2 GHNs have to be selected)"); } @@ -86,7 +88,7 @@ public class DeployVRE extends Thread{ for (Couple cpl: GHNList) ghnEpuredList.add(cpl.first); if (!createVRE(ghnEpuredList)){ - DBInterface.ExecuteUpdate("UPDATE VRE SET STATUS='"+ModelerService.DEPLOYED+"' WHERE VRE.id='"+this.resourceId+"';"); + DBInterface.ExecuteUpdate("UPDATE VRE SET STATUS='"+VREState.DEPLOYED+"' WHERE VRE.id='"+this.resourceId+"';"); logger.info("Deploying of the VRE with id "+this.resourceId+" FINISHED"); } else{ @@ -94,7 +96,7 @@ public class DeployVRE extends Thread{ throw new Exception("Error Deployng the VRE failed on second step"); } }else{ - getResource().setSecondReport("FAILED"); + getResource().setSecondReport(VREState.FAILED.getValue()); getResource().store(); logger.info("Deploying of the VRE with id "+this.resourceId+" FAILED on first step"); throw new Exception("Error Deployng the VRE filed on first step"); @@ -102,7 +104,7 @@ public class DeployVRE extends Thread{ }catch(Exception e){ try { - DBInterface.ExecuteUpdate("UPDATE VRE SET STATUS='"+ModelerService.FAILED+"' WHERE VRE.id='"+this.resourceId+"';"); + DBInterface.ExecuteUpdate("UPDATE VRE SET STATUS='"+VREState.FAILED+"' WHERE VRE.id='"+this.resourceId+"';"); } catch (Exception e1) { logger.error("impossible to update the VRE Status"+e1); } @@ -130,7 +132,7 @@ public class DeployVRE extends Thread{ @SuppressWarnings({ "static-access", "unchecked" }) @Override - protected Boolean makeCall(VREManagerPortType vreManagerPT) + protected Boolean makeCall(ResourceManagerPortType resourceManagerPT) throws Exception { String report; try{ @@ -165,12 +167,12 @@ public class DeployVRE extends Thread{ arp.setServices(services); arp.setTargetScope(this.scope+"/"+vreName); - String reportId=vreManagerPT.addResources(arp); + String reportId=resourceManagerPT.addResources(arp); int attempt=0; do{ Thread.currentThread().sleep(20000); - report=vreManagerPT.getReport(reportId); + report=resourceManagerPT.getReport(reportId); attempt++; getResource().setFirstReport(report); getResource().store(); @@ -210,15 +212,14 @@ public class DeployVRE extends Thread{ //the parameter is resourceID @SuppressWarnings("static-access") @Override - protected Boolean makeCall(VREManagerPortType vreManPortType) + protected Boolean makeCall(ResourceManagerPortType rmPortType) throws Exception { - OptionsParameters ops; - ResultSet resGenericInfo = DBInterface.queryDB("select VRE.name, VRE.vredesigner, VRE.vremanager, VRE.IntervalTo, VRE.IntervalFrom, VRE.description from VRE where VRE.id='"+this.getParameter().second+"'; "); if (!resGenericInfo.next()) throw new GCUBEFault("The VRE with ID "+this.getParameter().second+" cannot be retrieved"); - ops=new OptionsParameters(); + CreateScopeParameters scopeParameter=new CreateScopeParameters(); + OptionsParameters optPar= new OptionsParameters(); ScopeOption[] scopeOptionList= new ScopeOption[6]; ScopeOption soDesigner= new ScopeOption(); soDesigner.setName("DESIGNER"); @@ -249,9 +250,10 @@ public class DeployVRE extends Thread{ soDisplayname.setName("DISPLAYNAME"); soDisplayname.setValue(resGenericInfo.getString("name")); scopeOptionList[5]= soDisplayname; - - ops.setScopeOptionList(scopeOptionList); - vreManPortType.setScopeOptions(ops); + + optPar.setScopeOptionList(scopeOptionList); + + scopeParameter.setOptionsParameters(optPar); //creating the GenericResources for Portlets and Collection GenericResourcePortlet.createResource(getResource().getId(), vreName); @@ -348,17 +350,15 @@ public class DeployVRE extends Thread{ arp.setServices(serviceList); - - for (String ghn: this.getParameter().first){ - logger.debug(ghn); - } + scopeParameter.setAddResourcesParameters(arp); + scopeParameter.setName(this.scope+"/"+vreName); String report= "ok"; - String reportId=vreManPortType.addResources(arp); + String reportId=rmPortType.createScope(scopeParameter); int attempt=0; do{ Thread.currentThread().sleep(20000); - report=vreManPortType.getReport(reportId); + report=rmPortType.getReport(reportId); attempt++; getResource().setSecondReport(report); getResource().store(); diff --git a/src/org/gcube/vremanagement/vremodeler/impl/util/MBrokerServiceHandler.java b/src/org/gcube/vremanagement/vremodeler/impl/util/MBrokerServiceHandler.java deleted file mode 100644 index 09c2410..0000000 --- a/src/org/gcube/vremanagement/vremodeler/impl/util/MBrokerServiceHandler.java +++ /dev/null @@ -1,68 +0,0 @@ -package org.gcube.vremanagement.vremodeler.impl.util; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.axis.message.addressing.EndpointReferenceType; -import org.gcube.common.core.contexts.GCUBERemotePortTypeContext; -import org.gcube.common.core.contexts.GHNContext; -import org.gcube.common.core.informationsystem.client.AtomicCondition; -import org.gcube.common.core.informationsystem.client.ISClient; -import org.gcube.common.core.informationsystem.client.queries.GCUBERIQuery; -import org.gcube.common.core.resources.GCUBERunningInstance; -import org.gcube.common.core.utils.handlers.GCUBEServiceClient; -import org.gcube.common.core.utils.handlers.GCUBEServiceHandler; -//import org.gcube.metadatamanagement.metadatabroker.stubs.MetadataBrokerPortType; -//import org.gcube.metadatamanagement.metadatabroker.stubs.service.MetadataBrokerServiceAddressingLocator; -import org.gcube.vremanagement.vremodeler.impl.ServiceContext; - -public abstract class MBrokerServiceHandler extends GCUBEServiceHandler { - - private T returnValue; - - private P parameter; - - public T getReturnValue(){ - return returnValue; - } - - public void setParameter(P param){ - this.parameter= param; - } - - protected P getParameter(){ - return this.parameter; - } - - - protected void setReturnValue(T returnValue){ - this.returnValue= returnValue; - } - - @Override - protected List findInstances() throws Exception { - ISClient client = GHNContext.getImplementation(ISClient.class); - GCUBERIQuery query = client.getQuery(GCUBERIQuery.class); - query.addAtomicConditions(new AtomicCondition("//ServiceName","MetadataBroker")); - List eprs = new ArrayList(); - for (GCUBERunningInstance instance : client.execute(query, ServiceContext.getContext().getScope())) - eprs.add(instance.getAccessPoint().getEndpoint("gcube/metadatamanagement/MetadataBroker")); - return eprs; - - } - - //protected abstract T makeCall(MetadataBrokerPortType mbportType) throws Exception; - - - - protected void interact(EndpointReferenceType arg0) throws Exception{ - /*MetadataBrokerPortType mbpt= null; - try{ - MetadataBrokerServiceAddressingLocator mbsal= new MetadataBrokerServiceAddressingLocator(); - mbpt= mbsal.getMetadataBrokerPortTypePort(arg0); - mbpt = GCUBERemotePortTypeContext.getProxy(mbpt,ServiceContext.getContext().getScope()); - this.setReturnValue(this.makeCall(mbpt)); - }catch(Exception e){throw e;} - */ - } -} diff --git a/src/org/gcube/vremanagement/vremodeler/impl/util/Util.java b/src/org/gcube/vremanagement/vremodeler/impl/util/Util.java new file mode 100644 index 0000000..56db24b --- /dev/null +++ b/src/org/gcube/vremanagement/vremodeler/impl/util/Util.java @@ -0,0 +1,349 @@ +package org.gcube.vremanagement.vremodeler.impl.util; + +import java.io.StringWriter; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collection; +import java.util.Hashtable; +import java.util.List; + +import javax.xml.transform.OutputKeys; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; + +import org.gcube.common.core.utils.logging.GCUBELog; +import org.gcube.vremanagement.vremodeler.db.DBInterface; +import org.gcube.vremanagement.vremodeler.impl.ModelerService; +import org.gcube.vremanagement.vremodeler.impl.ServiceContext; +import org.gcube.vremanagement.vremodeler.resources.MetadataFormat; +import org.gcube.vremanagement.vremodeler.stubs.CollectionType; +import org.gcube.vremanagement.vremodeler.stubs.CollectionTypeInfo; +import org.gcube.vremanagement.vremodeler.stubs.FunctionalityItem; +import org.gcube.vremanagement.vremodeler.stubs.GHNType; +import org.gcube.vremanagement.vremodeler.stubs.GHNTypeMemory; +import org.gcube.vremanagement.vremodeler.stubs.GHNTypeSite; +import org.gcube.vremanagement.vremodeler.stubs.MetadataFormatCollectionRelation; +import org.gcube.vremanagement.vremodeler.stubs.MetadataFormatItem; +import org.gcube.vremanagement.vremodeler.stubs.MetadataFormatRelation; +import org.gcube.vremanagement.vremodeler.stubs.MetadataFormatResponse; +import org.gcube.vremanagement.vremodeler.stubs.Report; +import org.gcube.vremanagement.vremodeler.stubs.RunningInstance; +import org.gcube.vremanagement.vremodeler.stubs.VREDescription; +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +/** + * + * @author Lucio Lelii + * + */ +public class Util { + + + private static final GCUBELog logger = new GCUBELog(ModelerService.class.getName()); + + /** + * it creates the XML output for VDLGenerator + * + * @param res the result set of the query on database + * @return String the XML + */ + public static List prepareCollections(ResultSet res, ArrayList relatedCollection){ + + List collectionList= new ArrayList(); + try{ + while (res.next()){ + CollectionType collection= new CollectionType(); + collection.setId(res.getString(1)); + collection.setName(res.getString(2)); + Calendar creationTime = Calendar.getInstance(); + creationTime.setTimeInMillis(Long.parseLong(res.getString(5))); + Calendar lastUpdateTime = Calendar.getInstance(); + lastUpdateTime.setTimeInMillis(Long.parseLong(res.getString(6))); + collection.setInfo(new CollectionTypeInfo(creationTime, res.getString(3),lastUpdateTime, Integer.parseInt(res.getString(4)))); + collection.setSelected(relatedCollection.contains(res.getString(1))); + collectionList.add(collection); + } + }catch(SQLException e){ + logger.error("database error "+e.getMessage()); + e.printStackTrace(); + } + + return collectionList; + } + + + /** + * + * @param res + * @param relatedGHNs + * @param candidateGHN + * @return + */ + public static List prepareGHNs(ResultSet res, ArrayList relatedGHNs, String candidateGHN){ + List ghnTypeList= new ArrayList(); + try{ + ResultSet riRes; + while (res.next()){ + riRes= DBInterface.queryDB("select RI.id, RI.name, RI.class from RUNNINGINSTANCE as RI, GHNRELATEDRI as REL where REL.GHNID='"+res.getString("ID")+"' and REL.RIID=RI.ID"); + + int risNum=0; + List riList= new ArrayList(); + while (riRes.next()){ + if (!ServiceContext.getContext().getBaseServiceForGhn().contains(new ServicePair(riRes.getString(2),riRes.getString(3)))) + risNum++; + riList.add(new RunningInstance(riRes.getString(3),riRes.getString(2))); + } + GHNType ghn= new GHNType(); + ghn.setId(res.getString(1)); + ghn.setSelectable(!(risNum>0)); + ghn.setVreManagerUse(candidateGHN.compareTo(res.getString("ID"))==0); + ghn.setHost(res.getString(2)); + ghn.setSecurity(res.getString(3)); + ghn.setUpTime(res.getString(4)); + ghn.setMemory(new GHNTypeMemory(res.getString(7),res.getString(5),res.getString(6))); + ghn.setSite(new GHNTypeSite(res.getString(9),res.getString(10),res.getString(8))); + ghn.setRelatedRIs(riList.toArray(new RunningInstance[riList.size()])); + ghnTypeList.add(ghn); + } + }catch(SQLException e){ + logger.error("exception reised getting data from database",e); + } + return ghnTypeList; + } + + private static List getDistinctObjects(Collection list){ + List tmpList= new ArrayList(); + for (T el: list) + if (!tmpList.contains(el)) tmpList.add(el); + return tmpList; + } + + /** + * + * @param res + * @return + */ + public static MetadataFormatResponse prepareMCFormat(Hashtable> nativeMetadataFormat, Hashtable> selectedMetadataFormat){ + + List mdflistMultiple= new ArrayList(); + for (List mftmpList: nativeMetadataFormat.values()) + mdflistMultiple.addAll(mftmpList); + List totalMDF= getDistinctObjects(mdflistMultiple); + + List metadataFormatItemList= new ArrayList(); + List metadataFormatRelationList= new ArrayList(); + + try{ + + for (MetadataFormat mf: totalMDF) + metadataFormatItemList.add(new MetadataFormatItem( mf.getId(),mf.getLanguage(),mf.getName(),mf.getSchemaURI().toString())); + + //setting the native MDF + for(ModelerCollection key: nativeMetadataFormat.keySet()){ + MetadataFormatCollectionRelation mfCollectionRelation= new MetadataFormatCollectionRelation(); + mfCollectionRelation.setCollId(key.getId()); + mfCollectionRelation.setDescription(key.getDescription()); + mfCollectionRelation.setName(key.getName()); + + List mfList= new ArrayList(); + for(MetadataFormat mf: nativeMetadataFormat.get(key)) + if(selectedMetadataFormat.isEmpty() || ((selectedMetadataFormat.get(key)!=null) && selectedMetadataFormat.get(key).contains(mf))) + mfList.add(new MetadataFormatRelation(mf.getId(),true, true)); + else mfList.add(new MetadataFormatRelation(mf.getId(),true, false)); + + mfCollectionRelation.setMfList(mfList.toArray(new MetadataFormatRelation[mfList.size()])); + metadataFormatRelationList.add(mfCollectionRelation); + } + }catch(Exception e){ + logger.warn("error getting metadataFormats",e); + } + return new MetadataFormatResponse(metadataFormatRelationList.toArray(new MetadataFormatCollectionRelation[metadataFormatRelationList.size()]),metadataFormatItemList.toArray(new MetadataFormatItem[metadataFormatItemList.size()])); + } + + /** + * + * @return the XML representing the quality string + */ + public static String prepareQualityXML(){ + StringBuilder qualityString=new StringBuilder(); + qualityString.append(""); + qualityString.append("Response TimeThis quality parameter indicates the importance of response time (i.e., the delay from a function request to the reception of the response) "); + qualityString.append("in selecting the resource (both in number and type) needed to satisfy the Digital Library definition criteria. E.g., the specification of a 100% response time will result in a maximization of the resources "); + qualityString.append("allocated as to minimise the response time. *"); + qualityString.append("RobustnessThis quality parameter indicates the importance of robustness (i.e., the resilience to faults) in selecting the resource (both in number and type)"); + qualityString.append(" needed to satisfy the Digital Library definition criteria. E.g., the specification of a 100% robustness will result in a maximisation of the resources allocated as to minimise service unavailability.*"); + qualityString.append("ScalabilityThis quality parameter indicates the importance of scalability (i.e., the capability to increase Digital Library Capacity as much as needed) in selecting the resource "); + qualityString.append("(both in number and type) needed to satisfy the Digital Library definition criteria. E.g., the specification of a 100% scalability will result in a maximisztion of the resources allocated as to minimise the response time."); + qualityString.append("*"); + qualityString.append("Re-useThis quality parameter indicates the willingness to re-use existing resources (running instances, indexes, etc.) across various Digital Libraries. The specified "); + qualityString.append("percentage represents the degree of re-use of existing assets in concretely implementing the Digital Library.*"); + qualityString.append("CapacityThis quality parameter indicates the importance of capacity (i.e., the amount of resources allocated to the Digital Library) in selecting the resource (both in number and type) "); + qualityString.append("needed to satisfy the Digital Library definition criteria. E.g., the specification of a 100% capacity will result in a maximization of the amount of resources allocated to the Digital Library."); + qualityString.append(" *"); + qualityString.append("SecurityA true/false quality parameter indicates whether the operations have to be executed in a fully authorised and authenticated environment (true value) or "); + qualityString.append("not (false value)YesNo"); + qualityString.append(""); + return qualityString.toString(); + } + + + /** + * + * @param res + * @param selectedFunct + * @param selectedCS + * @return + */ + public static List prepareFunctionalities(ResultSet res, ArrayList selectedFunct, ArrayList selectedCS){ + + List functionalityItemList= new ArrayList(); + try { + while(res.next()){ + FunctionalityItem functionlityItem= new FunctionalityItem(); + functionlityItem.setId(res.getInt(1)); + functionlityItem.setName(res.getString(2)); + functionlityItem.setSelected(selectedFunct.contains(res.getInt(1))); + functionlityItem.setDescription(res.getString(3)); + + List subFunctionalities= new ArrayList(); + + ResultSet subFunctRes=DBInterface.queryDB("select * from FUNCTIONALITY where father='"+res.getInt(1)+"';"); + while(subFunctRes.next()){ + FunctionalityItem subFunctionalityItem= new FunctionalityItem(); + subFunctionalityItem.setId(subFunctRes.getInt(1)); + subFunctionalityItem.setName(subFunctRes.getString(2)); + subFunctionalityItem.setDescription(subFunctRes.getString(3)); + subFunctionalityItem.setSelected(selectedFunct.contains(subFunctRes.getInt(1))); + subFunctionalities.add(subFunctionalityItem); + } + functionlityItem.setChilds(subFunctionalities.toArray(new FunctionalityItem[subFunctionalities.size()])); + functionalityItemList.add(functionlityItem); + } + } catch (SQLException e) { + logger.error("DB error preparing Functionalities",e); + + } + + return functionalityItemList; + } + + /** + * + * @param res + * @return a String representing the message + * @throws Exception + */ + public static VREDescription prepareVREDescription(ResultSet res) throws Exception{ + VREDescription vreDescription= new VREDescription(); + + if (res.next()){ + vreDescription.setName(res.getString(2)); + vreDescription.setDescription(res.getString(3)); + vreDescription.setDesigner(res.getString(4)); + vreDescription.setManager(res.getString(5)); + Calendar calendarStart= Calendar.getInstance(); + calendarStart.setTime(res.getDate(6)); + vreDescription.setStartTime(calendarStart); + Calendar calendarEnd= Calendar.getInstance(); + calendarEnd.setTime(res.getDate(7)); + vreDescription.setEndTime(calendarEnd); + }else{ + Calendar calendarStart= Calendar.getInstance(); + Calendar calendarEnd= Calendar.getInstance(); + calendarEnd.add(Calendar.YEAR, 1); + vreDescription.setName(null); + vreDescription.setDescription(null); + vreDescription.setDesigner(null); + vreDescription.setManager(null); + vreDescription.setStartTime(calendarStart); + vreDescription.setEndTime(calendarEnd); + } + return vreDescription; + } + + /** + * + * @param res + * @return + * @throws Exception + */ + public static List prepareVREsList(ResultSet res) throws Exception{ + List reportList= new ArrayList(); + while (res.next()){ + Report reportItem= new Report(); + reportItem.setId(res.getString(4)); + reportItem.setDescription(res.getString(2)); + reportItem.setName(res.getString(1)); + reportItem.setState(res.getString(3)); + reportList.add(reportItem); + } + return reportList; + } + + /** + * transform a Document into string + * + * @param doc Document + * @return a String + */ + public static String docToString(Document doc){ + + String temp= null; + try{ + DOMSource domSource = new DOMSource(doc); + + TransformerFactory tf = TransformerFactory.newInstance(); + Transformer serializer = tf.newTransformer(); + serializer.setOutputProperty("encoding", "UTF-8"); + serializer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes" ); + StringWriter sw= new StringWriter(); + StreamResult sr= new StreamResult(sw); + serializer.transform(domSource, sr); + temp=sr.getWriter().toString(); + }catch(Exception e){ + logger.error("transformation to String Error"); + e.printStackTrace(); + } + return temp; + } + + /** + * + * @param doc the root Document + * @param root the element tag name + * @param elements elements to add + * @return the result element + */ + public static Element addElements(Document doc, String root, Element[] elements){ + Element returnEl= doc.createElement(root); + for (Element el: elements){ + returnEl.appendChild(el); + } + return returnEl; + } + + /** + * + * @param doc the root Document + * @param Tag the element tag name + * @param text the text to add at the element + * @return the result element + */ + public static Element createTextElement(Document doc, String tag, String text, Couple ... attributes ){ + Element returnEl= doc.createElement(tag); + if (attributes!=null){ + for (Couple attribute : attributes){ + returnEl.setAttribute(attribute.first, attribute.second); + } + } + if (text!=null) returnEl.appendChild(doc.createTextNode(text)); + return returnEl; + } + +} diff --git a/src/org/gcube/vremanagement/vremodeler/impl/util/VREManagerServiceHandler.java b/src/org/gcube/vremanagement/vremodeler/impl/util/VREManagerServiceHandler.java index 3fa2964..eccc398 100644 --- a/src/org/gcube/vremanagement/vremodeler/impl/util/VREManagerServiceHandler.java +++ b/src/org/gcube/vremanagement/vremodeler/impl/util/VREManagerServiceHandler.java @@ -12,8 +12,8 @@ import org.gcube.common.core.resources.GCUBERunningInstance; import org.gcube.common.core.scope.GCUBEScope; import org.gcube.common.core.utils.handlers.GCUBEServiceClient; import org.gcube.common.core.utils.handlers.GCUBEServiceHandler; -import org.gcube.vremanagement.vremanager.stubs.vremanager.VREManagerPortType; -import org.gcube.vremanagement.vremanager.stubs.vremanager.service.VREManagerServiceAddressingLocator; +import org.gcube.vremanagement.resourcemanager.stubs.resourcemanager.ResourceManagerPortType; +import org.gcube.vremanagement.resourcemanager.stubs.resourcemanager.service.ResourceManagerServiceAddressingLocator; import org.gcube.vremanagement.vremodeler.impl.ServiceContext; public abstract class VREManagerServiceHandler extends GCUBEServiceHandler { @@ -64,18 +64,18 @@ public abstract class VREManagerServiceHandler extends GCUBEServiceHandler }catch(Exception e){logger.error(e); throw e;} } - protected abstract T makeCall(VREManagerPortType mbportType) throws Exception; + protected abstract T makeCall(ResourceManagerPortType rmPortType) throws Exception; protected void interact(EndpointReferenceType epr) throws Exception{ - VREManagerPortType vmpt= null; + ResourceManagerPortType rmpt= null; try{ - VREManagerServiceAddressingLocator vmsal= new VREManagerServiceAddressingLocator(); - vmpt= vmsal.getVREManagerPortTypePort(epr); - vmpt = GCUBERemotePortTypeContext.getProxy(vmpt,scope, Integer.parseInt((String)ServiceContext.getContext().getProperty("vremanagerTimeout", true))); + ResourceManagerServiceAddressingLocator vmsal= new ResourceManagerServiceAddressingLocator(); + rmpt= vmsal.getResourceManagerPortTypePort(epr); + rmpt = GCUBERemotePortTypeContext.getProxy(rmpt,scope, Integer.parseInt((String)ServiceContext.getContext().getProperty("resourceManagerTimeout", true))); this.usedhost= epr.getAddress().getHost(); - this.setReturnValue(this.makeCall(vmpt)); + this.setReturnValue(this.makeCall(rmpt)); }catch(Exception e){e.printStackTrace();throw e; } } diff --git a/src/org/gcube/vremanagement/vremodeler/impl/util/XMLUtil.java b/src/org/gcube/vremanagement/vremodeler/impl/util/XMLUtil.java deleted file mode 100644 index 86588c0..0000000 --- a/src/org/gcube/vremanagement/vremodeler/impl/util/XMLUtil.java +++ /dev/null @@ -1,486 +0,0 @@ -package org.gcube.vremanagement.vremodeler.impl.util; - -import java.io.StringWriter; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Date; -import java.util.Hashtable; -import java.util.List; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.transform.OutputKeys; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.stream.StreamResult; -import org.gcube.common.core.utils.logging.GCUBELog; -import org.gcube.vremanagement.vremodeler.db.DBInterface; -import org.gcube.vremanagement.vremodeler.impl.ModelerService; -import org.gcube.vremanagement.vremodeler.impl.ServiceContext; -import org.gcube.vremanagement.vremodeler.resources.MetadataFormat; -import org.w3c.dom.Document; -import org.w3c.dom.Element; - - - - - -/** - * - * @author Lucio Lelii - * - */ -public class XMLUtil { - - - private static final GCUBELog logger = new GCUBELog(ModelerService.class.getName()); - - /** - * it creates the XML output for VDLGenerator - * - * @param res the result set of the query on database - * @return String the XML - */ - public static String PrepareCollectionXML(ResultSet res, ArrayList relatedCollection){ - - Document doc= null; - try { - doc= DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); - } catch (ParserConfigurationException e1) { - logger.error("Error creating XML Message"); - e1.printStackTrace(); - } - - Element root= doc.createElement("ResultSet"); - SimpleDateFormat simpleDateFormat= new SimpleDateFormat("dd-MM-yyyy 'at' HH:mm z"); - try{ - while (res.next()){ - Element collection = addElements(doc, "Collection", - new Element[]{createTextElement(doc, "ID", res.getString(1)), - createTextElement(doc, "Name", res.getString(2)), - addElements(doc, "Info", - new Element[]{ - createTextElement(doc, "Description",res.getString(3)), - createTextElement(doc, "NumberOfMembers",res.getString(4)), - createTextElement(doc, "CreationTime",simpleDateFormat.format(new Date(Long.parseLong(res.getString(5))))), - createTextElement(doc, "LastUpdateTime",simpleDateFormat.format(new Date(Long.parseLong(res.getString(6))))) - }), - createTextElement(doc, "Selected",relatedCollection.contains(res.getString(1)) ? "true" : "false") }); - root.appendChild(collection); - } - }catch(SQLException e){ - logger.error("database error "+e.getMessage()); - e.printStackTrace(); - } - doc.appendChild(root); - //logger.debug("VDLMODEL: request collection XML: "+temp); - return docToString(doc); - } - - - - @SuppressWarnings("unchecked") - public static String PrepareGHNsXML(ResultSet res, ArrayList relatedGHNs, String candidateGHN){ - Document doc= null; - try { - doc= DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); - } catch (ParserConfigurationException e1) { - logger.error("Error creating XML Message"); - e1.printStackTrace(); - } - Element root= doc.createElement("ResultSet"); - - ResultSet riRes; - - try{ - while (res.next()){ - riRes= DBInterface.queryDB("select RI.id, RI.name, RI.class from RUNNINGINSTANCE as RI, GHNRELATEDRI as REL where REL.GHNID='"+res.getString("ID")+"' and REL.RIID=RI.ID"); - Element risElement=doc.createElement("RunningInstances"); - int risNum=0; - while (riRes.next()){ - if (!ServiceContext.getContext().getBaseServiceForGhn().contains(new ServicePair(riRes.getString(2),riRes.getString(3)))) - risNum++; - Element riElement=addElements(doc, "RunningInstance", new Element[]{ - createTextElement(doc, "Name",riRes.getString(2)), - createTextElement(doc, "Class",riRes.getString(3)) - }); - risElement.appendChild(riElement); - } - - Element ghnEl = addElements(doc, "GHN", new Element[]{ - createTextElement(doc, "ID",res.getString(1),new Couple("selectable", risNum>0?"false":"true"),new Couple("VREManagerUse",(candidateGHN.compareTo(res.getString("ID"))==0?"true":"false"))), - createTextElement(doc, "Host",res.getString(2)), - addElements(doc, "Info", new Element[]{ - risElement, - createTextElement(doc, "Security", res.getString(3)), - createTextElement(doc, "UpTime", res.getString(4)), - addElements(doc, "Memory", new Element[]{ - createTextElement(doc, "VirtualAvailable", res.getString(5)), - createTextElement(doc, "VirtualSize", res.getString(6)), - createTextElement(doc, "LocalAvailableSpace", res.getString(7))}), - addElements(doc, "Site", new Element[]{ - createTextElement(doc, "Location", res.getString(8)), - createTextElement(doc, "Country", res.getString(9)), - createTextElement(doc, "Domain", res.getString(10))}), - createTextElement(doc, "Libraries", null)}), - createTextElement(doc, "Selected", relatedGHNs.contains(res.getString("ID")) ? "true" : "false") - }); - - root.appendChild(ghnEl); - } - }catch(SQLException e){ - logger.error("database error "+e.getMessage()); - } - - doc.appendChild(root); - //logger.debug("VDLMODEL: request collection XML: "+temp); - - return docToString(doc); - } - - private static List getDistinctObjects(Collection list){ - List tmpList= new ArrayList(); - for (T el: list) - if (!tmpList.contains(el)) tmpList.add(el); - return tmpList; - } - - /** - * - * @param res - * @return - */ - public static String PrepareMCFormatXML(Hashtable> nativeMetadataFormat, Hashtable> selectedMetadataFormat){ - - Document doc= null; - try { - doc= DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); - } catch (ParserConfigurationException e1) { - logger.error("Error creating XML Message"); - e1.printStackTrace(); - } - //Hashtable>> MDFHash= new Hashtable>>(); - List mdflistMultiple= new ArrayList(); - for (List mftmpList: nativeMetadataFormat.values()) - mdflistMultiple.addAll(mftmpList); - List totalMDF= getDistinctObjects(mdflistMultiple); - - - Element collectionListEl= doc.createElement("CollectionList"); - Element mflEl= doc.createElement("MFL"); - - try{ - for (MetadataFormat mf: totalMDF) - { - - Element elementEl=addElements(doc, "Element", new Element[]{ - createTextElement(doc, "MFID", mf.getId()), - createTextElement(doc, "MFName", mf.getName()), - createTextElement(doc, "URI", mf.getSchemaURI().toString()), - createTextElement(doc, "Language", mf.getLanguage()) - }); - mflEl.appendChild(elementEl); - } - - //setting the native MDF - for(ModelerCollection key: nativeMetadataFormat.keySet()){ - Element collectionEl= addElements(doc, "Collection", new Element[]{ - createTextElement(doc,"CollectionID" , key.getId()), - createTextElement(doc,"Name" , key.getName()), - createTextElement(doc,"Description" , key.getDescription()) - }); - - - for(MetadataFormat mf: nativeMetadataFormat.get(key)){ - Element tmpEl; - if(selectedMetadataFormat.isEmpty() || ((selectedMetadataFormat.get(key)!=null) && selectedMetadataFormat.get(key).contains(mf))){ - tmpEl= addElements(doc, "MetadataFormat", new Element[]{ - createTextElement(doc, "Id", mf.getId()), - createTextElement(doc, "Selectable", "True"), - createTextElement(doc, "Selected", "True"), - }); - }else { - tmpEl= addElements(doc, "MetadataFormat", new Element[]{ - createTextElement(doc, "Id", mf.getId()), - createTextElement(doc, "Selectable", "True"), - createTextElement(doc, "Selected", "False"), - }); - } - collectionEl.appendChild(tmpEl); - } - collectionListEl.appendChild(collectionEl); - } - - - - //setting the derivable MDF - /* TODO: when metadataBroker will be ready for transformations - * while(resDerivable.next()){ - Element tmpKeyEl= addElements(doc, "Collection", new Element[]{ - createTextElement(doc,"CollectionID" , resDerivable.getString(1)), - createTextElement(doc,"Name" , resDerivable.getString(2)), - createTextElement(doc,"Description" , resDerivable.getString(3)) - }); - - Element tmpEl; - if(selectedMetadata.isEmpty() || !(selectedMetadata.containsKey(resDerivable.getString(1))) && (selectedMetadata.get(resDerivable.getString(1)).contains(resDerivable.getString(4)))) - tmpEl= addElements(doc, "MetadataFormat", new Element[]{ - createTextElement(doc, "Id", resDerivable.getString(4)), - createTextElement(doc, "Selectable", "True"), - createTextElement(doc, "Selected", "False"), - }); - else{ - tmpEl= addElements(doc, "MetadataFormat", new Element[]{ - createTextElement(doc, "Id", resDerivable.getString(4)), - createTextElement(doc, "Selectable", "False"), - createTextElement(doc, "Selected", "False"), - }); - } - //logger.debug("MDFProva: Derivable "+keyTemp+" "+temp); - if(MDFHash.contains(resDerivable.getString(1))) MDFHash.get(resDerivable.getString(1)).second.add(tmpEl); - else{ - tempArray=new ArrayList(); - tempArray.add(tmpEl); - MDFHash.put(resDerivable.getString(1), new Couple>(tmpKeyEl, tempArray) ); - } - } - */ - - }catch(Exception e){ - e.printStackTrace(); - } - - doc.appendChild(addElements(doc, "ResultSet", new Element[]{mflEl, collectionListEl})); - //logger.debug("VDLMODEL: request MCFormat XML "+resultString); - return docToString(doc); - } - - /** - * - * @return the XML representing the quality string - */ - public static String PrepareQualityXML(){ - StringBuilder qualityString=new StringBuilder(); - qualityString.append(""); - qualityString.append("Response TimeThis quality parameter indicates the importance of response time (i.e., the delay from a function request to the reception of the response) "); - qualityString.append("in selecting the resource (both in number and type) needed to satisfy the Digital Library definition criteria. E.g., the specification of a 100% response time will result in a maximization of the resources "); - qualityString.append("allocated as to minimise the response time. *"); - qualityString.append("RobustnessThis quality parameter indicates the importance of robustness (i.e., the resilience to faults) in selecting the resource (both in number and type)"); - qualityString.append(" needed to satisfy the Digital Library definition criteria. E.g., the specification of a 100% robustness will result in a maximisation of the resources allocated as to minimise service unavailability.*"); - qualityString.append("ScalabilityThis quality parameter indicates the importance of scalability (i.e., the capability to increase Digital Library Capacity as much as needed) in selecting the resource "); - qualityString.append("(both in number and type) needed to satisfy the Digital Library definition criteria. E.g., the specification of a 100% scalability will result in a maximisztion of the resources allocated as to minimise the response time."); - qualityString.append("*"); - qualityString.append("Re-useThis quality parameter indicates the willingness to re-use existing resources (running instances, indexes, etc.) across various Digital Libraries. The specified "); - qualityString.append("percentage represents the degree of re-use of existing assets in concretely implementing the Digital Library.*"); - qualityString.append("CapacityThis quality parameter indicates the importance of capacity (i.e., the amount of resources allocated to the Digital Library) in selecting the resource (both in number and type) "); - qualityString.append("needed to satisfy the Digital Library definition criteria. E.g., the specification of a 100% capacity will result in a maximization of the amount of resources allocated to the Digital Library."); - qualityString.append(" *"); - qualityString.append("SecurityA true/false quality parameter indicates whether the operations have to be executed in a fully authorised and authenticated environment (true value) or "); - qualityString.append("not (false value)YesNo"); - qualityString.append(""); - return qualityString.toString(); - } - - - /** - * - * @param res - * @param selectedFunct - * @param selectedCS - * @return - */ - @SuppressWarnings("unchecked") - public static String PrepareFunctionalityXML(ResultSet res, ArrayList selectedFunct, ArrayList selectedCS){ - - Document doc= null; - try { - doc= DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); - } catch (ParserConfigurationException e1) { - logger.error("Error creating XML Message"); - e1.printStackTrace(); - } - Element root= doc.createElement("Resultset"); - - try { - while(res.next()){ - Element functionalityEl= createTextElement(doc, "Functionality", null, new Couple("id", res.getInt(1)+""), - new Couple("name", res.getString(2)), - new Couple("enableCS", res.getInt(1)==10 ? "true": "false"), - new Couple("selected", selectedFunct.contains(res.getInt(1)) ? "true" : "false") - ); - - functionalityEl.appendChild(createTextElement(doc, "FunctionalityDescription", res.getString(3))); - - ResultSet subFunctRes=DBInterface.queryDB("select * from FUNCTIONALITY where father='"+res.getInt(1)+"';"); - while(subFunctRes.next()){ - Element subFunctEl=createTextElement(doc,"Functionality" , null, new Couple("id", subFunctRes.getInt(1)+""), - new Couple("name", subFunctRes.getString(2)), - new Couple("selected", selectedFunct.contains(subFunctRes.getInt(1)) ? "true" : "false")); - - subFunctEl.appendChild(createTextElement(doc, "FunctionalityDescription", subFunctRes.getString(3))); - functionalityEl.appendChild(addElements(doc, "child", new Element[]{subFunctEl})); - } - root.appendChild(functionalityEl); - } - } catch (SQLException e) { - logger.error("VDLModelService: DB error preparing XML for Functionality"); - e.printStackTrace(); - } - - try { - ResultSet csRes=DBInterface.queryDB("select * from cs;"); - if (csRes.next()){ - Element csEl= createTextElement(doc, "CS", null, new Couple("id", "-1"), new Couple("name", "Workflows"), new Couple("selected", "false")); - csEl.appendChild(createTextElement(doc,"CSDescription" , "This class of functions contains compound functions defined by aggregating existing functions in structured workflows as to deliver advanced features.")); - do{ - Element subCsEl= createTextElement(doc, "CS", null, new Couple("id", csRes.getString(1)), new Couple("name", csRes.getString(2)), new Couple("selected", selectedCS.contains(csRes.getString(1)) ? "true" : "false")); - subCsEl.appendChild(createTextElement(doc,"CSDescription" , csRes.getString(3))); - csEl.appendChild(addElements(doc, "child", new Element[]{subCsEl})); - }while (csRes.next()); - - root.appendChild(csEl); - } - - - } catch (SQLException e) { - logger.error("VDLModelService: DB error retreiving CS"); - e.printStackTrace(); - } - doc.appendChild(root); - return docToString(doc); - } - - /** - * - * @param res - * @return a String representing the message - * @throws Exception - */ - @SuppressWarnings("deprecation") - public static String PrepareVREModelXML(ResultSet res) throws Exception{ - Document doc= null; - try { - doc= DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); - } catch (ParserConfigurationException e1) { - logger.error("Error creating XML Message"); - e1.printStackTrace(); - } - Element root; - - if (res.next()){ - root= addElements(doc, "Resultset", new Element[]{ - createTextElement(doc, "Name",res.getString(2)), - createTextElement(doc, "Description",res.getString(3)), - createTextElement(doc, "VREDesigner",res.getString(4)), - createTextElement(doc, "VREManager",res.getString(5)), - createTextElement(doc, "StartTime",res.getDate(6).getTime()+""), - createTextElement(doc, "EndTime",res.getDate(7).getTime()+""), - }); - - }else{ - Date dateFrom=new Date(); - Date dateTo=new Date(); - dateTo.setYear(dateTo.getYear()+1); - root= addElements(doc, "Resultset", new Element[]{ - createTextElement(doc, "Name",null), - createTextElement(doc, "Description",null), - createTextElement(doc, "VREDesigner",null), - createTextElement(doc, "VREManager",null), - createTextElement(doc, "StartTime",dateFrom.getTime()+""), - createTextElement(doc, "EndTime",dateTo.getTime()+"") - }); - } - doc.appendChild(root); - return docToString(doc); - } - - - public static String PrepareAllVREsXML(ResultSet res) throws Exception{ - Document doc= null; - try { - doc= DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); - } catch (ParserConfigurationException e1) { - logger.error("Error creating XML Message"); - e1.printStackTrace(); - } - Element root= doc.createElement("ResultSet"); - Element vreEl; - while (res.next()){ - vreEl= addElements(doc, "VRE", new Element[]{ - createTextElement(doc, "Name",res.getString(1)), - createTextElement(doc, "Description",res.getString(2)), - createTextElement(doc, "State",res.getString(3)), - createTextElement(doc, "EPR",res.getString(4)) - }); - root.appendChild(vreEl); - } - - doc.appendChild(root); - return docToString(doc); - } - - /** - * transform a Document into string - * - * @param doc Document - * @return a String - */ - public static String docToString(Document doc){ - - String temp= null; - try{ - DOMSource domSource = new DOMSource(doc); - - TransformerFactory tf = TransformerFactory.newInstance(); - Transformer serializer = tf.newTransformer(); - serializer.setOutputProperty("encoding", "UTF-8"); - serializer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes" ); - StringWriter sw= new StringWriter(); - StreamResult sr= new StreamResult(sw); - serializer.transform(domSource, sr); - temp=sr.getWriter().toString(); - }catch(Exception e){ - logger.error("transformation to String Error"); - e.printStackTrace(); - } - return temp; - } - - /** - * - * @param doc the root Document - * @param root the element tag name - * @param elements elements to add - * @return the result element - */ - public static Element addElements(Document doc, String root, Element[] elements){ - Element returnEl= doc.createElement(root); - for (Element el: elements){ - returnEl.appendChild(el); - } - return returnEl; - } - - /** - * - * @param doc the root Document - * @param Tag the element tag name - * @param text the text to add at the element - * @return the result element - */ - public static Element createTextElement(Document doc, String tag, String text, Couple ... attributes ){ - Element returnEl= doc.createElement(tag); - if (attributes!=null){ - for (Couple attribute : attributes){ - returnEl.setAttribute(attribute.first, attribute.second); - } - } - if (text!=null) returnEl.appendChild(doc.createTextNode(text)); - return returnEl; - } - -} diff --git a/src/org/gcube/vremanagement/vremodeler/portallayout/GenericResourcePortlet.java b/src/org/gcube/vremanagement/vremodeler/portallayout/GenericResourcePortlet.java index 1cf3a83..0b23235 100644 --- a/src/org/gcube/vremanagement/vremodeler/portallayout/GenericResourcePortlet.java +++ b/src/org/gcube/vremanagement/vremodeler/portallayout/GenericResourcePortlet.java @@ -10,7 +10,7 @@ import org.gcube.common.core.resources.GCUBEGenericResource; import org.gcube.common.core.scope.GCUBEScope; import org.gcube.vremanagement.vremodeler.db.DBInterface; import org.gcube.vremanagement.vremodeler.impl.ServiceContext; -import org.gcube.vremanagement.vremodeler.impl.util.XMLUtil; +import org.gcube.vremanagement.vremodeler.impl.util.Util; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -25,10 +25,10 @@ public class GenericResourcePortlet { ResultSet rs= DBInterface.queryDB("select DISTINCT pf.PORTLETCLASS from PORTLETRELTOFUNCT as pf, VRERELATEDFUNCT as vf where vf.vreid='"+vreId+"' and pf.FUNCID=vf.FUNCID"); Element root= doc.createElement("ListPortlets"); while(rs.next()) - root.appendChild(XMLUtil.createTextElement(doc, "Portlet", rs.getString(1))); + root.appendChild(Util.createTextElement(doc, "Portlet", rs.getString(1))); doc.appendChild(root); - resource.setBody(XMLUtil.docToString(doc)); + resource.setBody(Util.docToString(doc)); resource.setDescription("List of selectable Portlet for the VRE "+vreName); resource.setName("AvailablePortlets"); diff --git a/src/org/gcube/vremanagement/vremodeler/resources/handlers/MCollectionHandler.java b/src/org/gcube/vremanagement/vremodeler/resources/handlers/MCollectionHandler.java index a9eefbe..a2617c4 100644 --- a/src/org/gcube/vremanagement/vremodeler/resources/handlers/MCollectionHandler.java +++ b/src/org/gcube/vremanagement/vremodeler/resources/handlers/MCollectionHandler.java @@ -32,7 +32,7 @@ public class MCollectionHandler implements ResourceHandler { } public void drop(String resourceId) throws Exception { - // TODO Auto-generated method stub + DBInterface.deleteElement(tableName, "ID='"+resourceId+"'"); } public void initialize() throws Exception { diff --git a/src/org/gcube/vremanagement/vremodeler/stubs/VREState.java b/src/org/gcube/vremanagement/vremodeler/stubs/VREState.java new file mode 100644 index 0000000..925ac91 --- /dev/null +++ b/src/org/gcube/vremanagement/vremodeler/stubs/VREState.java @@ -0,0 +1,20 @@ +package org.gcube.vremanagement.vremodeler.stubs; + +public enum VREState { + + DEPLOYED("Deployed"), + IN_PROGRESS("In Progress"), + FAILED("Failed"), + PENDING("Pending"), + DEPLOYING("Deploying"); + + private String value; + + VREState(String value){ + this.value= value; + } + + public String getValue(){ + return this.value; + } +} diff --git a/src/org/gcube/vremanagement/vremodeler/test/ModelerTest.java b/src/org/gcube/vremanagement/vremodeler/test/ModelerTest.java index dfc7461..80f7379 100644 --- a/src/org/gcube/vremanagement/vremodeler/test/ModelerTest.java +++ b/src/org/gcube/vremanagement/vremodeler/test/ModelerTest.java @@ -17,7 +17,6 @@ import org.gcube.vremanagement.vremodeler.stubs.FunctionalityIDArray; import org.gcube.vremanagement.vremodeler.stubs.GHNArray; import org.gcube.vremanagement.vremodeler.stubs.ModelerFactoryPortType; import org.gcube.vremanagement.vremodeler.stubs.ModelerServicePortType; -import org.gcube.vremanagement.vremodeler.stubs.VRERequest; import org.gcube.vremanagement.vremodeler.stubs.service.ModelerFactoryServiceAddressingLocator; import org.gcube.vremanagement.vremodeler.stubs.service.ModelerServiceAddressingLocator; @@ -27,6 +26,7 @@ public class ModelerTest { public static void main(String[] args) { try{ + /* ISClient client = GHNContext.getImplementation(ISClient.class); GCUBERIQuery riquery= client.getQuery(GCUBERIQuery.class); riquery.addAtomicConditions(new AtomicCondition("//ServiceName", "VREModeler"));