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);