1 package org.openecomp.core.zusammen.plugin.collaboration.impl;
3 import com.amdocs.zusammen.datatypes.Id;
4 import com.amdocs.zusammen.datatypes.SessionContext;
5 import org.openecomp.core.zusammen.plugin.collaboration.VersionPrivateStore;
6 import org.openecomp.core.zusammen.plugin.dao.VersionDao;
7 import org.openecomp.core.zusammen.plugin.dao.VersionDaoFactory;
8 import org.openecomp.core.zusammen.plugin.dao.VersionSynchronizationStateRepository;
9 import org.openecomp.core.zusammen.plugin.dao.VersionSynchronizationStateRepositoryFactory;
10 import org.openecomp.core.zusammen.plugin.dao.types.SynchronizationStateEntity;
11 import org.openecomp.core.zusammen.plugin.dao.types.VersionContext;
12 import org.openecomp.core.zusammen.plugin.dao.types.VersionEntity;
14 import java.util.Date;
15 import java.util.Optional;
17 import static org.openecomp.core.zusammen.plugin.ZusammenPluginUtil.getPrivateSpaceName;
19 public class VersionPrivateStoreImpl implements VersionPrivateStore {
21 Id revisionId = Id.ZERO;
24 public Optional<VersionEntity> get(SessionContext context, Id itemId, Id versionId) {
25 return getVersionDao(context).get(context, getPrivateSpaceName(context), itemId, versionId);
29 public Optional<SynchronizationStateEntity> getSynchronizationState(SessionContext context,
30 Id itemId, Id versionId) {
32 return getVersionSyncStateRepository(context)
33 .get(context, new VersionContext(getPrivateSpaceName(context), itemId),
34 new SynchronizationStateEntity(versionId, revisionId));
38 public void create(SessionContext context, Id itemId, VersionEntity version) {
39 String privateSpace = getPrivateSpaceName(context);
42 getVersionDao(context).create(context, privateSpace, itemId, version);
43 getVersionSyncStateRepository(context).create(context, new VersionContext(privateSpace,
45 new SynchronizationStateEntity(version.getId(), revisionId, null, true));
49 public void update(SessionContext context, Id itemId, VersionEntity version) {
51 getVersionDao(context)
52 .updateModificationTime(context, getPrivateSpaceName(context), itemId, version.getId(),
53 version.getModificationTime());
57 public void update(SessionContext context, Id itemId, VersionEntity version, Date publishTime,
59 getVersionSyncStateRepository(context).updatePublishTime(context,
60 new VersionContext(getPrivateSpaceName(context), itemId),
61 new SynchronizationStateEntity(version.getId(), revisionId, publishTime, dirty));
65 public void delete(SessionContext context, Id itemId, VersionEntity version) {
66 String privateSpace = getPrivateSpaceName(context);
68 getVersionDao(context).delete(context, privateSpace, itemId, version.getId());
69 getVersionSyncStateRepository(context).delete(context, new VersionContext(privateSpace,
71 new SynchronizationStateEntity(version.getId(), revisionId));
75 public void markAsPublished(SessionContext context, Id itemId, Id versionId, Date publishTime) {
76 getVersionSyncStateRepository(context)
77 .updatePublishTime(context, new VersionContext(getPrivateSpaceName(context), itemId),
78 new SynchronizationStateEntity(versionId, revisionId, publishTime, false));
82 public void commitStagedCreate(SessionContext context, Id itemId, VersionEntity version,
84 String privateSpace = getPrivateSpaceName(context);
86 getVersionDao(context).create(context, privateSpace, itemId, version);
87 getVersionSyncStateRepository(context).create(context, new VersionContext(privateSpace,
89 new SynchronizationStateEntity(version.getId(), revisionId, publishTime, false));
93 public void commitStagedUpdate(SessionContext context, Id itemId, VersionEntity version,
95 update(context, itemId, version, publishTime, false);
99 public void commitStagedIgnore(SessionContext context, Id itemId, VersionEntity version,
101 getVersionSyncStateRepository(context).updatePublishTime(context,
102 new VersionContext(getPrivateSpaceName(context), itemId),
103 new SynchronizationStateEntity(version.getId(), revisionId, publishTime, false));
109 protected VersionDao getVersionDao(SessionContext context) {
110 return VersionDaoFactory.getInstance().createInterface(context);
113 protected VersionSynchronizationStateRepository getVersionSyncStateRepository(
114 SessionContext context) {
115 return VersionSynchronizationStateRepositoryFactory.getInstance().createInterface(context);