1 package org.openecomp.core.zusammen.plugin.collaboration;
3 import com.amdocs.zusammen.datatypes.Id;
4 import com.amdocs.zusammen.datatypes.SessionContext;
5 import com.amdocs.zusammen.datatypes.Space;
6 import com.amdocs.zusammen.datatypes.item.Action;
7 import com.amdocs.zusammen.datatypes.itemversion.Tag;
8 import com.amdocs.zusammen.plugin.statestore.cassandra.dao.types.ElementEntityContext;
9 import com.amdocs.zusammen.sdk.collaboration.types.CollaborationElementChange;
10 import com.amdocs.zusammen.sdk.collaboration.types.CollaborationMergeChange;
11 import org.openecomp.core.zusammen.plugin.ZusammenPluginUtil;
12 import org.openecomp.core.zusammen.plugin.dao.ElementRepository;
13 import org.openecomp.core.zusammen.plugin.dao.ElementRepositoryFactory;
14 import org.openecomp.core.zusammen.plugin.dao.types.ElementEntity;
16 import java.util.Collection;
18 import static org.openecomp.core.zusammen.plugin.ZusammenPluginUtil.getSpaceName;
20 public class VersionCollaborationStore {
22 public void tagItemVersion(SessionContext context, Id itemId, Id versionId, Id changeId,
24 if (changeId != null) {
25 throw new UnsupportedOperationException(
26 "In this plugin implementation tag is supported only on versionId");
28 copyElements(context, getSpaceName(context, Space.PRIVATE), itemId, versionId, tag.getName());
31 public CollaborationMergeChange resetItemVersionHistory(SessionContext context, Id itemId,
32 Id versionId, String changeRef) {
33 ElementRepository elementRepository = getElementRepository(context);
34 ElementEntityContext elementContext =
35 new ElementEntityContext(getSpaceName(context, Space.PRIVATE), itemId, versionId);
37 CollaborationMergeChange resetChange = new CollaborationMergeChange();
39 Collection<ElementEntity> versionElements = elementRepository.list(context, elementContext);
40 versionElements.stream()
42 convertElementEntityToElementChange(elementEntity, elementContext, Action.DELETE))
43 .forEach(resetChange.getChangedElements()::add);
45 elementContext.setChangeRef(changeRef);
46 Collection<ElementEntity> changeRefElements = elementRepository.list(context, elementContext);
47 changeRefElements.stream()
49 convertElementEntityToElementChange(elementEntity, elementContext, Action.CREATE))
50 .forEach(resetChange.getChangedElements()::add);
52 return resetChange; // TODO: 4/19/2017 version change...
55 private void copyElements(SessionContext context, String space, Id itemId, Id sourceVersionId,
57 ElementRepository elementRepository = getElementRepository(context);
58 ElementEntityContext elementContext = new ElementEntityContext(space, itemId, sourceVersionId);
60 Collection<ElementEntity> versionElements = elementRepository.list(context, elementContext);
62 elementContext.setChangeRef(targetTag);
64 .forEach(elementEntity -> elementRepository.create(context, elementContext, elementEntity));
67 private CollaborationElementChange convertElementEntityToElementChange(
68 ElementEntity elementEntity, ElementEntityContext elementContext, Action action) {
69 CollaborationElementChange elementChange = new CollaborationElementChange();
71 .setElement(ZusammenPluginUtil.getCollaborationElement(elementContext, elementEntity));
72 elementChange.setAction(action);
76 protected ElementRepository getElementRepository(SessionContext context) {
77 return ElementRepositoryFactory.getInstance().createInterface(context);