diff options
Diffstat (limited to 'openecomp-be/lib/openecomp-core-lib/openecomp-zusammen-lib/openecomp-zusammen-plugin/src/main/java/org/openecomp/core/zusammen/plugin/collaboration/impl/ElementPrivateStoreImpl.java')
-rw-r--r-- | openecomp-be/lib/openecomp-core-lib/openecomp-zusammen-lib/openecomp-zusammen-plugin/src/main/java/org/openecomp/core/zusammen/plugin/collaboration/impl/ElementPrivateStoreImpl.java | 269 |
1 files changed, 0 insertions, 269 deletions
diff --git a/openecomp-be/lib/openecomp-core-lib/openecomp-zusammen-lib/openecomp-zusammen-plugin/src/main/java/org/openecomp/core/zusammen/plugin/collaboration/impl/ElementPrivateStoreImpl.java b/openecomp-be/lib/openecomp-core-lib/openecomp-zusammen-lib/openecomp-zusammen-plugin/src/main/java/org/openecomp/core/zusammen/plugin/collaboration/impl/ElementPrivateStoreImpl.java deleted file mode 100644 index 9f54ee3ae2..0000000000 --- a/openecomp-be/lib/openecomp-core-lib/openecomp-zusammen-lib/openecomp-zusammen-plugin/src/main/java/org/openecomp/core/zusammen/plugin/collaboration/impl/ElementPrivateStoreImpl.java +++ /dev/null @@ -1,269 +0,0 @@ -package org.openecomp.core.zusammen.plugin.collaboration.impl; - -import com.amdocs.zusammen.datatypes.Id; -import com.amdocs.zusammen.datatypes.SessionContext; -import com.amdocs.zusammen.datatypes.item.ElementContext; -import com.amdocs.zusammen.plugin.statestore.cassandra.dao.types.ElementEntityContext; -import org.openecomp.core.zusammen.plugin.ZusammenPluginConstants; -import org.openecomp.core.zusammen.plugin.collaboration.ElementPrivateStore; -import org.openecomp.core.zusammen.plugin.dao.ElementRepository; -import org.openecomp.core.zusammen.plugin.dao.ElementRepositoryFactory; -import org.openecomp.core.zusammen.plugin.dao.ElementSynchronizationStateRepository; -import org.openecomp.core.zusammen.plugin.dao.ElementSynchronizationStateRepositoryFactory; -import org.openecomp.core.zusammen.plugin.dao.types.ElementEntity; -import org.openecomp.core.zusammen.plugin.dao.types.SynchronizationStateEntity; - -import java.util.Collection; -import java.util.Date; -import java.util.HashSet; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; -import java.util.stream.Collectors; - -import static org.openecomp.core.zusammen.plugin.ZusammenPluginUtil.getPrivateElementContext; -import static org.openecomp.core.zusammen.plugin.ZusammenPluginUtil.getPrivateSpaceName; - -public class ElementPrivateStoreImpl implements ElementPrivateStore { - private static final Id REVISION_ID = Id.ZERO; // the private revision id is Id.ZERO 0000000... - - @Override - public Map<Id, Id> listIds(SessionContext context, ElementContext elementContext) { - return getElementRepository(context) - .listIds(context, new ElementEntityContext(getPrivateSpaceName(context), elementContext)); - } - - @Override - public Collection<ElementEntity> listSubs(SessionContext context, ElementContext elementContext, - Id elementId) { - if (elementId == null) { - elementId = ZusammenPluginConstants.ROOT_ELEMENTS_PARENT_ID; - } - - ElementRepository elementRepository = getElementRepository(context); - ElementEntityContext privateContext = - new ElementEntityContext(getPrivateSpaceName(context), elementContext); - privateContext.setRevisionId(REVISION_ID); - return elementRepository.get(context, privateContext, new ElementEntity(elementId)) - .map(ElementEntity::getSubElementIds).orElse(new HashSet<>()).stream() - .map(subElementId -> elementRepository - .get(context, privateContext, new ElementEntity(subElementId)).get()) - .filter(Objects::nonNull) - .collect(Collectors.toList()); - } - - @Override - public Optional<ElementEntity> get(SessionContext context, ElementContext elementContext, - Id elementId) { - ElementEntityContext privateElementContext = - new ElementEntityContext(getPrivateSpaceName(context), elementContext); - privateElementContext.setRevisionId(REVISION_ID); - return getElementRepository(context) - .get(context, privateElementContext, - new ElementEntity(elementId)); - } - - @Override - public Optional<ElementEntity> getDescriptor(SessionContext context, - ElementContext elementContext, Id elementId) { - return getElementRepository(context) - .getDescriptor(context, - new ElementEntityContext(getPrivateSpaceName(context), getPrivateElementContext - (elementContext)), - new ElementEntity(elementId)); - } - - @Override - public Collection<SynchronizationStateEntity> listSynchronizationStates(SessionContext context, - ElementContext elementContext) { - ElementEntityContext privateElementContext = - new ElementEntityContext(getPrivateSpaceName(context), elementContext); - return getElementSyncStateRepository(context) - .list(context, privateElementContext); - } - - @Override - public Optional<SynchronizationStateEntity> getSynchronizationState(SessionContext context, - ElementContext elementContext, - Id elementId) { - - ElementEntityContext privateElementContext = - new ElementEntityContext(getPrivateSpaceName(context), getPrivateElementContext - (elementContext)); - return getElementSyncStateRepository(context) - .get(context, privateElementContext, - new SynchronizationStateEntity(elementId, REVISION_ID)); - } - - @Override - public void create(SessionContext context, ElementContext elementContext, ElementEntity element) { - create(context, elementContext, element, true, null); - } - - @Override - public boolean update(SessionContext context, ElementContext elementContext, - ElementEntity element) { - ElementEntityContext privateContext = - new ElementEntityContext(getPrivateSpaceName(context), elementContext); - privateContext.setRevisionId(REVISION_ID); - - if (!isElementChanged(context, privateContext, element)) { - return false; - } - - getElementRepository(context).update(context, privateContext, element); - getElementSyncStateRepository(context).markAsDirty(context, privateContext, - new SynchronizationStateEntity(element.getId(), REVISION_ID)); - return true; - } - - @Override - public void delete(SessionContext context, ElementContext elementContext, ElementEntity element) { - - ElementEntityContext privateElementContext = - new ElementEntityContext(getPrivateSpaceName(context), elementContext); - privateElementContext.setRevisionId(REVISION_ID); - deleteElementHierarchy(context, getElementRepository(context), - getElementSyncStateRepository(context), - privateElementContext, element); - } - - @Override - public void markAsPublished(SessionContext context, ElementContext elementContext, Id elementId, - Date publishTime) { - ElementEntityContext privateContext = - new ElementEntityContext(getPrivateSpaceName(context), elementContext); - privateContext.setRevisionId(REVISION_ID); - getElementSyncStateRepository(context).update(context, - privateContext, - new SynchronizationStateEntity(elementId, REVISION_ID, publishTime, false)); - } - - @Override - public void markDeletionAsPublished(SessionContext context, ElementContext elementContext, - Id elementId, Date publishTime) { - - ElementEntityContext privateContext = - new ElementEntityContext(getPrivateSpaceName(context), elementContext); - privateContext.setRevisionId(REVISION_ID); - getElementSyncStateRepository(context).delete(context, - privateContext, - new SynchronizationStateEntity(elementId, REVISION_ID)); - } - - @Override - public void commitStagedCreate(SessionContext context, ElementContext elementContext, - ElementEntity element, Date publishTime) { - create(context, elementContext, element, false, publishTime); - } - - @Override - public void commitStagedUpdate(SessionContext context, ElementContext elementContext, - ElementEntity element, Date publishTime) { - ElementEntityContext privateContext = - new ElementEntityContext(getPrivateSpaceName(context), elementContext); - privateContext.setRevisionId(REVISION_ID); - - getElementRepository(context).update(context, privateContext, element); - // Currently Resolution='Other' is not supported so this is invoked after conflict was - // resolved with Resolution='Theirs' so dirty flag should be turned off. - // (if there was no conflict it's off anyway) - getElementSyncStateRepository(context).update(context, privateContext, - new SynchronizationStateEntity(element.getId(), REVISION_ID, publishTime, false)); - } - - @Override - public void commitStagedDelete(SessionContext context, ElementContext elementContext, - ElementEntity element) { - ElementEntityContext privateContext = - new ElementEntityContext(getPrivateSpaceName(context), elementContext); - privateContext.setRevisionId(REVISION_ID); - getElementRepository(context).delete(context, privateContext, element); - getElementSyncStateRepository(context) - .delete(context, privateContext, - new SynchronizationStateEntity(element.getId(), REVISION_ID)); - } - - @Override - public void commitStagedIgnore(SessionContext context, ElementContext elementContext, - ElementEntity element, Date publishTime) { - // publish time - updated to mark that this element was already synced with this publish time - // (even though the local data was preferred) and to prevent this conflict again. - // dirty - turned on because the local data which is different than the public one was - // preferred. It will enable future publication of this data. - getElementSyncStateRepository(context).update(context, - new ElementEntityContext(getPrivateSpaceName(context), elementContext), - new SynchronizationStateEntity(element.getId(), REVISION_ID, publishTime, true)); - } - - private void create(SessionContext context, ElementContext elementContext, - ElementEntity element, boolean dirty, Date publishTime) { - ElementEntityContext privateContext = - new ElementEntityContext(getPrivateSpaceName(context), elementContext); - privateContext.setRevisionId(REVISION_ID); - getElementRepository(context).create(context, privateContext, element); - getElementSyncStateRepository(context).create(context, privateContext, - new SynchronizationStateEntity(element.getId(), REVISION_ID, publishTime, dirty)); - } - - - private void deleteElementHierarchy( - SessionContext context, ElementRepository elementRepository, - ElementSynchronizationStateRepository elementSyncStateRepository, - ElementEntityContext elementContext, ElementEntity element) { - - Optional<ElementEntity> retrieved = elementRepository.get(context, elementContext, element); - if (!retrieved.isPresent()) { - return; - } - retrieved.get().getSubElementIds().stream() - .map(ElementEntity::new) - .forEach(subElementEntity -> deleteElementHierarchy( - context, elementRepository, elementSyncStateRepository, elementContext, - subElementEntity)); - - // only for the first one the parentId will populated (so it'll be removed from its parent) - elementRepository.delete(context, elementContext, element); - handleDeletedElementSyncState(context, elementSyncStateRepository, elementContext, element); - } - - private void handleDeletedElementSyncState(SessionContext context, - ElementSynchronizationStateRepository elementSyncStateRepository, - ElementEntityContext elementContext, - ElementEntity element) { - SynchronizationStateEntity elementSyncState = new SynchronizationStateEntity(element.getId(), - REVISION_ID); - if (elementSyncStateRepository.get(context, elementContext, elementSyncState). - orElseThrow( - () -> new IllegalStateException("Synchronization state must exist for an element")) - .getPublishTime() == null) { - elementSyncStateRepository.delete(context, elementContext, elementSyncState); - } else { - elementSyncStateRepository.markAsDirty(context, elementContext, elementSyncState); - } - } - - private boolean isElementChanged(SessionContext context, - ElementEntityContext elementContext, - ElementEntity newElement) { - return getElementHash(context, elementContext, new ElementEntity(newElement.getId())) - .map(existingHash -> !newElement.getElementHash().equals(existingHash)) - .orElse(true); - } - - private Optional<Id> getElementHash(SessionContext context, - ElementEntityContext elementEntityContext, - ElementEntity element) { - return getElementRepository(context).getHash(context, elementEntityContext, element); - } - - protected ElementRepository getElementRepository(SessionContext context) { - return ElementRepositoryFactory.getInstance().createInterface(context); - } - - protected ElementSynchronizationStateRepository getElementSyncStateRepository( - SessionContext context) { - return ElementSynchronizationStateRepositoryFactory.getInstance().createInterface(context); - } - -} |