[SDC-29] Amdocs OnBoard 1707 initial commit.
[sdc.git] / openecomp-be / lib / openecomp-sdc-versioning-lib / openecomp-sdc-versioning-core / src / main / java / org / openecomp / sdc / versioning / dao / impl / VersionableEntityDaoZusammenImpl.java
1 package org.openecomp.sdc.versioning.dao.impl;
2
3 import com.amdocs.zusammen.datatypes.Id;
4 import com.amdocs.zusammen.datatypes.SessionContext;
5 import com.amdocs.zusammen.datatypes.item.ItemVersion;
6 import com.amdocs.zusammen.datatypes.itemversion.Tag;
7 import org.openecomp.core.zusammen.api.ZusammenAdaptor;
8 import org.openecomp.core.zusammen.api.ZusammenUtil;
9 import org.openecomp.sdc.versioning.dao.VersionableEntityDao;
10 import org.openecomp.sdc.versioning.dao.types.Version;
11 import org.openecomp.sdc.versioning.types.VersionableEntityMetadata;
12
13 import java.util.Optional;
14
15 public class VersionableEntityDaoZusammenImpl implements VersionableEntityDao {
16
17   private ZusammenAdaptor zusammenAdaptor;
18
19   public VersionableEntityDaoZusammenImpl(ZusammenAdaptor zusammenAdaptor) {
20     this.zusammenAdaptor = zusammenAdaptor;
21   }
22
23   @Override
24   public void initVersion(VersionableEntityMetadata versionableTableMetadata, String entityId,
25                           Version baseVersion, Version newVersion) {
26     // redundant in zusammen impl.
27   }
28
29   @Override
30   public void deleteVersion(VersionableEntityMetadata versionableTableMetadata, String entityId,
31                             Version versionToDelete, Version backToVersion) {
32     SessionContext context = ZusammenUtil.createSessionContext();
33     Id itemId = new Id(entityId);
34     Id versionId = getItemVersionId(itemId, context);
35     zusammenAdaptor.resetVersionHistory(context, itemId, versionId, backToVersion.toString());
36   }
37
38   @Override
39   public void closeVersion(VersionableEntityMetadata versionableTableMetadata, String entityId,
40                            Version versionToClose) {
41     SessionContext context = ZusammenUtil.createSessionContext();
42     Id itemId = new Id(entityId);
43     Id versionId = getItemVersionId(itemId, context);
44     zusammenAdaptor
45         .tagVersion(context, itemId, versionId, new Tag(versionToClose.toString(), null));
46   }
47
48   // TODO: 3/19/2017 move to a common util
49   private Id getItemVersionId(Id itemId, SessionContext context) {
50     Optional<ItemVersion> itemVersionOptional = zusammenAdaptor.getFirstVersion(context, itemId);
51     ItemVersion itemVersion = itemVersionOptional.orElseThrow(() ->
52         new RuntimeException(String.format("No version was found for item %s.", itemId)));
53     return itemVersion.getId();
54   }
55 }