2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.openecomp.conflicts.dao.impl.zusammen;
23 import com.amdocs.zusammen.adaptor.inbound.api.types.item.Element;
24 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementConflict;
25 import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementInfo;
26 import com.amdocs.zusammen.datatypes.Id;
27 import com.amdocs.zusammen.datatypes.SessionContext;
28 import com.amdocs.zusammen.datatypes.item.ElementContext;
29 import com.amdocs.zusammen.datatypes.item.Item;
30 import com.amdocs.zusammen.datatypes.item.ItemVersion;
31 import com.amdocs.zusammen.datatypes.item.Resolution;
32 import org.openecomp.conflicts.dao.ConflictsDao;
33 import org.openecomp.conflicts.types.Conflict;
34 import org.openecomp.conflicts.types.ConflictResolution;
35 import org.openecomp.conflicts.types.ItemVersionConflict;
36 import org.openecomp.convertor.ElementConvertor;
37 import org.openecomp.core.zusammen.api.ZusammenAdaptor;
38 import org.openecomp.sdc.datatypes.model.ElementType;
39 import org.openecomp.sdc.vendorlicense.dao.impl.zusammen.convertor.*;
40 import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.convertor.*;
41 import org.openecomp.sdc.versioning.dao.types.Version;
43 import static org.openecomp.core.zusammen.api.ZusammenUtil.buildElement;
44 import static org.openecomp.core.zusammen.api.ZusammenUtil.createSessionContext;
46 public class ConflictsDaoImpl implements ConflictsDao {
47 private final ZusammenAdaptor zusammenAdaptor;
49 public ConflictsDaoImpl(ZusammenAdaptor zusammenAdaptor) {
50 this.zusammenAdaptor = zusammenAdaptor;
54 public boolean isConflicted(String itemId, Version version) {
55 com.amdocs.zusammen.adaptor.inbound.api.types.item.ItemVersionConflict itemVersionConflict =
57 .getVersionConflict(createSessionContext(), new Id(itemId), new Id(version.getId()));
58 return !(itemVersionConflict == null
59 || (itemVersionConflict.getVersionDataConflict() == null
60 && itemVersionConflict.getElementConflictInfos().isEmpty()));
64 public ItemVersionConflict getConflict(String itemId, Version version) {
65 return new ItemVersionConflictConvertorFromZusammen().convert(itemId, version,
67 .getVersionConflict(createSessionContext(), new Id(itemId), new Id(version.getId())));
71 public Conflict getConflict(String itemId, Version version, String conflictId) {
72 return zusammenAdaptor.getElementConflict(createSessionContext(),
73 new ElementContext(new Id(itemId), new Id(version.getId())), new Id(conflictId))
74 .map(elementConflict -> convertElementConflict(conflictId, elementConflict))
79 public void resolveConflict(String itemId, Version version, String conflictId,
80 ConflictResolution conflictResolution) {
81 SessionContext context = createSessionContext();
82 ElementContext elementContext = new ElementContext(new Id(itemId), new Id(version.getId()));
84 // TODO: 7/31/2017 when 'OTHER' resolution will be supported - populate zusammen element with it
85 zusammenAdaptor.resolveElementConflict(context, elementContext,
86 buildElement(new Id(conflictId), null),
87 Resolution.valueOf(conflictResolution.getResolution().name()));
90 private Conflict convertElementConflict(String conflictId, ElementConflict elementConflict) {
91 Element element = elementConflict.getLocalElement() == null
92 ? elementConflict.getRemoteElement()
93 : elementConflict.getLocalElement();
94 ElementType elementType = ElementConvertor.getElementType(element);
97 new Conflict(conflictId, elementType, ElementConvertor.getElementName(element));
98 ElementConvertor convertor = getConvertor(elementType);
99 if (elementConflict.getLocalElement() != null) {
100 conflict.setYours(convertor.convert(elementConflict.getLocalElement()));
102 if (elementConflict.getRemoteElement() != null) {
103 conflict.setTheirs(convertor.convert(elementConflict.getRemoteElement()));
108 private ElementConvertor getConvertor(ElementType type) {
110 case VendorSoftwareProduct:
111 return new ElementToVSPGeneralConvertor();
113 return new ElementToProcessConvertor();
115 return new ElementToNicConvertor();
117 return new ElementToNetworkConvertor();
121 return new ElementToMonitoringUploadMapConvertor();
123 return new ElementToImageConvertor();
125 return new ElementToComputeConvertor();
127 return new ElementToComponentConvertor();
128 case ComponentDependencies:
129 return new ElementToComponentDependencyModelConvertor();
130 case VendorLicenseModel:
131 return new ElementToVLMGeneralConvertor();
132 case LicenseAgreement:
133 return new ElementToLicenseAgreementConvertor();
135 return new ElementToFeatureGroupConvertor();
136 case LicenseKeyGroup:
137 return new ElementToLicenseKeyGroupConvertor();
138 case EntitlementPool:
139 return new ElementToEntitlementPoolConvertor();
141 return new ElementToLimitConvertor();
142 case OrchestrationTemplateCandidate:
143 return new ElementToOrchestrationTemplateCandidateMapConvertor();
145 return new ElementToServiceModelMapConvertor();
146 case VSPQuestionnaire:
147 case ImageQuestionnaire:
148 case ComponentQuestionnaire:
149 case ComputeQuestionnaire:
150 case NicQuestionnaire:
151 return new ElementToCompositionEntityConvertor();
153 return new EchoConvertor();
157 public static class EchoConvertor extends ElementConvertor {
160 public Object convert(Element element) {
165 public Object convert(Item item) {
170 public Object convert(ElementInfo elementInfo) {
175 public Object convert(ItemVersion itemVersion) {