This commit is contained in:
Lucio Lelii 2008-12-15 18:32:19 +00:00
parent a8337ffc47
commit 7e17f8c6bd
1 changed files with 33 additions and 101 deletions

View File

@ -22,6 +22,7 @@ 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.common.vremanagement.ghnmanager.impl.contexts.ServiceContext;
import org.gcube.metadatamanagement.metadatabroker.stubs.FindPossibleTransformationPrograms;
import org.gcube.metadatamanagement.metadatabroker.stubs.FindPossibleTransformationProgramsResponse;
import org.gcube.metadatamanagement.metadatabroker.stubs.MetadataBrokerFormat;
@ -31,12 +32,14 @@ import org.gcube.vremanagement.vremanager.stubs.vremanager.AddResourcesParameter
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.vremanager.stubs.vremanager.service.VREManagerServiceAddressingLocator;
import org.gcube.vremanagement.vremodeler.db.DBInterface;
import org.gcube.vremanagement.vremodeler.impl.util.MBrokerServiceHandler;
import org.gcube.vremanagement.vremodeler.impl.util.MetadataFormat;
import org.gcube.vremanagement.vremodeler.impl.util.VREManagerServiceHandler;
import org.gcube.vremanagement.vremodeler.impl.util.XMLUtil;
import org.gcube.vremanagement.vremodeler.stubs.CollectionArray;
import org.gcube.vremanagement.vremodeler.stubs.FunctionalityIDArray;
@ -482,6 +485,27 @@ public class ModelerService {
* @throws RemoteException -
*/
public void deployVRE(VOID var) throws GCUBEFault{
// couple: first String is the VREName, second string is the GHNId
VREManagerServiceHandler<String, Couple<String, String>> vreManagerHandler= new VREManagerServiceHandler<String,Couple<String, String>>(){
@Override
protected String makeCall(VREManagerPortType mbportType)
throws Exception {
AddResourcesParameters arp= new AddResourcesParameters();
ServiceList services= new ServiceList();
ServiceItem[] service= new ServiceItem[1];
service[0].setServiceClass("VREManagement");
service[0].setServiceName("VREManager");
service[0].setServiceVersion("1.00.00");
services.setService(service);
services.setGHN(new String[]{this.getParameter().second});
arp.setServices(services);
arp.setTargetScope(ServiceContext.getContext().getScope().toString()+"/"+this.getParameter().first);
return mbportType.addResources(arp);
}
};
boolean contactedVRE= false;
try {
DBInterface.ExecuteUpdate("UPDATE VRE SET STATUS='Deploying' WHERE VRE.id='"+getResource().getId()+"';");
@ -590,13 +614,13 @@ public class ModelerService {
try{
ResultSet resMdColDerivate =DBInterface.queryDB("select mdcollid, tpid from SELECTEDDERIVATEMDFROMAT AS s where s.vreid='"+resourceID+"';");
MBrokerServiceHandler<String, Couple> sHandler= new MBrokerServiceHandler<String,Couple>(){
MBrokerServiceHandler<String, Couple<String, String>> sHandler= new MBrokerServiceHandler<String,Couple<String, String>>(){
@Override
protected String makeCall(MetadataBrokerPortType mbportType) throws Exception {
FindPossibleTransformationPrograms fptp= new FindPossibleTransformationPrograms();
Transform t= new Transform();
t.setTransformationProgramID(this.getParameter().tpID);
t.setTransformationProgramID(this.getParameter().second);
String toReturn= mbportType.transform(t);
return toReturn;
}
@ -633,114 +657,22 @@ public class ModelerService {
throw new GCUBEFault("Error Contacting VREManager");
}
/*
DLManagementFactoryServiceAddressingLocator dlMan=new DLManagementFactoryServiceAddressingLocator();
try {
//retreive and connect to the DLManagement
EndpointReferenceType eprDLMan= new EndpointReferenceType(new AttributedURI(DISHLSClient.getRunningInstanceManager(null, getMyEPR()).getEPRsRIFromClassAndName("Keeper", "DLManagement", "diligentproject/keeperservice/dlmanagement/DLManagementFactoryService", null, getMyEPR())[0]));
DLManagementFactoryPortType dlManagementFactory= dlMan.getDLManagementFactoryPortTypePort(eprDLMan);
// authorization control (if in the container the security is enabled)
if (ModelFactoryService.isSecurityEnabled){
CredentialManager cred= new CredentialManager();
ConfigureSecurity.setSecurity(((javax.xml.rpc.Stub)dlManagementFactory), cred.getCredentials());
}
logger.debug("DLManagement retreived");
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));
createDLMessage.setDescription(dlGenRes.getString(2));
createDLMessage.setDLDesigner(dlGenRes.getString(3));
createDLMessage.setDLManager(dlGenRes.getString(4));
Calendar terminationTime=Calendar.getInstance();
terminationTime.setTime(dlGenRes.getDate(5));
createDLMessage.setDLTerminationTime(terminationTime);
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<String> tempArray= new ArrayList<String>();
//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<String>();
//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<String>();
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;");
for (int i=0; dlRelatedFunctionality.next(); i++){
tempArray.add(dlRelatedFunctionality.getString(1));
logger.debug("ServiceID: "+dlRelatedFunctionality.getString(1));
}
createDLMessage.setServiceIDsList(tempArray.toArray(new String[0]));
//adding DHN to DLManagement request
tempArray= new ArrayList<String>();
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<String>();
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);
}
*/
}
/**
* inner class for couple
* @author lucio
*
*/
public class Couple{
public class Couple<F,S>{
public String collectioID;
public String tpID;
public F first;
public S second;
public Couple(String collid, String tpid){
this.collectioID=collid;
this.tpID= tpID;
public Couple(F first, S second){
this.first=first;
this.second= second;
}
}