From 628397661a8b023a17316f9a501c8bd8af107a3d Mon Sep 17 00:00:00 2001 From: ayalaben Date: Tue, 21 Aug 2018 14:45:28 +0300 Subject: Search Workflow by name Change-Id: Ib45a028638293052865039a1f7bd6bf8b48e8e36 Issue-ID: SDC-1662 Signed-off-by: ayalaben --- .../org/onap/sdc/workflow/api/WorkflowController.java | 9 ++++++--- .../onap/sdc/workflow/services/WorkflowManager.java | 6 +++--- .../workflow/services/impl/WorkflowManagerImpl.java | 19 +++++++++++++------ 3 files changed, 22 insertions(+), 12 deletions(-) (limited to 'workflow-designer-be/src/main/java') diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/WorkflowController.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/WorkflowController.java index 18288e27..8cc1df4e 100644 --- a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/WorkflowController.java +++ b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/api/WorkflowController.java @@ -80,10 +80,13 @@ public class WorkflowController { value = "Number of returned items"), @ApiImplicitParam(name = SORT, dataType = "string", paramType = "query", defaultValue = "name:asc", value = "Sorting criteria in the format: property:(asc|desc). Default sort order is ascending.", - allowableValues = "name:asc,name:desc")}) - public Page list(@ApiIgnore VersionStatesFormatter versionStateFilter, @ApiIgnore Paging paging, + allowableValues = "name:asc,name:desc"), + @ApiImplicitParam(name = "searchNameFilter", dataType = "string", paramType = "query", + value = "Filter by workflow name")}) + public Page list(@ApiIgnore String searchNameFilter, + @ApiIgnore VersionStatesFormatter versionStateFilter, @ApiIgnore Paging paging, @ApiIgnore Sorting sorting, @RequestHeader(USER_ID_HEADER) String user) { - return workflowManager.list(versionStateFilter.getVersionStates(), initRequestSpec(paging, sorting)); + return workflowManager.list(searchNameFilter, versionStateFilter.getVersionStates(), initRequestSpec(paging, sorting)); } @PostMapping(consumes = MediaType.APPLICATION_JSON_VALUE) diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/WorkflowManager.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/WorkflowManager.java index 3ef38d75..5190da14 100644 --- a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/WorkflowManager.java +++ b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/WorkflowManager.java @@ -17,14 +17,14 @@ package org.onap.sdc.workflow.services; import java.util.Set; -import org.onap.sdc.workflow.services.types.Workflow; -import org.onap.sdc.workflow.services.types.WorkflowVersionState; import org.onap.sdc.workflow.services.types.Page; import org.onap.sdc.workflow.services.types.RequestSpec; +import org.onap.sdc.workflow.services.types.Workflow; +import org.onap.sdc.workflow.services.types.WorkflowVersionState; public interface WorkflowManager { - Page list(Set versionStatesFilter, RequestSpec requestSpec); + Page list(String searchNameFilter, Set versionStatesFilter, RequestSpec requestSpec); Workflow get(Workflow workflow); diff --git a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/WorkflowManagerImpl.java b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/WorkflowManagerImpl.java index e16c7b41..a8998cce 100644 --- a/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/WorkflowManagerImpl.java +++ b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/WorkflowManagerImpl.java @@ -27,8 +27,6 @@ import java.util.List; import java.util.Set; import java.util.function.Predicate; import java.util.stream.Collectors; -import org.onap.sdc.workflow.services.types.Workflow; -import org.onap.sdc.workflow.services.types.WorkflowVersionState; import org.onap.sdc.workflow.services.UniqueValueService; import org.onap.sdc.workflow.services.WorkflowManager; import org.onap.sdc.workflow.services.exceptions.EntityNotFoundException; @@ -39,6 +37,8 @@ import org.onap.sdc.workflow.services.types.PagingRequest; import org.onap.sdc.workflow.services.types.RequestSpec; import org.onap.sdc.workflow.services.types.Sort; import org.onap.sdc.workflow.services.types.SortingRequest; +import org.onap.sdc.workflow.services.types.Workflow; +import org.onap.sdc.workflow.services.types.WorkflowVersionState; import org.openecomp.sdc.logging.api.Logger; import org.openecomp.sdc.logging.api.LoggerFactory; import org.openecomp.sdc.versioning.ItemManager; @@ -78,7 +78,8 @@ public class WorkflowManagerImpl implements WorkflowManager { } @Override - public Page list(Set versionStatesFilter, RequestSpec requestSpec) { + public Page list(String searchNameFilter, Set versionStatesFilter, + RequestSpec requestSpec) { requestSpec = getRequestSpec(requestSpec); Set versionStatusesFilter = @@ -86,7 +87,8 @@ public class WorkflowManagerImpl implements WorkflowManager { versionStatesFilter.stream().map(versionStateMapper::workflowVersionStateToVersionStatus) .collect(Collectors.toSet()); - Collection workflowItems = itemManager.list(getFilter(versionStatusesFilter)); + Predicate filter = addSearchNameFilter(WORKFLOW_ITEM_FILTER, searchNameFilter); + Collection workflowItems = itemManager.list(addVersionStatusFilter(filter, versionStatusesFilter)); List workflowsSlice = workflowItems.stream().map(workflowMapper::itemToWorkflow) .sorted(getWorkflowComparator(requestSpec.getSorting())) @@ -170,8 +172,13 @@ public class WorkflowManagerImpl implements WorkflowManager { return byNameAscending ? byName : byName.reversed(); } - private static Predicate getFilter(Set versionStatuses) { - return WORKFLOW_ITEM_FILTER + private static Predicate addSearchNameFilter(Predicate filter, String searchNameFilter) { + return filter + .and(item -> searchNameFilter == null || item.getName().contains(searchNameFilter)); + } + + private static Predicate addVersionStatusFilter(Predicate filter, Set versionStatuses) { + return filter .and(item -> versionStatuses == null || item.getVersionStatusCounters().keySet().stream() .anyMatch(versionStatuses::contains)); } -- cgit 1.2.3-korg