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.ElementToEntitlementPoolConvertor;
20 import org.openecomp.sdc.vendorlicense.dao.impl.zusammen.convertor.ElementToFeatureGroupConvertor;
21 import org.openecomp.sdc.vendorlicense.dao.impl.zusammen.convertor.ElementToLicenseAgreementConvertor;
22 import org.openecomp.sdc.vendorlicense.dao.impl.zusammen.convertor.ElementToLicenseKeyGroupConvertor;
23 import org.openecomp.sdc.vendorlicense.dao.impl.zusammen.convertor.ElementToLimitConvertor;
24 import org.openecomp.sdc.vendorlicense.dao.impl.zusammen.convertor.ElementToVLMGeneralConvertor;
25 import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.convertor.ElementToComponentConvertor;
26 import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.convertor.ElementToComponentDependencyModelConvertor;
27 import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.convertor.ElementToCompositionEntityConvertor;
28 import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.convertor.ElementToComputeConvertor;
29 import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.convertor.ElementToImageConvertor;
30 import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.convertor.ElementToMonitoringUploadMapConvertor;
31 import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.convertor.ElementToNetworkConvertor;
32 import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.convertor.ElementToNicConvertor;
33 import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.convertor.ElementToOrchestrationTemplateCandidateMapConvertor;
34 import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.convertor.ElementToProcessConvertor;
35 import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.convertor.ElementToServiceModelMapConvertor;
36 import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.convertor.ElementToVSPGeneralConvertor;
37 import org.openecomp.sdc.versioning.dao.types.Version;
39 import static org.openecomp.core.zusammen.api.ZusammenUtil.buildElement;
40 import static org.openecomp.core.zusammen.api.ZusammenUtil.createSessionContext;
42 public class ConflictsDaoImpl implements ConflictsDao {
43 private final ZusammenAdaptor zusammenAdaptor;
45 public ConflictsDaoImpl(ZusammenAdaptor zusammenAdaptor) {
46 this.zusammenAdaptor = zusammenAdaptor;
50 public boolean isConflicted(String itemId, Version version) {
51 com.amdocs.zusammen.adaptor.inbound.api.types.item.ItemVersionConflict itemVersionConflict =
53 .getVersionConflict(createSessionContext(), new Id(itemId), new Id(version.getId()));
54 return !(itemVersionConflict == null
55 || (itemVersionConflict.getVersionDataConflict() == null
56 && itemVersionConflict.getElementConflictInfos().isEmpty()));
60 public ItemVersionConflict getConflict(String itemId, Version version) {
61 return new ItemVersionConflictConvertorFromZusammen().convert(itemId, version,
63 .getVersionConflict(createSessionContext(), new Id(itemId), new Id(version.getId())));
67 public Conflict getConflict(String itemId, Version version, String conflictId) {
68 return zusammenAdaptor.getElementConflict(createSessionContext(),
69 new ElementContext(new Id(itemId), new Id(version.getId())), new Id(conflictId))
70 .map(elementConflict -> convertElementConflict(conflictId, elementConflict))
75 public void resolveConflict(String itemId, Version version, String conflictId,
76 ConflictResolution conflictResolution) {
77 SessionContext context = createSessionContext();
78 ElementContext elementContext = new ElementContext(new Id(itemId), new Id(version.getId()));
80 // TODO: 7/31/2017 when 'OTHER' resolution will be supported - populate zusammen element with it
81 zusammenAdaptor.resolveElementConflict(context, elementContext,
82 buildElement(new Id(conflictId), null),
83 Resolution.valueOf(conflictResolution.getResolution().name()));
86 private Conflict convertElementConflict(String conflictId, ElementConflict elementConflict) {
87 Element element = elementConflict.getLocalElement() == null
88 ? elementConflict.getRemoteElement()
89 : elementConflict.getLocalElement();
90 ElementType elementType = ElementConvertor.getElementType(element);
93 new Conflict(conflictId, elementType, ElementConvertor.getElementName(element));
94 ElementConvertor convertor = getConvertor(elementType);
95 if (elementConflict.getLocalElement() != null) {
96 conflict.setYours(convertor.convert(elementConflict.getLocalElement()));
98 if (elementConflict.getRemoteElement() != null) {
99 conflict.setTheirs(convertor.convert(elementConflict.getRemoteElement()));
104 private ElementConvertor getConvertor(ElementType type) {
106 case VendorSoftwareProduct:
107 return new ElementToVSPGeneralConvertor();
109 return new ElementToProcessConvertor();
111 return new ElementToNicConvertor();
113 return new ElementToNetworkConvertor();
117 return new ElementToMonitoringUploadMapConvertor();
119 return new ElementToImageConvertor();
121 return new ElementToComputeConvertor();
123 return new ElementToComponentConvertor();
124 case ComponentDependencies:
125 return new ElementToComponentDependencyModelConvertor();
126 case VendorLicenseModel:
127 return new ElementToVLMGeneralConvertor();
128 case LicenseAgreement:
129 return new ElementToLicenseAgreementConvertor();
131 return new ElementToFeatureGroupConvertor();
132 case LicenseKeyGroup:
133 return new ElementToLicenseKeyGroupConvertor();
134 case EntitlementPool:
135 return new ElementToEntitlementPoolConvertor();
137 return new ElementToLimitConvertor();
138 case OrchestrationTemplateCandidate:
139 return new ElementToOrchestrationTemplateCandidateMapConvertor();
141 return new ElementToServiceModelMapConvertor();
142 case VSPQuestionnaire:
143 case ImageQuestionnaire:
144 case ComponentQuestionnaire:
145 case ComputeQuestionnaire:
146 case NicQuestionnaire:
147 return new ElementToCompositionEntityConvertor();
149 return new EchoConvertor();
153 public static class EchoConvertor extends ElementConvertor {
156 public Object convert(Element element) {
161 public Object convert(Item item) {
166 public Object convert(ElementInfo elementInfo) {
171 public Object convert(ItemVersion itemVersion) {