vre-modeler/src/org/gcube/vremanagement/vremodeler/resources/handlers/RunningInstancesHandler.java

67 lines
2.3 KiB
Java

package org.gcube.vremanagement.vremodeler.resources.handlers;
import java.util.ArrayList;
import java.util.List;
import org.gcube.common.core.contexts.GHNContext;
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.logging.GCUBELog;
import org.gcube.vremanagement.vremodeler.db.DBInterface;
import org.gcube.vremanagement.vremodeler.impl.ServiceContext;
import org.gcube.vremanagement.vremodeler.resources.GhnRiRelationObject;
public class RunningInstancesHandler implements ResourceHandler<GCUBERunningInstance>{
private static GCUBELog logger = new GCUBELog(RunningInstancesHandler.class);
public static final String tableName="RunningInstance";
//private static final String creationQuery="CREATE IF NOT EXISTS MEMORY TABLE "+tableName+" (ID VARCHAR NOT NULL PRIMARY KEY,NAME VARCHAR NOT NULL, CLASS VARCHAR NOT NULL)";
private String relatedGhn;
public RunningInstancesHandler(String ghnId) {
this.relatedGhn=ghnId;
}
public RunningInstancesHandler() {
this.relatedGhn=null;
}
public void initialize() throws Exception{
ISClient client= GHNContext.getImplementation(ISClient.class);
GCUBERIQuery queryRI= client.getQuery(GCUBERIQuery.class);
queryRI.addGenericCondition("$result/Profile/GHN[string(@UniqueID) eq '"+this.relatedGhn+"']");
List<GCUBERunningInstance> riList= client.execute(queryRI, ServiceContext.getContext().getScope());
for (GCUBERunningInstance ri: riList)
try{
insert(ri);
}catch(Exception e){logger.error("error insertin values in "+tableName, e);}
}
private void insert(GCUBERunningInstance ri) throws Exception{
ArrayList<String> row= new ArrayList<String>(3);
row.add(ri.getID());
row.add(ri.getServiceName());
row.add(ri.getServiceClass());
DBInterface.connect();
DBInterface.insertInto(tableName, row.toArray(new String[0]));
new GhnRiRelationHandler().add(new GhnRiRelationObject(this.relatedGhn, ri.getID()));
}
public void add(GCUBERunningInstance resource) throws Exception {
this.insert(resource);
}
public void drop(String riId) throws Exception {
DBInterface.connect();
DBInterface.deleteElement(tableName, "ID='"+riId+"'");
new GhnRiRelationHandler().drop(riId);
}
}