This commit is contained in:
Lucio Lelii 2008-12-18 19:08:50 +00:00
parent 19078ff416
commit 5ffa9dbefe
4 changed files with 73 additions and 84 deletions

View File

@ -9,40 +9,18 @@ import java.util.Hashtable;
import java.util.List;
import javax.xml.namespace.QName;
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;
import org.gcube.common.core.informationsystem.client.ISClient;
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.faults.GCUBEUnrecoverableFault;
import org.gcube.common.core.types.VOID;
import org.gcube.common.core.utils.logging.GCUBELog;
import org.gcube.metadatamanagement.metadatabroker.stubs.FindPossibleTransformationPrograms;
import org.gcube.metadatamanagement.metadatabroker.stubs.MetadataBrokerPortType;
import org.gcube.metadatamanagement.metadatabroker.stubs.Transform;
import org.gcube.vremanagement.vremanager.stubs.vremanager.AddResourcesParameters;
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.VREManagerServiceHandler;
import org.gcube.vremanagement.vremodeler.impl.thread.DeployVRE;
import org.gcube.vremanagement.vremodeler.impl.util.XMLUtil;
import org.gcube.vremanagement.vremodeler.stubs.CollectionArray;
import org.gcube.vremanagement.vremodeler.stubs.FunctionalityIDArray;
import org.gcube.vremanagement.vremodeler.stubs.GHNArray;
import org.gcube.vremanagement.vremodeler.stubs.SetMDFormatArgs;
import org.gcube.vremanagement.vremodeler.stubs.VRERequest;
import org.gcube.vremanagement.vremanager.stubs.vremanager.OptionsParameters;
import org.globus.wsrf.ResourceException;
import org.globus.wsrf.encoding.ObjectSerializer;
import org.globus.wsrf.encoding.SerializationException;
@ -50,12 +28,20 @@ import org.globus.wsrf.encoding.SerializationException;
public class ModelerService {
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.getName());
protected ModelerResource getResource() throws ResourceException{
return (ModelerResource) ModelerContext.getPortTypeContext().getWSHome().find();
}
/**
*
* @param request void
@ -372,14 +358,14 @@ public class ModelerService {
try {
DBInterface.connect();
resFunct= DBInterface.queryDB("select * from functionality where father is null;");
selectedFuncRes= DBInterface.queryDB("select funcid from VRERELATEDFUNCT where vreid='"+getResource().getID()+"';");
selectedFuncRes= DBInterface.queryDB("select funcid from VRERELATEDFUNCT where vreid='"+getResource().getId()+"';");
while (selectedFuncRes.next())
selectedFunctionality.add(selectedFuncRes.getInt(1));
selectedCSRes= DBInterface.queryDB("select csid from VRERELATEDCS where vreid='"+getResource().getID()+"';");
selectedCSRes= DBInterface.queryDB("select csid from VRERELATEDCS where vreid='"+getResource().getId()+"';");
while (selectedCSRes.next())
selectedCS.add(selectedCSRes.getString(1));
} catch (Exception e) {
//logger.error("VDLModel Service: error retreiving functionality");
//logger.error("VDLModel Service: error retrieving functionality");
e.printStackTrace();
throw new GCUBEFault(e);
}
@ -396,44 +382,48 @@ public class ModelerService {
* @throws RemoteException -
*/
public void setFunctionality(FunctionalityIDArray request) throws GCUBEFault {
System.out.println("Set Functionality called");
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();
String vreKey=(String) getResource().getId();
//logger.debug("KEY: "+dlKey);
if (request.getFunctionalityIDElement()!=null){
ArrayList<List<String>> values= new ArrayList<List<String>>(request.getFunctionalityIDElement().length);
ArrayList<String> row=null;
for (int i=0; i<request.getFunctionalityIDElement().length; i++)
for (String funct: request.getFunctionalityIDElement())
{
row= new ArrayList<String>(2);
row.add(dlKey);
row.add(request.getFunctionalityIDElement()[i]);
row.add(vreKey);
row.add(funct);
values.add(row);
}
DBInterface.InsertInto("VRERELATEDFUNCT", values);
}
}else System.out.println("requestFunciotnality is null");
if (request.getCsIDElement()!=null)
{
ArrayList<List<String>> values= new ArrayList<List<String>>(request.getCsIDElement().length);
ArrayList<String> row=null;
for (int i=0; i<request.getCsIDElement().length; i++)
for (String css:request.getCsIDElement())
{
row= new ArrayList<String>(2);
row.add(dlKey);
row.add(request.getCsIDElement()[i]);
row.add(vreKey);
row.add(css);
values.add(row);
}
DBInterface.InsertInto("VRERELATEDCS", values);
}
}catch(Exception e){throw new GCUBEFault(e);}
}catch(Exception e){
e.printStackTrace();
throw new GCUBEFault(e);}
}
@ -481,38 +471,34 @@ public class ModelerService {
* @throws RemoteException -
*/
public void deployVRE(VOID var) throws GCUBEFault{
String resourceID;
try {
resourceID = getResource().getId();
} catch (ResourceException e) {
logger.error("Error retrieving the Resource Requested"); throw new GCUBEUnrecoverableFault(e);
}
// 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);
}
};
try{
DBInterface.ExecuteUpdate("UPDATE VRE SET STATUS='Deploying' WHERE VRE.id='"+resourceID+"';");
} catch (GCUBEFault e) {
logger.error("HSQLDB Error "+e);
throw new GCUBEUnrecoverableFault(e);
}
Thread deployVREThread= new Thread(new DeployVRE(resourceID));
ServiceContext.getContext().setScope(deployVREThread, ServiceContext.getContext().getScope());
deployVREThread.start();
/*
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;
@ -526,7 +512,7 @@ public class ModelerService {
ris = client.execute(query, ServiceContext.getContext().getScope());
}catch (Exception e) { logger.error("Error Excecuting Query"); throw new GCUBEFault(e);}
String resourceID;
try {
resourceID = getResource().getId();
} catch (ResourceException e) {
@ -540,7 +526,7 @@ public class ModelerService {
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");
@ -646,7 +632,7 @@ public class ModelerService {
resItem.setID(resRelatedCol.getString(1));
resItem.setType(GCUBEMCollection.TYPE);
}
*/
contactedVRE= true;
}catch(RemoteException re){logger.warn("Error Contacting VREManager, trying next RI"); contactedVRE= false;}
@ -656,27 +642,12 @@ public class ModelerService {
if (!contactedVRE) {
logger.error("Error Contacting VREManager");
throw new GCUBEFault("Error Contacting VREManager");
}
}*/
}
/**
* inner class for couple
* @author lucio
*
*/
public class Couple<F,S>{
public F first;
public S second;
public Couple(F first, S second){
this.first=first;
this.second= second;
}
}
}

View File

@ -0,0 +1,18 @@
package org.gcube.vremanagement.vremodeler.impl.util;
/**
* couple
* @author lucio
*
*/
public class Couple<F,S>{
public F first;
public S second;
public Couple(F first, S second){
this.first=first;
this.second= second;
}
}

View File

@ -53,7 +53,6 @@ public abstract class VREManagerServiceHandler<T, P> extends GCUBEServiceHandler
}
protected abstract T makeCall(VREManagerPortType mbportType) throws Exception;
protected void interact(EndpointReferenceType arg0) throws Exception{
@ -65,4 +64,5 @@ public abstract class VREManagerServiceHandler<T, P> extends GCUBEServiceHandler
this.setReturnValue(this.makeCall(mbpt));
}catch(Exception e){throw e;}
}
}

View File

@ -371,7 +371,7 @@ public class XMLUtil {
toReturn.append(res.getString(3));
toReturn.append("</Description><VREDesigner>");
toReturn.append(res.getString(4));
toReturn.append("</DLDesigner><VREManager>");
toReturn.append("</VREDesigner><VREManager>");
toReturn.append(res.getString(5));
toReturn.append("</VREManager><StartTime>");
toReturn.append(res.getDate(6).getTime());