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 d56a3cc..1162ced 100644 --- a/src/main/java/org/gcube/common/workspacetaskexecutor/dataminer/WorkspaceDataMinerTaskExecutor.java +++ b/src/main/java/org/gcube/common/workspacetaskexecutor/dataminer/WorkspaceDataMinerTaskExecutor.java @@ -443,24 +443,28 @@ public class WorkspaceDataMinerTaskExecutor implements ExecutableTask getListOperators(String[] filterForParameterNames, FilterOperator operator) throws Exception{ - - Validate.notNull(operator, "The "+FilterOperator.class.getSimpleName()+" passed is null"); + public List getListOperators(String[] filterForParameterTypes, FilterOperator operator) throws Exception{ + logger.info("Getting list operators applying filters: "+filterForParameterTypes+", operator: "+operator); DataMinerAccessPoint dap = getDataMinerAccessPoint(); - if(filterForParameterNames==null || filterForParameterNames.length==0){ + if(filterForParameterTypes==null || filterForParameterTypes.length==0){ logger.info("Returning "+dap.getListOperators().size()+ " operator/s. No filter applied"); return dap.getListOperators(); } List filteredListOperators = new ArrayList(dap.getListOperators().size()); + if(operator==null){ + operator = FilterOperator.LOGICAL_OR; + logger.info("The input parameter "+FilterOperator.class.getSimpleName() +" is null, using default "+operator); + } + //APPLYING FILTERS ON PARAMETER NAME/TYPE for (TaskOperator taskOperator : dap.getListOperators()) { logger.trace("***Algor: "+taskOperator.getName()); @@ -469,8 +473,8 @@ public class WorkspaceDataMinerTaskExecutor implements ExecutableTask=1){ filteredListOperators.add(taskOperator); + logger.debug("Added operator: "+taskOperator + " It is matching "+FilterOperator.LOGICAL_OR +" and filterPassed>=1"); //IN AND ALL FILTERS MUST BE MATCHED - }else if(operator.equals(FilterOperator.LOGICAL_AND) && filterPassed==filterForParameterNames.length){ + }else if(operator.equals(FilterOperator.LOGICAL_AND) && filterPassed==filterForParameterTypes.length){ filteredListOperators.add(taskOperator); + logger.debug("Added operator: "+taskOperator + " It is matching "+FilterOperator.LOGICAL_AND +" and filterPassed==filterForParameterNames.length"); + } + else{ + logger.info("Removed operator: "+taskOperator + " It does not match the filters: "+filterForParameterTypes); + filteredListOperators.remove(taskOperator); } - else - logger.info("Removed operator: "+taskOperator + " It does not match filters: "+filterForParameterNames); }