diff --git a/src/main/java/org/gcube/common/workspacetaskexecutor/dataminer/WorkspaceDataMinerTaskExecutor.java b/src/main/java/org/gcube/common/workspacetaskexecutor/dataminer/WorkspaceDataMinerTaskExecutor.java index 11dde04..b1553b7 100644 --- a/src/main/java/org/gcube/common/workspacetaskexecutor/dataminer/WorkspaceDataMinerTaskExecutor.java +++ b/src/main/java/org/gcube/common/workspacetaskexecutor/dataminer/WorkspaceDataMinerTaskExecutor.java @@ -10,6 +10,7 @@ import org.gcube.common.workspacetaskexecutor.shared.ExecutableItem; import org.gcube.common.workspacetaskexecutor.shared.ExecutableTask; import org.gcube.common.workspacetaskexecutor.shared.TaskOperator; import org.gcube.common.workspacetaskexecutor.shared.TaskOutput; +import org.gcube.common.workspacetaskexecutor.shared.TaskParameter; import org.gcube.common.workspacetaskexecutor.shared.TaskParameterType; import org.gcube.common.workspacetaskexecutor.shared.WSItemObject; import org.gcube.common.workspacetaskexecutor.shared.dataminer.TaskComputation; @@ -226,12 +227,12 @@ public class WorkspaceDataMinerTaskExecutor implements ExecutableTask getListOperators() throws Exception{ + public List getListOperators(String[] filterForParameterNames) throws Exception{ DataMinerAccessPoint dap = getDataMinerAccessPoint(); + + if(filterForParameterNames==null || filterForParameterNames.length==0){ + logger.info("Returning "+dap.getListOperators().size()+ " operator/s. No filter applied"); + return dap.getListOperators(); + } + + //APPLYING FILTERS ON PARAMETER NAME/TYPE + for (TaskOperator taskOperator : dap.getListOperators()) { + logger.trace("***Algor: "+taskOperator.getName()); + List io = taskOperator.getInputOperators(); + boolean filterPassed = false; + for (TaskParameter taskParameter : io) { + logger.trace("key: "+taskParameter.getKey() + ", value: "+taskParameter.getValue() +", defaultValue: "+taskParameter.getDefaultValue()); + for (String filterParameterName : filterForParameterNames) { + if(taskParameter.getKey().compareToIgnoreCase(filterParameterName)==0){ + filterPassed = true; + break; + } + } + + if(!filterPassed){ + logger.info("Removed key: "+taskParameter.getKey() + " It does not match filters: "+filterForParameterNames); + io.remove(taskParameter); + } + } + + } + return dap.getListOperators(); }