1 package org.onap.sdc.workflow.services.impl;
3 import java.util.Collection;
4 import java.util.function.Predicate;
5 import java.util.stream.Collectors;
6 import org.onap.sdc.workflow.persistence.types.Workflow;
7 import org.onap.sdc.workflow.services.UniqueValueService;
8 import org.onap.sdc.workflow.services.WorkflowManager;
9 import org.onap.sdc.workflow.services.exceptions.EntityNotFoundException;
10 import org.onap.sdc.workflow.services.impl.mappers.WorkflowMapper;
11 import org.openecomp.sdc.versioning.ItemManager;
12 import org.openecomp.sdc.versioning.types.Item;
13 import org.openecomp.sdc.versioning.types.ItemStatus;
14 import org.springframework.beans.factory.annotation.Autowired;
15 import org.springframework.beans.factory.annotation.Qualifier;
16 import org.springframework.stereotype.Service;
18 @Service("workflowManager")
19 public class WorkflowManagerImpl implements WorkflowManager {
21 public static final String WORKFLOW_TYPE = "WORKFLOW";
22 private static final String WORKFLOW_NOT_FOUND_ERROR_MSG = "Workflow with id '%s' does not exist";
23 private static final String WORKFLOW_NAME_UNIQUE_TYPE = "WORKFLOW_NAME";
24 static final Predicate<Item> ITEM_PREDICATE = item -> WORKFLOW_TYPE.equals(item.getType());
26 private final ItemManager itemManager;
27 private final UniqueValueService uniqueValueService;
28 private final WorkflowMapper workflowMapper;
31 public WorkflowManagerImpl(ItemManager itemManager,
32 @Qualifier("uniqueValueService") UniqueValueService uniqueValueService, WorkflowMapper workflowMapper) {
33 this.itemManager = itemManager;
34 this.uniqueValueService = uniqueValueService;
35 this.workflowMapper = workflowMapper;
39 public Collection<Workflow> list() {
40 return itemManager.list(ITEM_PREDICATE).stream().map(workflowMapper::itemToWorkflow)
41 .collect(Collectors.toList());
45 public Workflow get(Workflow workflow) {
46 Item retrievedItem = itemManager.get(workflow.getId());
47 if (retrievedItem == null) {
48 throw new EntityNotFoundException(String.format(WORKFLOW_NOT_FOUND_ERROR_MSG, workflow.getId()));
50 return this.workflowMapper.itemToWorkflow(retrievedItem);
54 public Workflow create(Workflow workflow) {
55 Item item = workflowMapper.workflowToItem(workflow);
56 item.setStatus(ItemStatus.ACTIVE);
58 uniqueValueService.validateUniqueValue(WORKFLOW_NAME_UNIQUE_TYPE, new String[] {workflow.getName()});
59 workflow.setId(itemManager.create(item).getId());
60 uniqueValueService.createUniqueValue(WORKFLOW_NAME_UNIQUE_TYPE, new String[] {workflow.getName()});
65 public void update(Workflow workflow) {
66 Item retrievedItem = itemManager.get(workflow.getId());
67 if (retrievedItem == null) {
68 throw new EntityNotFoundException(String.format(WORKFLOW_NOT_FOUND_ERROR_MSG, workflow.getId()));
71 uniqueValueService.updateUniqueValue(WORKFLOW_NAME_UNIQUE_TYPE, retrievedItem.getName(), workflow.getName());
73 Item item = workflowMapper.workflowToItem(workflow);
74 item.setId(workflow.getId());
75 item.setStatus(retrievedItem.getStatus());
76 item.setVersionStatusCounters(retrievedItem.getVersionStatusCounters());
77 itemManager.update(item);