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 java.util.function.Supplier;
33 import org.openecomp.conflicts.dao.ConflictsDao;
34 import org.openecomp.conflicts.types.Conflict;
35 import org.openecomp.conflicts.types.ConflictResolution;
36 import org.openecomp.conflicts.types.ItemVersionConflict;
37 import org.openecomp.convertor.ElementConvertor;
38 import org.openecomp.core.zusammen.api.ZusammenAdaptor;
39 import org.openecomp.sdc.datatypes.model.ElementType;
40 import org.openecomp.sdc.vendorlicense.dao.impl.zusammen.convertor.*;
41 import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.convertor.*;
42 import org.openecomp.sdc.versioning.dao.types.Version;
44 import static org.openecomp.core.zusammen.api.ZusammenUtil.buildElement;
46 public class ConflictsDaoImpl implements ConflictsDao {
47 private final ZusammenAdaptor zusammenAdaptor;
48 private final Supplier<SessionContext> sessionContextProvider;
50 public ConflictsDaoImpl(ZusammenAdaptor zusammenAdaptor, Supplier<SessionContext> sessionContextProvider) {
51 this.zusammenAdaptor = zusammenAdaptor;
52 this.sessionContextProvider = sessionContextProvider;
56 public boolean isConflicted(String itemId, Version version) {
57 com.amdocs.zusammen.adaptor.inbound.api.types.item.ItemVersionConflict itemVersionConflict =
59 .getVersionConflict(sessionContextProvider.get(), new Id(itemId), new Id(version.getId()));
60 return !(itemVersionConflict == null
61 || (itemVersionConflict.getVersionDataConflict() == null
62 && itemVersionConflict.getElementConflictInfos().isEmpty()));
66 public ItemVersionConflict getConflict(String itemId, Version version) {
67 return new ItemVersionConflictConvertorFromZusammen().convert(itemId, version,
69 .getVersionConflict(sessionContextProvider.get(), new Id(itemId), new Id(version.getId())));
73 public Conflict getConflict(String itemId, Version version, String conflictId) {
74 return zusammenAdaptor.getElementConflict(sessionContextProvider.get(),
75 new ElementContext(new Id(itemId), new Id(version.getId())), new Id(conflictId))
76 .map(elementConflict -> convertElementConflict(conflictId, elementConflict))
81 public void resolveConflict(String itemId, Version version, String conflictId,
82 ConflictResolution conflictResolution) {
83 SessionContext context = sessionContextProvider.get();
84 ElementContext elementContext = new ElementContext(new Id(itemId), new Id(version.getId()));
86 // TODO: 7/31/2017 when 'OTHER' resolution will be supported - populate zusammen element with it
87 zusammenAdaptor.resolveElementConflict(context, elementContext,
88 buildElement(new Id(conflictId), null),
89 Resolution.valueOf(conflictResolution.getResolution().name()));
92 private Conflict convertElementConflict(String conflictId, ElementConflict elementConflict) {
93 Element element = elementConflict.getLocalElement() == null
94 ? elementConflict.getRemoteElement()
95 : elementConflict.getLocalElement();
96 ElementType elementType = ElementConvertor.getElementType(element);
99 new Conflict(conflictId, elementType, ElementConvertor.getElementName(element));
100 ElementConvertor convertor = getConvertor(elementType);
101 if (elementConflict.getLocalElement() != null) {
102 conflict.setYours(convertor.convert(elementConflict.getLocalElement()));
104 if (elementConflict.getRemoteElement() != null) {
105 conflict.setTheirs(convertor.convert(elementConflict.getRemoteElement()));
110 private ElementConvertor getConvertor(ElementType type) {
112 case VendorSoftwareProduct:
113 return new ElementToVSPGeneralConvertor();
115 return new ElementToProcessConvertor();
117 return new ElementToNicConvertor();
119 return new ElementToNetworkConvertor();
123 return new ElementToMonitoringUploadMapConvertor();
125 return new ElementToImageConvertor();
127 return new ElementToComputeConvertor();
129 return new ElementToComponentConvertor();
130 case ComponentDependencies:
131 return new ElementToComponentDependencyModelConvertor();
132 case VendorLicenseModel:
133 return new ElementToVLMGeneralConvertor();
134 case LicenseAgreement:
135 return new ElementToLicenseAgreementConvertor();
137 return new ElementToFeatureGroupConvertor();
138 case LicenseKeyGroup:
139 return new ElementToLicenseKeyGroupConvertor();
140 case EntitlementPool:
141 return new ElementToEntitlementPoolConvertor();
143 return new ElementToLimitConvertor();
144 case OrchestrationTemplateCandidate:
145 return new ElementToOrchestrationTemplateCandidateMapConvertor();
147 return new ElementToServiceModelMapConvertor();
148 case VSPQuestionnaire:
149 case ImageQuestionnaire:
150 case ComponentQuestionnaire:
151 case ComputeQuestionnaire:
152 case NicQuestionnaire:
153 return new ElementToCompositionEntityConvertor();
155 return new EchoConvertor();
159 public static class EchoConvertor extends ElementConvertor {
162 public Object convert(Element element) {
167 public Object convert(Item item) {
172 public Object convert(ElementInfo elementInfo) {
177 public Object convert(ItemVersion itemVersion) {