/** * */ package org.gcube.common.workspacetaskexecutor.dataminer; import java.util.ArrayList; import java.util.List; import org.gcube.common.workspacetaskexecutor.shared.TaskOperator; import org.gcube.common.workspacetaskexecutor.shared.TaskParameter; import org.gcube.common.workspacetaskexecutor.shared.TaskParameterType; import org.gcube.common.workspacetaskexecutor.shared.dataminer.TaskComputation; import org.gcube.data.analysis.dataminermanagercl.shared.data.computations.ComputationId; import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ColumnListParameter; import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ColumnParameter; import org.gcube.data.analysis.dataminermanagercl.shared.parameters.DateParameter; import org.gcube.data.analysis.dataminermanagercl.shared.parameters.EnumParameter; import org.gcube.data.analysis.dataminermanagercl.shared.parameters.FileParameter; import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ListParameter; import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ObjectParameter; import org.gcube.data.analysis.dataminermanagercl.shared.parameters.Parameter; import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ParameterType; import org.gcube.data.analysis.dataminermanagercl.shared.parameters.TabularListParameter; import org.gcube.data.analysis.dataminermanagercl.shared.parameters.TabularParameter; import org.gcube.data.analysis.dataminermanagercl.shared.parameters.TimeParameter; import org.gcube.data.analysis.dataminermanagercl.shared.parameters.WKTParameter; import org.gcube.data.analysis.dataminermanagercl.shared.process.Operator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * The Class DMConverter. * * @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it * May 7, 2018 */ public class DMConverter { /** The logger. */ private static Logger logger = LoggerFactory.getLogger(DMConverter.class); /** * To dm computation id. * * @param computationId the computation id * @param startTime the start time * @param endTime the end time * @return the task computation */ public static TaskComputation toDMComputationId(ComputationId computationId, Long startTime, Long endTime){ if(computationId==null) return null; return new TaskComputation(computationId.getId(), computationId.getUrlId(), computationId.getOperatorId(), computationId.getOperatorName(), computationId.getEquivalentRequest(), startTime, endTime); } /** * To computation id. * * @param taskComputation the task computation * @return the computation id */ public static ComputationId toComputationId(TaskComputation taskComputation){ if(taskComputation==null) return null; return new ComputationId(taskComputation.getId(), taskComputation.getUrlId(), taskComputation.getOperatorId(), taskComputation.getOperatorName(), taskComputation.getEquivalentRequest()); } /** * To task operator. * * @param op the op * @param inputParameters the input parameters * @param outputParameters the output parameters * @return the task operator */ public static TaskOperator toTaskOperator(Operator op, List inputParameters, List outputParameters){ if(op==null) return null; // List listOperator = null; // if(op.getOperatorParameters()!=null){ // listOperator = new ArrayList(op.getOperatorParameters().size()); // for (Parameter param : op.getOperatorParameters()) { // TaskParameter tp = toTaskParameter(param); // if(tp!=null) // listOperator.add(tp); // } // } //Converting input parameters List listInOperator = null; if(inputParameters!=null){ listInOperator = new ArrayList(inputParameters.size()); for (Parameter param :inputParameters) { TaskParameter tp = toTaskParameter(param); if(tp!=null) listInOperator.add(tp); } } //Converting output parameters List listOutOperator = null; if(outputParameters!=null){ listOutOperator = new ArrayList(inputParameters.size()); for (Parameter param : outputParameters) { TaskParameter tp = toTaskParameter(param); if(tp!=null) listOutOperator.add(tp); } } return new TaskOperator(op.getId(), op.getName(), op.getBriefDescription(), op.getDescription(), listInOperator, listOutOperator, op.hasImage()); } /** * To task parameter. * * @param parameter the parameter * @return the task parameter */ public static TaskParameter toTaskParameter(Parameter parameter){ if(parameter==null) return null; Parameter p; String defaultValue = ""; switch (parameter.getTypology()) { case FILE: FileParameter fp = new FileParameter(); break; case OBJECT: ObjectParameter op = new ObjectParameter(); defaultValue = op.getDefaultValue(); break; case TABULAR: TabularParameter tp = new TabularParameter(); break; case ENUM: EnumParameter ep = new EnumParameter(); defaultValue = ep.getDefaultValue(); break; case LIST: ListParameter lp = new ListParameter(); break; case COLUMN: ColumnParameter cp = new ColumnParameter(); defaultValue = cp.getDefaultColumn(); break; case COLUMN_LIST: ColumnListParameter clp = new ColumnListParameter(); break; case DATE: DateParameter dp = new DateParameter(); defaultValue = dp.getDefaultValue(); break; case TABULAR_LIST: TabularListParameter tlp = new TabularListParameter(); break; case TIME: TimeParameter timep = new TimeParameter(); defaultValue = timep.getDefaultValue(); break; case WKT: WKTParameter wktp = new WKTParameter(); defaultValue = wktp.getDefaultValue(); break; default: break; } return new TaskParameter(parameter.getName(), parameter.getValue(), defaultValue, toTaskParameterType(parameter.getTypology())); } /** * To task parameter type. * * @param type the type * @return the task parameter type */ public static TaskParameterType toTaskParameterType(ParameterType type){ if(type==null) return null; return new TaskParameterType(type.name().toString()); } /** * To task parameter. * * @param taskParameter the task parameter * @return the parameter */ public static Parameter toParameter(TaskParameter taskParameter){ ParameterType toParameterType = null; try{ if(taskParameter==null || taskParameter.getType()==null) return null; toParameterType = ParameterType.valueOf(taskParameter.getType().getType()); Parameter p = null; switch (toParameterType) { case FILE: p =new FileParameter(); break; case OBJECT: p = new ObjectParameter(); break; case TABULAR: p = new TabularParameter(); break; case ENUM: p = new EnumParameter(); break; case LIST: p = new ListParameter(); break; case COLUMN: p = new ColumnParameter(); break; case COLUMN_LIST: p = new ColumnListParameter(); break; case DATE: p = new DateParameter(); break; case TABULAR_LIST: p = new TabularListParameter(); break; case TIME: p = new TimeParameter(); break; case WKT: p = new WKTParameter(); break; default: break; } p.setName(taskParameter.getKey()); p.setValue(taskParameter.getValue()); return p; }catch(Exception e){ logger.warn("Impossible to convert the value: "+taskParameter+" at one of values "+ParameterType.values()); return null; } } }