aboutsummaryrefslogtreecommitdiffstats
path: root/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/WorkflowManagerImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/WorkflowManagerImpl.java')
-rw-r--r--workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/WorkflowManagerImpl.java76
1 files changed, 76 insertions, 0 deletions
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
new file mode 100644
index 00000000..40750f10
--- /dev/null
+++ b/workflow-designer-be/src/main/java/org/onap/sdc/workflow/services/impl/WorkflowManagerImpl.java
@@ -0,0 +1,76 @@
+package org.onap.sdc.workflow.services.impl;
+
+import java.util.Collection;
+import java.util.stream.Collectors;
+import org.onap.sdc.workflow.persistence.types.Workflow;
+import org.onap.sdc.workflow.services.UniqueValueService;
+import org.onap.sdc.workflow.services.WorkflowManager;
+import org.onap.sdc.workflow.services.errors.WorkflowNotFoundException;
+import org.onap.sdc.workflow.services.impl.mappers.ItemToWorkflowMapper;
+import org.onap.sdc.workflow.services.impl.mappers.WorkflowToItemMapper;
+import org.openecomp.sdc.versioning.ItemManager;
+import org.openecomp.sdc.versioning.types.Item;
+import org.openecomp.sdc.versioning.types.ItemStatus;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Service;
+
+@Service("workflowManager")
+public class WorkflowManagerImpl implements WorkflowManager {
+
+ public static final String WORKFLOW_TYPE = "WORKFLOW";
+ private static final String WORKFLOW_NAME_UNIQUE_TYPE = "WORKFLOW_NAME";
+ private final ItemManager itemManager;
+ private final UniqueValueService uniqueValueService;
+
+ @Autowired
+ public WorkflowManagerImpl(ItemManager itemManager,
+ @Qualifier("uniqueValueService") UniqueValueService uniqueValueService) {
+ this.itemManager = itemManager;
+ this.uniqueValueService = uniqueValueService;
+ }
+
+ @Override
+ public Collection<Workflow> list() {
+ ItemToWorkflowMapper mapper = new ItemToWorkflowMapper();
+ return itemManager.list(item -> WORKFLOW_TYPE.equals(item.getType())).stream()
+ .map(item -> mapper.applyMapping(item, Workflow.class)).collect(Collectors.toList());
+ }
+
+ @Override
+ public Workflow get(Workflow workflow) {
+ ItemToWorkflowMapper mapper = new ItemToWorkflowMapper();
+ Item retrievedItem = itemManager.get(workflow.getId());
+ if (retrievedItem == null) {
+ throw new WorkflowNotFoundException(workflow.getId());
+ }
+ return mapper.applyMapping(retrievedItem, Workflow.class);
+ }
+
+ @Override
+ public void create(Workflow workflow) {
+ Item item = new WorkflowToItemMapper().applyMapping(workflow, Item.class);
+ item.setStatus(ItemStatus.ACTIVE);
+
+ uniqueValueService.validateUniqueValue(WORKFLOW_NAME_UNIQUE_TYPE, workflow.getName());
+ workflow.setId(itemManager.create(item).getId());
+ uniqueValueService.createUniqueValue(WORKFLOW_NAME_UNIQUE_TYPE, workflow.getName());
+ }
+
+ @Override
+ public void update(Workflow workflow) {
+ Item retrievedItem = itemManager.get(workflow.getId());
+ if (retrievedItem == null) {
+ throw new WorkflowNotFoundException(workflow.getId());
+ }
+
+ uniqueValueService.updateUniqueValue(WORKFLOW_NAME_UNIQUE_TYPE, retrievedItem.getName(), workflow.getName());
+
+ Item item = new WorkflowToItemMapper().applyMapping(workflow, Item.class);
+ item.setId(workflow.getId());
+ item.setStatus(retrievedItem.getStatus());
+ item.setVersionStatusCounters(retrievedItem.getVersionStatusCounters());
+
+ itemManager.update(item);
+ }
+}