diff --git a/etc/profile.xml b/etc/profile.xml index 5f62629..e8b3180 100644 --- a/etc/profile.xml +++ b/etc/profile.xml @@ -16,12 +16,24 @@ VREManagement - VREModeler + VREModeler + 1.0.0 VREModeler-stubs 1.0.0 false + + + + VREManagement + VREManager + 1.0.0 + + VREManager-stubs + 1.00.02 + + false org.gcube.vremanagement.vremodeler.gar diff --git a/src/org/gcube/vremanagement/vremodeler/impl/ModelerService.java b/src/org/gcube/vremanagement/vremodeler/impl/ModelerService.java index 7b1a44c..a16573e 100644 --- a/src/org/gcube/vremanagement/vremodeler/impl/ModelerService.java +++ b/src/org/gcube/vremanagement/vremodeler/impl/ModelerService.java @@ -3,9 +3,13 @@ package org.gcube.vremanagement.vremodeler.impl; import java.rmi.RemoteException; import java.sql.Date; import java.sql.ResultSet; +import java.sql.SQLException; import java.util.ArrayList; import java.util.Hashtable; import java.util.List; + +import javax.xml.rpc.ServiceException; + import org.gcube.common.core.contexts.GHNContext; import org.gcube.common.core.faults.GCUBEFault; import org.gcube.common.core.informationsystem.client.AtomicCondition; @@ -14,6 +18,7 @@ import org.gcube.common.core.informationsystem.client.queries.GCUBERIQuery; import org.gcube.common.core.resources.GCUBECollection; import org.gcube.common.core.resources.GCUBEMCollection; import org.gcube.common.core.resources.GCUBERunningInstance; +import org.gcube.common.core.resources.impl.kxml.KGCUBEResource; import org.gcube.common.core.types.VOID; import org.gcube.common.core.utils.logging.GCUBELog; import org.gcube.vremanagement.vremanager.stubs.vremanager.AddResourcesParameters; @@ -38,11 +43,11 @@ import org.globus.wsrf.encoding.SerializationException; public class ModelerService { private static final GCUBELog logger = new GCUBELog(ModelerService.class.getName()); - + protected ModelerResource getResource() throws ResourceException{ return (ModelerResource) ModelerContext.getPortTypeContext().getWSHome().find(); } - + /** * * @param request void @@ -51,7 +56,7 @@ public class ModelerService { * */ public void setVREModel(VRERequest request) throws GCUBEFault{ - + Date dateFrom=null, dateTo=null; ResultSet res=null; try { @@ -60,33 +65,33 @@ public class ModelerService { { dateFrom=new Date(request.getStartTime()); dateTo=new Date(request.getEndTime()); - DBInterface.queryDB("update VRE set name='"+request.getVREName()+"', description='"+request.getVREDescription()+"', dldesigner='"+request.getVREDesigner()+"', dlmanager= '"+request.getVREManager()+"', intervalfrom='"+dateFrom+"', intervalto='"+dateTo+"' where DL.id='"+getResource().getID()+"'; "); + 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()+"'; "); }else{ dateFrom=new Date(request.getStartTime()); dateTo=new Date(request.getEndTime()); String eprToString; try { eprToString = ObjectSerializer.toString(getResource().getEPR()); - //logger.debug("EPR: "+eprToString); + //logger.debug("EPR: "+eprToString); } catch (SerializationException e) { //logger.error("VDL Model Service: error serializing EPR"); throw new RemoteException("VDL Model Service: error serializing EPR",e); } - + DBInterface.ExecuteUpdate("insert into VRE values('"+getResource().getID()+"','"+request.getVREName()+"','"+request.getVREDescription()+"','"+request.getVREDesigner()+"','"+request.getVREManager()+"','"+dateFrom+"','"+dateTo+"','"+eprToString+"','In Progress'); "); } - - + + } catch (Exception e) { //logger.error(e.getMessage()); //e.printStackTrace(); throw new GCUBEFault(e); } - + } - - - + + + /** * * @@ -95,11 +100,11 @@ public class ModelerService { * @throws RemoteException - */ public String getVREModel(VOID var) throws GCUBEFault{ - - + + String toReturn =null; ResultSet res=null; - + //logger.debug("Request DL with ID "+ID); try { String ID=getResource().getId(); @@ -112,7 +117,7 @@ public class ModelerService { } return toReturn; } - + /** * return an XML containing the DHN list * @@ -127,19 +132,19 @@ public class ModelerService { try{ DBInterface.connect(); res= DBInterface.queryDB("select * from GHN;"); - + ResultSet resRelated= DBInterface.queryDB("select ghnid from VRERELATEDGHN where VRERELATEDGHN.vreid='"+getResource().getId()+"';"); while(resRelated.next()) relatedGHN.add(resRelated.getString(1)); - - + + }catch(Exception e) { logger.error("VDL Model: error retreiving GHNs"+e); throw new GCUBEFault(e);} return XMLUtil.PrepareGHNsXML(res, relatedGHN); } - - + + /** * Set the selected DHN * @@ -151,9 +156,9 @@ public class ModelerService { try{ String instanceID=(String) getResource().getId(); DBInterface.ExecuteUpdate("DELETE FROM VRERELATEDDHN WHERE VRERELATEDDHN.vreid='"+instanceID+"';"); - + String dlKey=instanceID; - + ArrayList> values= new ArrayList>(request.getGHNElement().length); ArrayList row=null; for (int i=0; i> values= new ArrayList>(request.getCollectionElement().length); ArrayList row=null; for (int i=0; i> selectedMetadataStructure= new Hashtable>(); boolean enter=false; try{ DBInterface.connect(); - + collectionRelated= DBInterface.queryDB("select VRERELATEDCOLLECTION.collid from VRERELATEDCOLLECTION where DLRELATEDCOLLECTION.dlid='"+getResource().getId()+"';"); //select only the resuls related with selected collection preparedWhere= " and ( "; @@ -248,9 +253,9 @@ public class ModelerService { enter=true; preparedWhere+= " mdc.collid='"+collectionRelated.getString(1)+"' or "; } - + ResultSet metadataSelected= DBInterface.queryDB("select collid, mfid from VRERELATEDMETADATAFORMAT where vreid='"+getResource().getID()+"';"); - + //recovering possible previsious selection for metadataFormat while (metadataSelected.next()){ if(selectedMetadataStructure.containsKey(metadataSelected.getString(1))) @@ -261,30 +266,30 @@ public class ModelerService { selectedMetadataStructure.put(metadataSelected.getString(1), temp); } } - + if(!enter) throw new RemoteException("no collection selected for this DL"); else preparedWhere=preparedWhere.substring(0, preparedWhere.length()-4)+") "; - + totalMF = DBInterface.queryDB("select MDFORMAT.id, MDFORMAT.name, MDFORMAT.schemauri, MDFORMAT.language from MDFORMAT;"); - - + + 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+";"); - + "ON COLLECTION.id = MDCOLLECTION.relatedcollectionid) as MDC where COLLMDF.mdcollid= MDC.mdid "+preparedWhere+";"); + }catch(Exception e) {//logger.error("ModelService: "+e.getMessage()); throw new GCUBEFault(e); } - - + + return XMLUtil.PrepareMCFormatXML(null, null, null, selectedMetadataStructure); } - - + + /** * * Sets selected Metadata Format @@ -298,7 +303,7 @@ public class ModelerService { DBInterface.ExecuteUpdate("DELETE FROM VRERELATEDMETADATAFORMAT WHERE VRERELATEDMETADATAFORMAT.vreid='"+getResource().getId()+"';"); //String[] singleElement; String key=(String) getResource().getId(); - + //logger.debug(request.getCollectionIDArray().length+" "+request.getMdFormatIDArray().length+" "+request.getCheckedArray().length+" "+request.getCheckedArray(0).getCheckedRowElement().length); ArrayList> values= new ArrayList>(request.getCollectionIDArray().length); ArrayList row=null; @@ -311,15 +316,15 @@ public class ModelerService { row.add(request.getCollectionIDArray(i)); row.add(request.getMdFormatIDArray(j)); values.add(row); - + } } - + DBInterface.InsertInto("VRERELATEDMETADATAFORMAT", values); }catch(Exception e){throw new GCUBEFault(e);} } - - + + /** * Return an xml with the selectable functionalities * String @@ -329,13 +334,13 @@ public class ModelerService { * @throws RemoteException - */ public String getFunctionality(VOID var) throws GCUBEFault { - + ResultSet resFunct=null; ResultSet selectedFuncRes=null; ResultSet selectedCSRes=null; ArrayList selectedFunctionality= new ArrayList(); ArrayList selectedCS= new ArrayList(); - + try { DBInterface.connect(); resFunct= DBInterface.queryDB("select * from functionality where father is null;"); @@ -350,11 +355,11 @@ public class ModelerService { e.printStackTrace(); throw new GCUBEFault(e); } - + return XMLUtil.PrepareFunctionalityXML(resFunct, selectedFunctionality, selectedCS); } - - + + /** * * @@ -366,11 +371,11 @@ public class ModelerService { try{ DBInterface.ExecuteUpdate("DELETE FROM VRERELATEDFUNCT WHERE VRERELATEDFUNCT.vreid='"+getResource().getId()+"';"); DBInterface.ExecuteUpdate("DELETE FROM VRERELATEDCS WHERE VRERELATEDCS.vreid='"+getResource().getId()+"';"); - - + + String dlKey=(String) getResource().getId(); //logger.debug("KEY: "+dlKey); - + if (request.getFunctionalityIDElement()!=null){ ArrayList> values= new ArrayList>(request.getFunctionalityIDElement().length); ArrayList row=null; @@ -381,15 +386,15 @@ public class ModelerService { row.add(request.getFunctionalityIDElement()[i]); values.add(row); } - + DBInterface.InsertInto("VRERELATEDFUNCT", values); } - + if (request.getCsIDElement()!=null) { ArrayList> values= new ArrayList>(request.getCsIDElement().length); ArrayList row=null; - + for (int i=0; i(2); @@ -397,13 +402,13 @@ public class ModelerService { row.add(request.getCsIDElement()[i]); values.add(row); } - + DBInterface.InsertInto("VRERELATEDCS", values); } }catch(Exception e){throw new GCUBEFault(e);} - + } - + /** * Return an XML with Quality parameter to insert * @@ -414,8 +419,8 @@ public class ModelerService { public String getQuality(VOID var) throws GCUBEFault{ return XMLUtil.PrepareQualityXML(); } - - + + /** * Sets Quality parameters * @@ -423,9 +428,9 @@ public class ModelerService { * @throws RemoteException - */ public void setQuality(String request) throws GCUBEFault{ - + } - + /** * * set the DL state to Pending @@ -439,7 +444,7 @@ public class ModelerService { DBInterface.ExecuteUpdate("UPDATE VRE SET STATUS='Pending' WHERE VRE.id='"+getResource().getId()+"';"); }catch(Exception e){throw new GCUBEFault(e);} } - + /** * * @param request @@ -447,103 +452,121 @@ public class ModelerService { * @throws RemoteException - */ public void deployVRE(VOID var) throws GCUBEFault{ + boolean contactedVRE= false; try { DBInterface.ExecuteUpdate("UPDATE VRE SET STATUS='Deploying' WHERE VRE.id='"+getResource().getId()+"';"); } catch (ResourceException e1) { throw new GCUBEFault(e1); } - + VREManagerServiceAddressingLocator vreManAL= new VREManagerServiceAddressingLocator(); VREManagerPortType vreManagerPT= null; - try { + + List ris= null; + try{ ISClient client= GHNContext.getImplementation(ISClient.class); GCUBERIQuery query=client.getQuery(GCUBERIQuery.class); query.addAtomicConditions(new AtomicCondition("//ServiceName", "VREManager")); query.addAtomicConditions(new AtomicCondition("//ServiceClass", "VREManagement")); - List ris= client.execute(query, ServiceContext.getContext().getScope()); + ris = client.execute(query, ServiceContext.getContext().getScope()); + }catch (Exception e) { logger.error("Error Excecuting Query"); throw new GCUBEFault(e);} - for (GCUBERunningInstance ri: ris){ - try{ - vreManagerPT=vreManAL.getVREManagerPortTypePort(ri.getAccessPoint().getEndpoint("gcube/vremanagement/VREManager")); - - - - //TODO: set properties values - OptionsParameters ops=new OptionsParameters(); - ScopeOption[] scopeOptionList= new ScopeOption[6]; - ScopeOption soDesigner= new ScopeOption(); - soDesigner.setName("DESIGNER"); - scopeOptionList[0]= soDesigner; - - ScopeOption soCreator= new ScopeOption(); - soCreator.setName("CREATOR"); - scopeOptionList[1]= soCreator; - - ScopeOption soEndtime= new ScopeOption(); - soEndtime.setName("ENDTIME"); - scopeOptionList[2]= soEndtime; - - ScopeOption soStarttime= new ScopeOption(); - soStarttime.setName("STARTTIME"); - scopeOptionList[3]= soStarttime; - - ScopeOption soDescription= new ScopeOption(); - soDescription.setName("DESCRIPTION"); - scopeOptionList[4]= soDescription; - - ScopeOption soDisplayname= new ScopeOption(); - soDisplayname.setName("DISPLAYNAME"); - scopeOptionList[5]= soDisplayname; - - ops.setScopeOptionList(scopeOptionList); - - vreManagerPT.setScopeOptions(ops); - - //ResourceItem resItem= new ResourceItem(); - - AddResourcesParameters arp= new AddResourcesParameters(); - ResourceList rl= new ResourceList(); - List resItemList= new ArrayList(); - ResourceItem resItem= null; - - //retrieving Collection - ResultSet resRelatedCol =DBInterface.queryDB("select DLRELATEDCOLLECTION.collid from DLRELATEDCOLLECTION where DLRELATEDCOLLECTION.dlid='"+getResource().getId()+"';"); - while (resRelatedCol.next()){ - resItem= new ResourceItem(); - resItem.setID(resRelatedCol.getString(1)); - resItem.setType(GCUBECollection.TYPE); - } - - - ResultSet resRelatedMetadataCol =DBInterface.queryDB("select VRERELATEDCOLLECTION.collid from DLRELATEDCOLLECTION where VRERELATEDCOLLECTION.dlid='"+getResource().getId()+"';"); - while (resRelatedCol.next()){ - resItem= new ResourceItem(); - resItem.setID(resRelatedCol.getString(1)); - resItem.setType(GCUBEMCollection.TYPE); - } - - - - //retrieving MetadataCollection - - - - - //vreManagerPT.addResources(arg0) - - - - - - }catch(Exception e){logger.debug("trying next ri");} - } - - - } catch (Exception e) { - throw new GCUBEFault("cannot retrieve VREManager"); + String resourceID; + try { + resourceID = getResource().getId(); + } catch (ResourceException e) { + logger.error("Error retrieving the Resource Query"); throw new GCUBEFault(e); } - /* + + for (GCUBERunningInstance ri: ris){ + try{ + vreManagerPT=vreManAL.getVREManagerPortTypePort(ri.getAccessPoint().getEndpoint("gcube/vremanagement/VREManager")); + + OptionsParameters ops; + try{ + ResultSet resGenericInfo=DBInterface.queryDB("select * from VRE where VRE.id='"+resourceID+"'; "); + + if (!resGenericInfo.next()) throw new GCUBEFault("The VRE with ID "+resourceID+" cannot be retrieved"); + //TODO: set properties values + ops=new OptionsParameters(); + ScopeOption[] scopeOptionList= new ScopeOption[6]; + ScopeOption soDesigner= new ScopeOption(); + soDesigner.setName("DESIGNER"); + soDesigner.setValue(resGenericInfo.getString("vredesigner")); + scopeOptionList[0]= soDesigner; + + ScopeOption soCreator= new ScopeOption(); + soCreator.setName("CREATOR"); + soCreator.setValue(resGenericInfo.getString("vremanager")); + scopeOptionList[1]= soCreator; + + ScopeOption soEndtime= new ScopeOption(); + soEndtime.setName("ENDTIME"); + soEndtime.setValue(KGCUBEResource.toXMLDateAndTime(resGenericInfo.getDate("IntervalTo"))); + scopeOptionList[2]= soEndtime; + + ScopeOption soStarttime= new ScopeOption(); + soStarttime.setName("STARTTIME"); + soStarttime.setValue(KGCUBEResource.toXMLDateAndTime(resGenericInfo.getDate("IntervalFrom"))); + scopeOptionList[3]= soStarttime; + + ScopeOption soDescription= new ScopeOption(); + soDescription.setName("DESCRIPTION"); + soDescription.setValue(resGenericInfo.getString("description")); + scopeOptionList[4]= soDescription; + + ScopeOption soDisplayname= new ScopeOption(); + soDisplayname.setName("DISPLAYNAME"); + soDisplayname.setValue(resGenericInfo.getString("name")); + scopeOptionList[5]= soDisplayname; + + ops.setScopeOptionList(scopeOptionList); + }catch(SQLException e) {logger.error("cannot retreive the VRE"); throw new GCUBEFault(e);} + //sending scope options + vreManagerPT.setScopeOptions(ops); + + + AddResourcesParameters arp= new AddResourcesParameters(); + ResourceList rl= new ResourceList(); + List resItemList= new ArrayList(); + ResourceItem resItem= null; + + //retrieving Collection + try{ + ResultSet resRelatedCol =DBInterface.queryDB("select VRERELATEDCOLLECTION.collid from VRERELATEDCOLLECTION where VRERELATEDCOLLECTION.dlid='"+resourceID+"';"); + while (resRelatedCol.next()){ + resItem= new ResourceItem(); + resItem.setID(resRelatedCol.getString(1)); + resItem.setType(GCUBECollection.TYPE); + resItemList.add(resItem); + } + }catch(SQLException sqle){logger.error("Error contacting HSQLDB");} + + /* + ResultSet resRelatedMetadataCol =DBInterface.queryDB("select VRERELATEDCOLLECTION.collid from DLRELATEDCOLLECTION where VRERELATEDCOLLECTION.dlid='"+getResource().getId()+"';"); + while (resRelatedCol.next()){ + resItem= new ResourceItem(); + resItem.setID(resRelatedCol.getString(1)); + resItem.setType(GCUBEMCollection.TYPE); + } + */ + + contactedVRE= true; + }catch(RemoteException re){logger.warn("Error Contacting VREManager, trying next RI"); contactedVRE= false;} + catch(ServiceException se1){logger.warn("Error Contacting VREManager, trying next RI"); contactedVRE= false;} + } + + if (!contactedVRE) { + logger.error("Error Contacting VREManager"); + throw new GCUBEFault("Error Contacting VREManager"); + } + + + + + + /* DLManagementFactoryServiceAddressingLocator dlMan=new DLManagementFactoryServiceAddressingLocator(); try { //retreive and connect to the DLManagement @@ -558,7 +581,7 @@ public class ModelerService { String dlId=(String)getResource().getId(); CreateDLMessage createDLMessage= new CreateDLMessage(); createDLMessage.setVDLUniqueID(dlId); - + ResultSet dlGenRes= DBInterface.queryDB("select name, description, dldesigner, dlmanager, intervalto, id from DL where DL.id='"+dlId+"';"); if (dlGenRes.next()){ createDLMessage.setDLName((new NAL().getDefaultVO())+"/"+dlGenRes.getString(1)); @@ -571,29 +594,29 @@ public class ModelerService { createDLMessage.setVDLUniqueID(dlGenRes.getString(6)); createDLMessage.setIsSecurityEnabled(ModelFactoryService.isSecurityEnabled); }else throw new RemoteException("VDLModel Service: impossible to retreive specific DL"); - + //logger.debug("Setted first parameters"); - + ArrayList tempArray= new ArrayList(); - + //retreive and set collection ids ResultSet dlCollRes= DBInterface.queryDB("select collid from DLRELATEDCOLLECTION where DLRELATEDCOLLECTION.dlid='"+dlId+"';"); for (int i=0; dlCollRes.next(); i++) tempArray.add(dlCollRes.getString(1)); - + createDLMessage.setColIDsList(tempArray.toArray(new String[0])); - - + + tempArray= new ArrayList(); //retreive Metadata IDs ResultSet dlMetadataRes=DBInterface.queryDB("select DISTINCT NATIVEMDF.MDCOLLID from DLRELATEDMETADATAFORMAT, NATIVEMDF where DLRELATEDMETADATAFORMAT.mfid=NATIVEMDF.mdfid and DLRELATEDMETADATAFORMAT.dlid='"+dlId+"';"); for (int i=0; dlMetadataRes.next(); i++) tempArray.add(dlMetadataRes.getString(1)); - + createDLMessage.setMcIDsList(tempArray.toArray(new String[0])); - + //TODO: TP retriving is a mistery :) - + //adding functionality to DLManagement request tempArray= new ArrayList(); ResultSet dlRelatedFunctionality=DBInterface.queryDB("select RELATEDSERVICEID.id from RELATEDSERVICEID, SERVICES, DLRELATEDFUNCT where DLRELATEDFUNCT.dlid='"+dlId+"' and SERVICES.id=DLRELATEDFUNCT.funcid and SERVICES.class=RELATEDSERVICEID.class and SERVICES.name=RELATEDSERVICEID.name;"); @@ -602,38 +625,38 @@ public class ModelerService { logger.debug("ServiceID: "+dlRelatedFunctionality.getString(1)); } createDLMessage.setServiceIDsList(tempArray.toArray(new String[0])); - + //adding DHN to DLManagement request tempArray= new ArrayList(); ResultSet dlRelatedDHN=DBInterface.queryDB("select DLRELATEDDHN.dhnid from DLRELATEDDHN where DLRELATEDDHN.dlid='"+dlId+"'"); for (int i=0; dlRelatedDHN.next(); i++) tempArray.add(dlRelatedDHN.getString(1)); - + createDLMessage.setDhnIDsList(tempArray.toArray(new String[0])); - - + + //adding cs to DLManagement request tempArray= new ArrayList(); ResultSet dlCSRes= DBInterface.queryDB("select csid from DLRELATEDCS where DLRELATEDCS.dlid='"+getResource().getId()+"';"); for (int i=0; dlCSRes.next(); i++) tempArray.add(dlCSRes.getString(1)); createDLMessage.setCsIDsList(tempArray.toArray(new String[0])); - - + + //DLManagement invocation dlManagementFactory.createDL(createDLMessage); - + } catch (Exception e) { logger.error("VDLModel Service: Error Deploying DL "+e.getMessage()); e.printStackTrace(); DBInterface.ExecuteUpdate("UPDATE DL SET STATUS='Failed' WHERE DL.id='"+getResource().getId()+"';"); throw new RemoteException("VDLModel Service: Error Deploying DL" ,e); } - */ - - - } - - - + */ + + +} + + + }