Fixed filters

git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/Common/workspace-task-executor-library@169044 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Francesco Mangiacrapa 2018-06-12 10:22:34 +00:00
parent 88f7465af3
commit c72d1ac0ba
1 changed files with 18 additions and 10 deletions

View File

@ -443,24 +443,28 @@ public class WorkspaceDataMinerTaskExecutor implements ExecutableTask<TaskConfig
/**
* Gets the list operators.
*
* @param filterForParameterNames the filter for parameter names. It returns only {@link TaskOperator} matching the input filters
* @param filterForParameterTypes the filter for parameter types. It returns only {@link TaskOperator} matching the input filters
* @param operator the operator applied to the filters. It must be of type {@link FilterOperator}
* @return the list operators
* @throws Exception the exception
*/
public List<TaskOperator> getListOperators(String[] filterForParameterNames, FilterOperator operator) throws Exception{
Validate.notNull(operator, "The "+FilterOperator.class.getSimpleName()+" passed is null");
public List<TaskOperator> 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<TaskOperator> filteredListOperators = new ArrayList<TaskOperator>(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<TaskConfig
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){
for (String filterParameterName : filterForParameterTypes) {
if(taskParameter.getType().getType().compareToIgnoreCase(filterParameterName)==0){
filterPassed++;
}
}
@ -478,12 +482,16 @@ public class WorkspaceDataMinerTaskExecutor implements ExecutableTask<TaskConfig
if(operator.equals(FilterOperator.LOGICAL_OR) && filterPassed>=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);
}