cda179141c936f785d352c8055148add34f846ca
[sdc/sdc-workflow-designer.git] /
1 package org.onap.sdc.workflow.services.impl;
2
3 import java.util.Collection;
4 import java.util.List;
5 import java.util.Objects;
6 import java.util.Optional;
7 import org.onap.sdc.workflow.services.WorkflowVersionManager;
8 import org.onap.sdc.workflow.services.exceptions.VersionNotFoundException;
9 import org.openecomp.sdc.versioning.VersioningManager;
10 import org.openecomp.sdc.versioning.dao.types.Version;
11 import org.openecomp.sdc.versioning.types.VersionCreationMethod;
12 import org.springframework.beans.factory.annotation.Autowired;
13 import org.springframework.stereotype.Service;
14
15 @Service("workflowVersionManager")
16 public class WorkflowVersionManagerImpl  implements WorkflowVersionManager {
17
18     private final VersioningManager versioningManager;
19
20     @Autowired
21     public WorkflowVersionManagerImpl(VersioningManager versioningManager) {
22         this.versioningManager = versioningManager;
23     }
24
25     @Override
26     public Collection<Version> list(String id) {
27         return versioningManager.list(id);
28     }
29
30     @Override
31     public Version get(String id,Version version) {
32
33         try {
34             return versioningManager.get(id, version);
35         } catch (Exception e){
36             throw new VersionNotFoundException(id,version.getId());
37         }
38     }
39
40     @Override
41     public Version create(String id, Version version) {
42         if (Objects.nonNull(getLatestVersion(id)))
43             version.setBaseId(getLatestVersion(id).getId());
44         return versioningManager.create(id,version, VersionCreationMethod.major);
45     }
46
47     @Override
48     public void update(String id,Version version) {
49
50         versioningManager.updateVersion(id,version);
51     }
52
53     private Version getLatestVersion(String itemId) {
54         List<Version> list = versioningManager.list(itemId);
55         Optional<Version> max = list.stream().max(Version::compareTo);
56
57         return max.orElse(null);
58     }
59
60 }