perform-service_broken/src/main/java/org/gcube/application/perform/service/engine/dm/DMUtils.java

72 lines
2.5 KiB
Java

package org.gcube.application.perform.service.engine.dm;
import java.util.Map;
import org.gcube.application.perform.service.engine.model.importer.ImportRoutineDescriptor;
import org.gcube.data.analysis.dataminermanagercl.server.DataMinerService;
import org.gcube.data.analysis.dataminermanagercl.server.dmservice.SClient;
import org.gcube.data.analysis.dataminermanagercl.server.monitor.DMMonitor;
import org.gcube.data.analysis.dataminermanagercl.server.monitor.DMMonitorListener;
import org.gcube.data.analysis.dataminermanagercl.shared.data.computations.ComputationId;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.Parameter;
import org.gcube.data.analysis.dataminermanagercl.shared.process.Operator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class DMUtils {
private static final Logger log= LoggerFactory.getLogger(DMUtils.class);
public static SClient getClient() throws DMException {
try {
return new DataMinerService().getClient();
}catch(Exception e) {
throw new DMException(e);
}
}
public static ComputationId getComputation(ImportRoutineDescriptor desc) {
return new ComputationId(desc.getComputationId(), desc.getComputationUrl(), desc.getComputationOperator(), desc.getComputationOperatorName(), desc.getComputationRequest());
}
public static void monitor(SClient client,ComputationId computationId,DMMonitorListener listener) {
DMMonitor monitor=new DMMonitor(computationId,client);
monitor.add(listener);
monitor.start();
}
public static void monitor(ComputationId computationId,DMMonitorListener listener) throws DMException {
DMMonitor monitor=new DMMonitor(computationId,getClient());
monitor.add(listener);
monitor.start();
}
public static ComputationId submitJob(String operatorId, Map<String,String> parameters) throws DMException {
return submitJob(getClient(),operatorId,parameters);
}
public static ComputationId submitJob(SClient client, String operatorId, Map<String,String> parameters) throws DMException {
try {
log.debug("Looking for operator by Id {} ",operatorId);
Operator op=client.getOperatorById(operatorId);
log.debug("Preparing parameters, values : {} ",parameters);
for(Parameter param:op.getOperatorParameters()) {
String paramName=param.getName();
if(parameters.containsKey(paramName))
param.setValue(parameters.get(paramName));
}
log.info("Submitting Operator {} to DM",op);
return client.startComputation(op);
}catch(Exception e) {
throw new DMException(e);
}
}
}