1 package org.openecomp.conflicts.dao.impl.zusammen;
3 import com.amdocs.zusammen.adaptor.inbound.api.types.item.Element;
4 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementConflict;
5 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementInfo;
6 import com.amdocs.zusammen.datatypes.Id;
7 import com.amdocs.zusammen.datatypes.SessionContext;
8 import com.amdocs.zusammen.datatypes.item.ElementContext;
9 import com.amdocs.zusammen.datatypes.item.Item;
10 import com.amdocs.zusammen.datatypes.item.ItemVersion;
11 import com.amdocs.zusammen.datatypes.item.Resolution;
12 import org.openecomp.conflicts.dao.ConflictsDao;
13 import org.openecomp.conflicts.types.Conflict;
14 import org.openecomp.conflicts.types.ConflictResolution;
15 import org.openecomp.conflicts.types.ItemVersionConflict;
16 import org.openecomp.convertor.ElementConvertor;
17 import org.openecomp.core.zusammen.api.ZusammenAdaptor;
18 import org.openecomp.sdc.datatypes.model.ElementType;
19 import org.openecomp.sdc.vendorlicense.dao.impl.zusammen.convertor.*;
20 import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.convertor.*;
21 import org.openecomp.sdc.versioning.dao.types.Version;
23 import static org.openecomp.core.zusammen.api.ZusammenUtil.buildElement;
24 import static org.openecomp.core.zusammen.api.ZusammenUtil.createSessionContext;
26 public class ConflictsDaoImpl implements ConflictsDao {
27 private final ZusammenAdaptor zusammenAdaptor;
29 public ConflictsDaoImpl(ZusammenAdaptor zusammenAdaptor) {
30 this.zusammenAdaptor = zusammenAdaptor;
34 public boolean isConflicted(String itemId, Version version) {
35 com.amdocs.zusammen.adaptor.inbound.api.types.item.ItemVersionConflict itemVersionConflict =
37 .getVersionConflict(createSessionContext(), new Id(itemId), new Id(version.getId()));
38 return !(itemVersionConflict == null
39 || (itemVersionConflict.getVersionDataConflict() == null
40 && itemVersionConflict.getElementConflictInfos().isEmpty()));
44 public ItemVersionConflict getConflict(String itemId, Version version) {
45 return new ItemVersionConflictConvertorFromZusammen().convert(itemId, version,
47 .getVersionConflict(createSessionContext(), new Id(itemId), new Id(version.getId())));
51 public Conflict getConflict(String itemId, Version version, String conflictId) {
52 return zusammenAdaptor.getElementConflict(createSessionContext(),
53 new ElementContext(new Id(itemId), new Id(version.getId())), new Id(conflictId))
54 .map(elementConflict -> convertElementConflict(conflictId, elementConflict))
59 public void resolveConflict(String itemId, Version version, String conflictId,
60 ConflictResolution conflictResolution) {
61 SessionContext context = createSessionContext();
62 ElementContext elementContext = new ElementContext(new Id(itemId), new Id(version.getId()));
64 // TODO: 7/31/2017 when 'OTHER' resolution will be supported - populate zusammen element with it
65 zusammenAdaptor.resolveElementConflict(context, elementContext,
66 buildElement(new Id(conflictId), null),
67 Resolution.valueOf(conflictResolution.getResolution().name()));
70 private Conflict convertElementConflict(String conflictId, ElementConflict elementConflict) {
71 Element element = elementConflict.getLocalElement() == null
72 ? elementConflict.getRemoteElement()
73 : elementConflict.getLocalElement();
74 ElementType elementType = ElementConvertor.getElementType(element);
77 new Conflict(conflictId, elementType, ElementConvertor.getElementName(element));
78 ElementConvertor convertor = getConvertor(elementType);
79 if (elementConflict.getLocalElement() != null) {
80 conflict.setYours(convertor.convert(elementConflict.getLocalElement()));
82 if (elementConflict.getRemoteElement() != null) {
83 conflict.setTheirs(convertor.convert(elementConflict.getRemoteElement()));
88 private ElementConvertor getConvertor(ElementType type) {
90 case VendorSoftwareProduct:
91 return new ElementToVSPGeneralConvertor();
93 return new ElementToProcessConvertor();
95 return new ElementToNicConvertor();
97 return new ElementToNetworkConvertor();
101 return new ElementToMonitoringUploadMapConvertor();
103 return new ElementToImageConvertor();
105 return new ElementToComputeConvertor();
107 return new ElementToComponentConvertor();
108 case ComponentDependencies:
109 return new ElementToComponentDependencyModelConvertor();
110 case VendorLicenseModel:
111 return new ElementToVLMGeneralConvertor();
112 case LicenseAgreement:
113 return new ElementToLicenseAgreementConvertor();
115 return new ElementToFeatureGroupConvertor();
116 case LicenseKeyGroup:
117 return new ElementToLicenseKeyGroupConvertor();
118 case EntitlementPool:
119 return new ElementToEntitlementPoolConvertor();
121 return new ElementToLimitConvertor();
122 case OrchestrationTemplateCandidate:
123 return new ElementToOrchestrationTemplateCandidateMapConvertor();
125 return new ElementToServiceModelMapConvertor();
126 case VSPQuestionnaire:
127 case ImageQuestionnaire:
128 case ComponentQuestionnaire:
129 case ComputeQuestionnaire:
130 case NicQuestionnaire:
131 return new ElementToCompositionEntityConvertor();
133 return new EchoConvertor();
137 public static class EchoConvertor extends ElementConvertor {
140 public Object convert(Element element) {
145 public Object convert(Item item) {
150 public Object convert(ElementInfo elementInfo) {
155 public Object convert(ItemVersion itemVersion) {