diff --git a/source/java/org/alfresco/rest/workflow/api/impl/ProcessesImpl.java b/source/java/org/alfresco/rest/workflow/api/impl/ProcessesImpl.java index ced247172b..aac4fe717f 100644 --- a/source/java/org/alfresco/rest/workflow/api/impl/ProcessesImpl.java +++ b/source/java/org/alfresco/rest/workflow/api/impl/ProcessesImpl.java @@ -377,7 +377,15 @@ public class ProcessesImpl extends WorkflowRestImpl implements Processes { throw new InvalidArgumentException("the matches operator can only be used with a String value for property " + queryVariableHolder.getPropertyName()); } - query.variableValueLike(queryVariableHolder.getPropertyName(), (String) queryVariableHolder.getPropertyValue()); + + if (((String) queryVariableHolder.getPropertyValue()).startsWith("(?i)")) + { + query.variableValueLikeIgnoreCase(queryVariableHolder.getPropertyName(), ((String) queryVariableHolder.getPropertyValue()).substring("(?i)".length()).toLowerCase()); + } + else + { + query.variableValueLike(queryVariableHolder.getPropertyName(), (String) queryVariableHolder.getPropertyValue()); + } } else if (queryVariableHolder.getOperator() == WhereClauseParser.NEGATION) { diff --git a/source/test-java/org/alfresco/rest/test/workflow/api/impl/ProcessesImplTest.java b/source/test-java/org/alfresco/rest/test/workflow/api/impl/ProcessesImplTest.java index 22c31a4049..cef4044d9b 100644 --- a/source/test-java/org/alfresco/rest/test/workflow/api/impl/ProcessesImplTest.java +++ b/source/test-java/org/alfresco/rest/test/workflow/api/impl/ProcessesImplTest.java @@ -79,6 +79,8 @@ public class ProcessesImplTest extends TestCase private static final String QUERY_STATUS_ACTIVE = "(status=active)"; + + private static final String QUERY_WORKFLOWDESCRIPTION_MATCHES = "(variables/bpm_workflowDescription MATCHES ('%s'))"; private ApplicationContext applicationContext = ApplicationContextHelper.getApplicationContext(CONFIG_LOCATIONS); @@ -122,6 +124,7 @@ public class ProcessesImplTest extends TestCase { Map parameters = new HashMap(); parameters.put(WorkflowModel.ASSOC_ASSIGNEE, (Serializable) Collections.singletonList(assignee)); + parameters.put(WorkflowModel.PROP_WORKFLOW_DESCRIPTION, "Test workflow api calls review and approve"); // MNT-14631 //parameters.put(WorkflowModel.ASSOC_PACKAGE, workflowService.createPackage(null)); workflowService.startWorkflow(neededDefinition.getId(), parameters); @@ -182,6 +185,34 @@ public class ProcessesImplTest extends TestCase assertFalse(actualProcesses.hasMoreItems()); } + @Test + public void testGetProcessesMatchesIgnoreCase() + { + CollectionWithPagingInfo result = queryMatchesProcesses("(?i)test workflow api calls review and approve"); + + assertNotNull(result); + assertNotNull(result.getCollection()); + assertTrue(result.getTotalItems() > 0 ); + } + + @Test + public void testGetProcessesMatchesIgnoreCaseNoResults() + { + CollectionWithPagingInfo result = queryMatchesProcesses("test workflow api calls review and approve"); + + assertNotNull(result); + assertNotNull(result.getCollection()); + assertTrue(result.getTotalItems() == 0 ); + } + + private CollectionWithPagingInfo queryMatchesProcesses(String matchesString) + { + Query query = ResourceWebScriptHelper.getWhereClause(String.format(QUERY_WORKFLOWDESCRIPTION_MATCHES, matchesString)); + Parameters parameters = Params.valueOf(new RecognizedParams(null, Paging.valueOf(0, ACTIVE_WORKFLOWS_INITIAL_AMOUNT), null, null, null, query, null), null, null); + + return processes.getProcesses(parameters); + } + private CollectionWithPagingInfo queryActiveProcessesAndAssertResult(int skipCount, int maxItems) { Query query = ResourceWebScriptHelper.getWhereClause(QUERY_STATUS_ACTIVE);