diff options
Diffstat (limited to 'openecomp-be/lib/openecomp-conflict-lib/openecomp-conflict-core/src')
5 files changed, 333 insertions, 373 deletions
diff --git a/openecomp-be/lib/openecomp-conflict-lib/openecomp-conflict-core/src/main/java/org/openecomp/conflicts/ItemMergeHandlerFactoryImpl.java b/openecomp-be/lib/openecomp-conflict-lib/openecomp-conflict-core/src/main/java/org/openecomp/conflicts/ItemMergeHandlerFactoryImpl.java index 3c879dee17..bff46a81fa 100644 --- a/openecomp-be/lib/openecomp-conflict-lib/openecomp-conflict-core/src/main/java/org/openecomp/conflicts/ItemMergeHandlerFactoryImpl.java +++ b/openecomp-be/lib/openecomp-conflict-lib/openecomp-conflict-core/src/main/java/org/openecomp/conflicts/ItemMergeHandlerFactoryImpl.java @@ -13,9 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.openecomp.conflicts; +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; import org.openecomp.conflicts.dao.ConflictsDaoFactory; import org.openecomp.conflicts.impl.VspMergeHandler; import org.openecomp.sdc.common.errors.CoreException; @@ -25,32 +27,27 @@ import org.openecomp.sdc.versioning.AsdcItemManagerFactory; import org.openecomp.sdc.versioning.errors.EntityNotExistErrorBuilder; import org.openecomp.sdc.versioning.types.Item; -import java.util.HashMap; -import java.util.Map; -import java.util.Optional; - public class ItemMergeHandlerFactoryImpl extends ItemMergeHandlerFactory { - // TODO: 11/1/2017 read this map from configuration, move Vsp merge handler to vsp lib, rearrange lib deps - private static final Map<ItemType, ItemMergeHandler> MERGE_HANDLER_BY_ITEM_TYPE = - new HashMap<>(); - static { - MERGE_HANDLER_BY_ITEM_TYPE.put(ItemType.vsp, - new VspMergeHandler(ConflictsDaoFactory.getInstance().createInterface(), - VspMergeDaoFactory.getInstance().createInterface())); - } + // TODO: 11/1/2017 read this map from configuration, move Vsp merge handler to vsp lib, rearrange lib deps + private static final Map<ItemType, ItemMergeHandler> MERGE_HANDLER_BY_ITEM_TYPE = new HashMap<>(); - @Override - public Optional<ItemMergeHandler> createInterface(String itemId) { - Item item = AsdcItemManagerFactory.getInstance().createInterface().get(itemId); - if (item == null) { - throw new CoreException(new EntityNotExistErrorBuilder("", itemId).build()); + static { + MERGE_HANDLER_BY_ITEM_TYPE.put(ItemType.vsp, + new VspMergeHandler(ConflictsDaoFactory.getInstance().createInterface(), VspMergeDaoFactory.getInstance().createInterface())); } - return Optional.ofNullable(MERGE_HANDLER_BY_ITEM_TYPE.get(ItemType.valueOf(item.getType()))); - } - @Override - public ItemMergeHandler createInterface() { - return null; // call the one with the item id arg - } + @Override + public Optional<ItemMergeHandler> createInterface(String itemId) { + Item item = AsdcItemManagerFactory.getInstance().createInterface().get(itemId); + if (item == null) { + throw new CoreException(new EntityNotExistErrorBuilder("", itemId).build()); + } + return Optional.ofNullable(MERGE_HANDLER_BY_ITEM_TYPE.get(ItemType.valueOf(item.getType()))); + } + + @Override + public ItemMergeHandler createInterface() { + return null; // call the one with the item id arg + } } diff --git a/openecomp-be/lib/openecomp-conflict-lib/openecomp-conflict-core/src/main/java/org/openecomp/conflicts/dao/impl/zusammen/ConflictsDaoFactoryImpl.java b/openecomp-be/lib/openecomp-conflict-lib/openecomp-conflict-core/src/main/java/org/openecomp/conflicts/dao/impl/zusammen/ConflictsDaoFactoryImpl.java index 1ae13b8c48..61a1e18c45 100644 --- a/openecomp-be/lib/openecomp-conflict-lib/openecomp-conflict-core/src/main/java/org/openecomp/conflicts/dao/impl/zusammen/ConflictsDaoFactoryImpl.java +++ b/openecomp-be/lib/openecomp-conflict-lib/openecomp-conflict-core/src/main/java/org/openecomp/conflicts/dao/impl/zusammen/ConflictsDaoFactoryImpl.java @@ -7,9 +7,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -17,10 +17,8 @@ * limitations under the License. * ============LICENSE_END========================================================= */ - package org.openecomp.conflicts.dao.impl.zusammen; - import org.openecomp.conflicts.dao.ConflictsDao; import org.openecomp.conflicts.dao.ConflictsDaoFactory; import org.openecomp.core.zusammen.api.ZusammenAdaptorFactory; @@ -28,11 +26,11 @@ import org.openecomp.core.zusammen.api.ZusammenUtil; public class ConflictsDaoFactoryImpl extends ConflictsDaoFactory { - private static final ConflictsDao INSTANCE = new - ConflictsDaoImpl(ZusammenAdaptorFactory.getInstance().createInterface(), ZusammenUtil::createSessionContext); + private static final ConflictsDao INSTANCE = new ConflictsDaoImpl(ZusammenAdaptorFactory.getInstance().createInterface(), + ZusammenUtil::createSessionContext); - @Override - public ConflictsDao createInterface() { - return INSTANCE; - } + @Override + public ConflictsDao createInterface() { + return INSTANCE; + } } diff --git a/openecomp-be/lib/openecomp-conflict-lib/openecomp-conflict-core/src/main/java/org/openecomp/conflicts/dao/impl/zusammen/ConflictsDaoImpl.java b/openecomp-be/lib/openecomp-conflict-lib/openecomp-conflict-core/src/main/java/org/openecomp/conflicts/dao/impl/zusammen/ConflictsDaoImpl.java index ecc0a3c7ab..047d5c2743 100644 --- a/openecomp-be/lib/openecomp-conflict-lib/openecomp-conflict-core/src/main/java/org/openecomp/conflicts/dao/impl/zusammen/ConflictsDaoImpl.java +++ b/openecomp-be/lib/openecomp-conflict-lib/openecomp-conflict-core/src/main/java/org/openecomp/conflicts/dao/impl/zusammen/ConflictsDaoImpl.java @@ -7,9 +7,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -17,9 +17,10 @@ * limitations under the License. * ============LICENSE_END========================================================= */ - package org.openecomp.conflicts.dao.impl.zusammen; +import static org.openecomp.core.zusammen.api.ZusammenUtil.buildElement; + import com.amdocs.zusammen.adaptor.inbound.api.types.item.Element; import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementConflict; import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementInfo; @@ -37,145 +38,149 @@ import org.openecomp.conflicts.types.ItemVersionConflict; import org.openecomp.convertor.ElementConvertor; import org.openecomp.core.zusammen.api.ZusammenAdaptor; import org.openecomp.sdc.datatypes.model.ElementType; -import org.openecomp.sdc.vendorlicense.dao.impl.zusammen.convertor.*; -import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.convertor.*; +import org.openecomp.sdc.vendorlicense.dao.impl.zusammen.convertor.ElementToEntitlementPoolConvertor; +import org.openecomp.sdc.vendorlicense.dao.impl.zusammen.convertor.ElementToFeatureGroupConvertor; +import org.openecomp.sdc.vendorlicense.dao.impl.zusammen.convertor.ElementToLicenseAgreementConvertor; +import org.openecomp.sdc.vendorlicense.dao.impl.zusammen.convertor.ElementToLicenseKeyGroupConvertor; +import org.openecomp.sdc.vendorlicense.dao.impl.zusammen.convertor.ElementToLimitConvertor; +import org.openecomp.sdc.vendorlicense.dao.impl.zusammen.convertor.ElementToVLMGeneralConvertor; +import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.convertor.ElementToComponentConvertor; +import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.convertor.ElementToComponentDependencyModelConvertor; +import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.convertor.ElementToCompositionEntityConvertor; +import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.convertor.ElementToComputeConvertor; +import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.convertor.ElementToImageConvertor; +import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.convertor.ElementToMonitoringUploadMapConvertor; +import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.convertor.ElementToNetworkConvertor; +import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.convertor.ElementToNicConvertor; +import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.convertor.ElementToOrchestrationTemplateCandidateMapConvertor; +import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.convertor.ElementToProcessConvertor; +import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.convertor.ElementToServiceModelMapConvertor; +import org.openecomp.sdc.vendorsoftwareproduct.dao.impl.zusammen.convertor.ElementToVSPGeneralConvertor; import org.openecomp.sdc.versioning.dao.types.Version; -import static org.openecomp.core.zusammen.api.ZusammenUtil.buildElement; - public class ConflictsDaoImpl implements ConflictsDao { - private final ZusammenAdaptor zusammenAdaptor; - private final Supplier<SessionContext> sessionContextProvider; - - public ConflictsDaoImpl(ZusammenAdaptor zusammenAdaptor, Supplier<SessionContext> sessionContextProvider) { - this.zusammenAdaptor = zusammenAdaptor; - this.sessionContextProvider = sessionContextProvider; - } - - @Override - public boolean isConflicted(String itemId, Version version) { - com.amdocs.zusammen.adaptor.inbound.api.types.item.ItemVersionConflict itemVersionConflict = - zusammenAdaptor - .getVersionConflict(sessionContextProvider.get(), new Id(itemId), new Id(version.getId())); - return !(itemVersionConflict == null - || (itemVersionConflict.getVersionDataConflict() == null - && itemVersionConflict.getElementConflictInfos().isEmpty())); - } - - @Override - public ItemVersionConflict getConflict(String itemId, Version version) { - return new ItemVersionConflictConvertorFromZusammen().convert(itemId, version, - zusammenAdaptor - .getVersionConflict(sessionContextProvider.get(), new Id(itemId), new Id(version.getId()))); - } - - @Override - public Conflict getConflict(String itemId, Version version, String conflictId) { - return zusammenAdaptor.getElementConflict(sessionContextProvider.get(), - new ElementContext(new Id(itemId), new Id(version.getId())), new Id(conflictId)) - .map(elementConflict -> convertElementConflict(conflictId, elementConflict)) - .orElse(null); - } - - @Override - public void resolveConflict(String itemId, Version version, String conflictId, - ConflictResolution conflictResolution) { - SessionContext context = sessionContextProvider.get(); - ElementContext elementContext = new ElementContext(new Id(itemId), new Id(version.getId())); - - // TODO: 7/31/2017 when 'OTHER' resolution will be supported - populate zusammen element with it - zusammenAdaptor.resolveElementConflict(context, elementContext, - buildElement(new Id(conflictId), null), - Resolution.valueOf(conflictResolution.getResolution().name())); - } - - private Conflict convertElementConflict(String conflictId, ElementConflict elementConflict) { - Element element = elementConflict.getLocalElement() == null - ? elementConflict.getRemoteElement() - : elementConflict.getLocalElement(); - ElementType elementType = ElementConvertor.getElementType(element); - - Conflict conflict = - new Conflict(conflictId, elementType, ElementConvertor.getElementName(element)); - ElementConvertor convertor = getConvertor(elementType); - if (elementConflict.getLocalElement() != null) { - conflict.setYours(convertor.convert(elementConflict.getLocalElement())); - } - if (elementConflict.getRemoteElement() != null) { - conflict.setTheirs(convertor.convert(elementConflict.getRemoteElement())); - } - return conflict; - } - - private ElementConvertor getConvertor(ElementType type) { - switch (type) { - case VendorSoftwareProduct: - return new ElementToVSPGeneralConvertor(); - case Process: - return new ElementToProcessConvertor(); - case Nic: - return new ElementToNicConvertor(); - case Network: - return new ElementToNetworkConvertor(); - case SNMP_POLL: - case SNMP_TRAP: - case VES_EVENTS: - return new ElementToMonitoringUploadMapConvertor(); - case Image: - return new ElementToImageConvertor(); - case Compute: - return new ElementToComputeConvertor(); - case Component: - return new ElementToComponentConvertor(); - case ComponentDependencies: - return new ElementToComponentDependencyModelConvertor(); - case VendorLicenseModel: - return new ElementToVLMGeneralConvertor(); - case LicenseAgreement: - return new ElementToLicenseAgreementConvertor(); - case FeatureGroup: - return new ElementToFeatureGroupConvertor(); - case LicenseKeyGroup: - return new ElementToLicenseKeyGroupConvertor(); - case EntitlementPool: - return new ElementToEntitlementPoolConvertor(); - case Limit: - return new ElementToLimitConvertor(); - case OrchestrationTemplateCandidate: - return new ElementToOrchestrationTemplateCandidateMapConvertor(); - case ServiceModel: - return new ElementToServiceModelMapConvertor(); - case VSPQuestionnaire: - case ImageQuestionnaire: - case ComponentQuestionnaire: - case ComputeQuestionnaire: - case NicQuestionnaire: - return new ElementToCompositionEntityConvertor(); - default: - return new EchoConvertor(); - } - } - public static class EchoConvertor extends ElementConvertor { + private final ZusammenAdaptor zusammenAdaptor; + private final Supplier<SessionContext> sessionContextProvider; + + public ConflictsDaoImpl(ZusammenAdaptor zusammenAdaptor, Supplier<SessionContext> sessionContextProvider) { + this.zusammenAdaptor = zusammenAdaptor; + this.sessionContextProvider = sessionContextProvider; + } @Override - public Object convert(Element element) { - return element; + public boolean isConflicted(String itemId, Version version) { + com.amdocs.zusammen.adaptor.inbound.api.types.item.ItemVersionConflict itemVersionConflict = zusammenAdaptor + .getVersionConflict(sessionContextProvider.get(), new Id(itemId), new Id(version.getId())); + return !(itemVersionConflict == null || (itemVersionConflict.getVersionDataConflict() == null && itemVersionConflict.getElementConflictInfos() + .isEmpty())); } @Override - public Object convert(Item item) { - return item; + public ItemVersionConflict getConflict(String itemId, Version version) { + return new ItemVersionConflictConvertorFromZusammen() + .convert(itemId, version, zusammenAdaptor.getVersionConflict(sessionContextProvider.get(), new Id(itemId), new Id(version.getId()))); } @Override - public Object convert(ElementInfo elementInfo) { - return elementInfo; + public Conflict getConflict(String itemId, Version version, String conflictId) { + return zusammenAdaptor + .getElementConflict(sessionContextProvider.get(), new ElementContext(new Id(itemId), new Id(version.getId())), new Id(conflictId)) + .map(elementConflict -> convertElementConflict(conflictId, elementConflict)).orElse(null); } @Override - public Object convert(ItemVersion itemVersion) { - return null; + public void resolveConflict(String itemId, Version version, String conflictId, ConflictResolution conflictResolution) { + SessionContext context = sessionContextProvider.get(); + ElementContext elementContext = new ElementContext(new Id(itemId), new Id(version.getId())); + // TODO: 7/31/2017 when 'OTHER' resolution will be supported - populate zusammen element with it + zusammenAdaptor.resolveElementConflict(context, elementContext, buildElement(new Id(conflictId), null), + Resolution.valueOf(conflictResolution.getResolution().name())); + } + + private Conflict convertElementConflict(String conflictId, ElementConflict elementConflict) { + Element element = elementConflict.getLocalElement() == null ? elementConflict.getRemoteElement() : elementConflict.getLocalElement(); + ElementType elementType = ElementConvertor.getElementType(element); + Conflict conflict = new Conflict(conflictId, elementType, ElementConvertor.getElementName(element)); + ElementConvertor convertor = getConvertor(elementType); + if (elementConflict.getLocalElement() != null) { + conflict.setYours(convertor.convert(elementConflict.getLocalElement())); + } + if (elementConflict.getRemoteElement() != null) { + conflict.setTheirs(convertor.convert(elementConflict.getRemoteElement())); + } + return conflict; + } + + private ElementConvertor getConvertor(ElementType type) { + switch (type) { + case VendorSoftwareProduct: + return new ElementToVSPGeneralConvertor(); + case Process: + return new ElementToProcessConvertor(); + case Nic: + return new ElementToNicConvertor(); + case Network: + return new ElementToNetworkConvertor(); + case SNMP_POLL: + case SNMP_TRAP: + case VES_EVENTS: + return new ElementToMonitoringUploadMapConvertor(); + case Image: + return new ElementToImageConvertor(); + case Compute: + return new ElementToComputeConvertor(); + case Component: + return new ElementToComponentConvertor(); + case ComponentDependencies: + return new ElementToComponentDependencyModelConvertor(); + case VendorLicenseModel: + return new ElementToVLMGeneralConvertor(); + case LicenseAgreement: + return new ElementToLicenseAgreementConvertor(); + case FeatureGroup: + return new ElementToFeatureGroupConvertor(); + case LicenseKeyGroup: + return new ElementToLicenseKeyGroupConvertor(); + case EntitlementPool: + return new ElementToEntitlementPoolConvertor(); + case Limit: + return new ElementToLimitConvertor(); + case OrchestrationTemplateCandidate: + return new ElementToOrchestrationTemplateCandidateMapConvertor(); + case ServiceModel: + return new ElementToServiceModelMapConvertor(); + case VSPQuestionnaire: + case ImageQuestionnaire: + case ComponentQuestionnaire: + case ComputeQuestionnaire: + case NicQuestionnaire: + return new ElementToCompositionEntityConvertor(); + default: + return new EchoConvertor(); + } + } + + public static class EchoConvertor extends ElementConvertor { + + @Override + public Object convert(Element element) { + return element; + } + + @Override + public Object convert(Item item) { + return item; + } + + @Override + public Object convert(ElementInfo elementInfo) { + return elementInfo; + } + + @Override + public Object convert(ItemVersion itemVersion) { + return null; + } } - } } diff --git a/openecomp-be/lib/openecomp-conflict-lib/openecomp-conflict-core/src/main/java/org/openecomp/conflicts/dao/impl/zusammen/ItemVersionConflictConvertorFromZusammen.java b/openecomp-be/lib/openecomp-conflict-lib/openecomp-conflict-core/src/main/java/org/openecomp/conflicts/dao/impl/zusammen/ItemVersionConflictConvertorFromZusammen.java index 67827bc041..9c5238c44e 100644 --- a/openecomp-be/lib/openecomp-conflict-lib/openecomp-conflict-core/src/main/java/org/openecomp/conflicts/dao/impl/zusammen/ItemVersionConflictConvertorFromZusammen.java +++ b/openecomp-be/lib/openecomp-conflict-lib/openecomp-conflict-core/src/main/java/org/openecomp/conflicts/dao/impl/zusammen/ItemVersionConflictConvertorFromZusammen.java @@ -7,9 +7,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -17,10 +17,8 @@ * limitations under the License. * ============LICENSE_END========================================================= */ - package org.openecomp.conflicts.dao.impl.zusammen; - import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementConflictInfo; import com.amdocs.zusammen.adaptor.inbound.api.types.item.ElementInfo; import com.amdocs.zusammen.adaptor.inbound.api.types.item.ItemVersionConflict; @@ -28,6 +26,7 @@ import com.amdocs.zusammen.datatypes.Id; import com.amdocs.zusammen.datatypes.item.ItemVersion; import com.amdocs.zusammen.datatypes.item.ItemVersionData; import com.amdocs.zusammen.datatypes.item.ItemVersionDataConflict; +import java.util.stream.Collectors; import org.openecomp.conflicts.types.Conflict; import org.openecomp.conflicts.types.ConflictInfo; import org.openecomp.sdc.datatypes.model.ElementType; @@ -35,59 +34,40 @@ import org.openecomp.sdc.versioning.dao.impl.zusammen.convertor.ItemVersionToVer import org.openecomp.sdc.versioning.dao.types.Version; import org.openecomp.types.ElementPropertyName; -import java.util.stream.Collectors; - public class ItemVersionConflictConvertorFromZusammen { - public org.openecomp.conflicts.types.ItemVersionConflict convert(String itemId, Version version, - ItemVersionConflict source) { - org.openecomp.conflicts.types.ItemVersionConflict target = - new org.openecomp.conflicts.types.ItemVersionConflict(); - - target.setVersionConflict( - convertVersionDataConflict(itemId, version, source.getVersionDataConflict())); - target.setElementConflicts(source.getElementConflictInfos().stream() - .map(this::convertElementConflictInfo) - .collect(Collectors.toList())); - return target; - } - - - private Conflict<Version> convertVersionDataConflict(String itemId, Version version, - ItemVersionDataConflict versionDataConflict) { - if (versionDataConflict == null) { - return null; + public org.openecomp.conflicts.types.ItemVersionConflict convert(String itemId, Version version, ItemVersionConflict source) { + org.openecomp.conflicts.types.ItemVersionConflict target = new org.openecomp.conflicts.types.ItemVersionConflict(); + target.setVersionConflict(convertVersionDataConflict(itemId, version, source.getVersionDataConflict())); + target.setElementConflicts(source.getElementConflictInfos().stream().map(this::convertElementConflictInfo).collect(Collectors.toList())); + return target; } - Conflict<Version> conflict = - new Conflict<>(version.getId(), ElementType.itemVersion, null); - - ItemVersionToVersionConvertor convertor = new ItemVersionToVersionConvertor(); - conflict.setYours(convertor.convert( - getItemVersion(version.getId(), versionDataConflict.getLocalData()))); - conflict.setTheirs(convertor.convert( - getItemVersion(version.getId(), versionDataConflict.getRemoteData()))); - return conflict; - } - - private ItemVersion getItemVersion(String versionId, ItemVersionData versionData) { - if (versionData == null) { - return null; + private Conflict<Version> convertVersionDataConflict(String itemId, Version version, ItemVersionDataConflict versionDataConflict) { + if (versionDataConflict == null) { + return null; + } + Conflict<Version> conflict = new Conflict<>(version.getId(), ElementType.itemVersion, null); + ItemVersionToVersionConvertor convertor = new ItemVersionToVersionConvertor(); + conflict.setYours(convertor.convert(getItemVersion(version.getId(), versionDataConflict.getLocalData()))); + conflict.setTheirs(convertor.convert(getItemVersion(version.getId(), versionDataConflict.getRemoteData()))); + return conflict; } - ItemVersion itemVersion = new ItemVersion(); - itemVersion.setId(new Id(versionId)); - itemVersion.setData(versionData); - return itemVersion; - } - private ConflictInfo convertElementConflictInfo(ElementConflictInfo elementConflictInfo) { - ElementInfo elementInfo = elementConflictInfo.getLocalElementInfo() == null - ? elementConflictInfo.getRemoteElementInfo() - : elementConflictInfo.getLocalElementInfo(); + private ItemVersion getItemVersion(String versionId, ItemVersionData versionData) { + if (versionData == null) { + return null; + } + ItemVersion itemVersion = new ItemVersion(); + itemVersion.setId(new Id(versionId)); + itemVersion.setData(versionData); + return itemVersion; + } - return new ConflictInfo(elementInfo.getId().getValue(), - ElementType - .valueOf(elementInfo.getInfo().getProperty(ElementPropertyName.elementType.name())), - elementInfo.getInfo().getName()); - } + private ConflictInfo convertElementConflictInfo(ElementConflictInfo elementConflictInfo) { + ElementInfo elementInfo = elementConflictInfo.getLocalElementInfo() == null ? elementConflictInfo.getRemoteElementInfo() + : elementConflictInfo.getLocalElementInfo(); + return new ConflictInfo(elementInfo.getId().getValue(), + ElementType.valueOf(elementInfo.getInfo().getProperty(ElementPropertyName.elementType.name())), elementInfo.getInfo().getName()); + } } diff --git a/openecomp-be/lib/openecomp-conflict-lib/openecomp-conflict-core/src/main/java/org/openecomp/conflicts/impl/VspMergeHandler.java b/openecomp-be/lib/openecomp-conflict-lib/openecomp-conflict-core/src/main/java/org/openecomp/conflicts/impl/VspMergeHandler.java index 17b3043472..f3ea1eec87 100644 --- a/openecomp-be/lib/openecomp-conflict-lib/openecomp-conflict-core/src/main/java/org/openecomp/conflicts/impl/VspMergeHandler.java +++ b/openecomp-be/lib/openecomp-conflict-lib/openecomp-conflict-core/src/main/java/org/openecomp/conflicts/impl/VspMergeHandler.java @@ -7,9 +7,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -17,12 +17,33 @@ * limitations under the License. * ============LICENSE_END========================================================= */ - package org.openecomp.conflicts.impl; +import static org.openecomp.sdc.datatypes.model.ElementType.NetworkPackage; +import static org.openecomp.sdc.datatypes.model.ElementType.OrchestrationTemplate; +import static org.openecomp.sdc.datatypes.model.ElementType.OrchestrationTemplateCandidate; +import static org.openecomp.sdc.datatypes.model.ElementType.OrchestrationTemplateCandidateContent; +import static org.openecomp.sdc.datatypes.model.ElementType.OrchestrationTemplateValidationData; +import static org.openecomp.sdc.datatypes.model.ElementType.VspModel; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.EnumMap; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.Stream; import org.openecomp.conflicts.ItemMergeHandler; import org.openecomp.conflicts.dao.ConflictsDao; -import org.openecomp.conflicts.types.*; +import org.openecomp.conflicts.types.Conflict; +import org.openecomp.conflicts.types.ConflictInfo; +import org.openecomp.conflicts.types.ConflictResolution; +import org.openecomp.conflicts.types.ItemVersionConflict; +import org.openecomp.conflicts.types.Resolution; import org.openecomp.sdc.common.errors.CoreException; import org.openecomp.sdc.common.errors.ErrorCategory; import org.openecomp.sdc.common.errors.ErrorCode; @@ -30,179 +51,138 @@ import org.openecomp.sdc.datatypes.model.ElementType; import org.openecomp.sdc.vendorsoftwareproduct.dao.VspMergeDao; import org.openecomp.sdc.versioning.dao.types.Version; -import java.util.*; -import java.util.stream.Collectors; -import java.util.stream.Stream; +public class VspMergeHandler implements ItemMergeHandler { -import static org.openecomp.sdc.datatypes.model.ElementType.*; + private static final String VSP_MODEL_CONFLICT_ID = "vspModelConflictId"; + private static final String ELEMENT_CONFLICT_NOT_EXIST_ERR_ID = "ELEMENT_CONFLICT_NOT_EXIST"; + private static final String ELEMENT_CONFLICT_NOT_EXISTS_MSG = "Item Id %s, version Id %s, element conflict with Id %s does not exists."; + private static final Set<ElementType> FILTERED_OUT_TYPES = Stream.of(OrchestrationTemplateCandidateContent, OrchestrationTemplateValidationData) + .collect(Collectors.toSet()); + private static final Map<ElementType, Set<ElementType>> ELEMENT_TYPE_TO_CONFLICT_DEPENDANT_TYPES = new EnumMap<>(ElementType.class); -public class VspMergeHandler implements ItemMergeHandler { + static { + ELEMENT_TYPE_TO_CONFLICT_DEPENDANT_TYPES.put(OrchestrationTemplateCandidate, Collections.singleton(OrchestrationTemplateCandidateContent)); + ELEMENT_TYPE_TO_CONFLICT_DEPENDANT_TYPES.put(OrchestrationTemplate, Collections.singleton(OrchestrationTemplateValidationData)); + } + + private ConflictsDao conflictsDao; + private VspMergeDao vspMergeDao; - private static final String VSP_MODEL_CONFLICT_ID = "vspModelConflictId"; - private static final String ELEMENT_CONFLICT_NOT_EXIST_ERR_ID = "ELEMENT_CONFLICT_NOT_EXIST"; - private static final String ELEMENT_CONFLICT_NOT_EXISTS_MSG = - "Item Id %s, version Id %s, element conflict with Id %s does not exists."; - private static final Set<ElementType> FILTERED_OUT_TYPES = Stream - .of(OrchestrationTemplateCandidateContent, OrchestrationTemplateValidationData) - .collect(Collectors.toSet()); - private static final Map<ElementType, Set<ElementType>> ELEMENT_TYPE_TO_CONFLICT_DEPENDANT_TYPES = - new EnumMap<>(ElementType.class); - - static { - ELEMENT_TYPE_TO_CONFLICT_DEPENDANT_TYPES.put(OrchestrationTemplateCandidate, - Collections.singleton(OrchestrationTemplateCandidateContent)); - ELEMENT_TYPE_TO_CONFLICT_DEPENDANT_TYPES.put(OrchestrationTemplate, - Collections.singleton(OrchestrationTemplateValidationData)); - } - - private ConflictsDao conflictsDao; - private VspMergeDao vspMergeDao; - - public VspMergeHandler(ConflictsDao conflictsDao, VspMergeDao vspMergeDao) { - this.conflictsDao = conflictsDao; - this.vspMergeDao = vspMergeDao; - } - - @Override - public boolean isConflicted(String itemId, Version version) { - return vspMergeDao.isConflicted(itemId, version); - } - - @Override - public void finalizeMerge(String itemId, Version version) { - if (!conflictsDao.isConflicted(itemId, version)) { - vspMergeDao.applyConflictResolution(itemId, version); + public VspMergeHandler(ConflictsDao conflictsDao, VspMergeDao vspMergeDao) { + this.conflictsDao = conflictsDao; + this.vspMergeDao = vspMergeDao; } - } - - @Override - public void postListConflicts(String itemId, Version version, ItemVersionConflict conflicts) { - List<ConflictInfo> elementConflicts = new ArrayList<>(); - - boolean vspModelConflicted = false; - for (ConflictInfo elementConflict : conflicts.getElementConflicts()) { - if (elementConflict.getType() == VspModel) { - elementConflicts.add( - new ConflictInfo(elementConflict.getId(), NetworkPackage, NetworkPackage.name())); - vspModelConflicted = true; - continue; - } - if (!FILTERED_OUT_TYPES.contains(elementConflict.getType())) { - elementConflicts.add(elementConflict); - } + + @Override + public boolean isConflicted(String itemId, Version version) { + return vspMergeDao.isConflicted(itemId, version); + } + + @Override + public void finalizeMerge(String itemId, Version version) { + if (!conflictsDao.isConflicted(itemId, version)) { + vspMergeDao.applyConflictResolution(itemId, version); + } } - if (!vspModelConflicted && vspMergeDao.isConflicted(itemId, version)) { - elementConflicts - .add(new ConflictInfo(VSP_MODEL_CONFLICT_ID, NetworkPackage, NetworkPackage.name())); + @Override + public void postListConflicts(String itemId, Version version, ItemVersionConflict conflicts) { + List<ConflictInfo> elementConflicts = new ArrayList<>(); + boolean vspModelConflicted = false; + for (ConflictInfo elementConflict : conflicts.getElementConflicts()) { + if (elementConflict.getType() == VspModel) { + elementConflicts.add(new ConflictInfo(elementConflict.getId(), NetworkPackage, NetworkPackage.name())); + vspModelConflicted = true; + continue; + } + if (!FILTERED_OUT_TYPES.contains(elementConflict.getType())) { + elementConflicts.add(elementConflict); + } + } + if (!vspModelConflicted && vspMergeDao.isConflicted(itemId, version)) { + elementConflicts.add(new ConflictInfo(VSP_MODEL_CONFLICT_ID, NetworkPackage, NetworkPackage.name())); + } + conflicts.setElementConflicts(elementConflicts); } - conflicts.setElementConflicts(elementConflicts); - } - - @Override - public Optional<Conflict> getConflict(String itemId, Version version, String conflictId) { - return VSP_MODEL_CONFLICT_ID.equals(conflictId) - ? Optional.of(buildVspModelConflict(conflictId)) - : Optional.empty(); - } - - @Override - public void postGetConflict(String itemId, Version version, Conflict conflict) { - if (conflict.getType() == VspModel) { - Conflict vspModelConflict = buildVspModelConflict(null); - conflict.setType(vspModelConflict.getType()); - conflict.setName(vspModelConflict.getName()); - conflict.setYours(vspModelConflict.getYours()); - conflict.setTheirs(vspModelConflict.getTheirs()); + @Override + public Optional<Conflict> getConflict(String itemId, Version version, String conflictId) { + return VSP_MODEL_CONFLICT_ID.equals(conflictId) ? Optional.of(buildVspModelConflict(conflictId)) : Optional.empty(); } - } - @Override - public void preResolveConflict(String itemId, Version version, String conflictId, - ConflictResolution resolution) { - if (VSP_MODEL_CONFLICT_ID.equals(conflictId)) { - return; + @Override + public void postGetConflict(String itemId, Version version, Conflict conflict) { + if (conflict.getType() == VspModel) { + Conflict vspModelConflict = buildVspModelConflict(null); + conflict.setType(vspModelConflict.getType()); + conflict.setName(vspModelConflict.getName()); + conflict.setYours(vspModelConflict.getYours()); + conflict.setTheirs(vspModelConflict.getTheirs()); + } } - resolveDependantConflicts(itemId, version, conflictId, resolution); - } - - @Override - public boolean resolveConflict(String itemId, Version version, String conflictId, - ConflictResolution resolution) { - if (VSP_MODEL_CONFLICT_ID.equals(conflictId)) { - vspMergeDao.updateConflictResolution(itemId, version, - com.amdocs.zusammen.datatypes.item.Resolution.valueOf(resolution.getResolution().name())); - return true; + + @Override + public void preResolveConflict(String itemId, Version version, String conflictId, ConflictResolution resolution) { + if (VSP_MODEL_CONFLICT_ID.equals(conflictId)) { + return; + } + resolveDependantConflicts(itemId, version, conflictId, resolution); } - Conflict conflict = conflictsDao.getConflict(itemId, version, conflictId); - if (conflict == null) { - throw getConflictNotExistException(itemId, version, conflictId); + + @Override + public boolean resolveConflict(String itemId, Version version, String conflictId, ConflictResolution resolution) { + if (VSP_MODEL_CONFLICT_ID.equals(conflictId)) { + vspMergeDao + .updateConflictResolution(itemId, version, com.amdocs.zusammen.datatypes.item.Resolution.valueOf(resolution.getResolution().name())); + return true; + } + Conflict conflict = conflictsDao.getConflict(itemId, version, conflictId); + if (conflict == null) { + throw getConflictNotExistException(itemId, version, conflictId); + } + if (conflict.getType() == VspModel) { + vspMergeDao + .updateConflictResolution(itemId, version, com.amdocs.zusammen.datatypes.item.Resolution.valueOf(resolution.getResolution().name())); + conflictsDao.resolveConflict(itemId, version, conflictId, + new ConflictResolution(conflict.getTheirs() == null ? Resolution.YOURS : Resolution.THEIRS)); + return true; + } + return false; } - if (conflict.getType() == VspModel) { - vspMergeDao.updateConflictResolution(itemId, version, - com.amdocs.zusammen.datatypes.item.Resolution.valueOf(resolution.getResolution().name())); - conflictsDao.resolveConflict(itemId, version, conflictId, new ConflictResolution( - conflict.getTheirs() == null ? Resolution.YOURS : Resolution.THEIRS)); - return true; + private void resolveDependantConflicts(String itemId, Version version, String conflictId, ConflictResolution resolution) { + ItemVersionConflict conflicts = conflictsDao.getConflict(itemId, version); + Set<ElementType> conflictDependantTypes = ELEMENT_TYPE_TO_CONFLICT_DEPENDANT_TYPES.get(findConflictById(conflicts, conflictId).getType()); + if (conflictDependantTypes == null) { + return; + } + findConflictsByTypes(conflicts, conflictDependantTypes) + .forEach(dependantConflict -> conflictsDao.resolveConflict(itemId, version, dependantConflict.getId(), resolution)); } - return false; - } - private void resolveDependantConflicts(String itemId, Version version, String conflictId, - ConflictResolution resolution) { - ItemVersionConflict conflicts = conflictsDao.getConflict(itemId, version); + private ConflictInfo findConflictById(ItemVersionConflict versionConflicts, String conflictId) { + return versionConflicts.getElementConflicts().stream().filter(elementConflict -> conflictId.equals(elementConflict.getId())).findFirst() + .orElseThrow(() -> new IllegalStateException(String.format("Conflict Id %s does not exist on conflicts list", conflictId))); + } - Set<ElementType> conflictDependantTypes = - ELEMENT_TYPE_TO_CONFLICT_DEPENDANT_TYPES - .get(findConflictById(conflicts, conflictId).getType()); + private Collection<ConflictInfo> findConflictsByTypes(ItemVersionConflict versionConflicts, Set<ElementType> elementTypes) { + return versionConflicts.getElementConflicts().stream().filter(elementConflict -> elementTypes.contains(elementConflict.getType())) + .collect(Collectors.toList()); + } - if (conflictDependantTypes == null) { - return; + private Conflict buildVspModelConflict(String conflictId) { + Conflict conflict = new Conflict(conflictId, NetworkPackage, NetworkPackage.name()); + Map<String, String> yours = new HashMap<>(); + yours.put("File", "Local (Me)"); + conflict.setYours(yours); + Map<String, String> theirs = new HashMap<>(); + theirs.put("File", "Last Committed"); + conflict.setTheirs(theirs); + return conflict; } - findConflictsByTypes(conflicts, conflictDependantTypes) - .forEach(dependantConflict -> - conflictsDao.resolveConflict(itemId, version, dependantConflict.getId(), resolution)); - } - - private ConflictInfo findConflictById(ItemVersionConflict versionConflicts, - String conflictId) { - return versionConflicts.getElementConflicts().stream() - .filter(elementConflict -> conflictId.equals(elementConflict.getId())) - .findFirst() - .orElseThrow(() -> new IllegalStateException( - String.format("Conflict Id %s does not exist on conflicts list", conflictId))); - } - - private Collection<ConflictInfo> findConflictsByTypes(ItemVersionConflict versionConflicts, - Set<ElementType> elementTypes) { - return versionConflicts.getElementConflicts().stream() - .filter(elementConflict -> elementTypes.contains(elementConflict.getType())) - .collect(Collectors.toList()); - } - - private Conflict buildVspModelConflict(String conflictId) { - Conflict conflict = new Conflict(conflictId, NetworkPackage, NetworkPackage.name()); - - Map<String, String> yours = new HashMap<>(); - yours.put("File", "Local (Me)"); - conflict.setYours(yours); - - Map<String, String> theirs = new HashMap<>(); - theirs.put("File", "Last Committed"); - conflict.setTheirs(theirs); - return conflict; - } - - private CoreException getConflictNotExistException(String itemId, Version version, - String conflictId) { - return new CoreException(new ErrorCode.ErrorCodeBuilder() - .withCategory(ErrorCategory.APPLICATION) - .withId(ELEMENT_CONFLICT_NOT_EXIST_ERR_ID) - .withMessage( - String.format(ELEMENT_CONFLICT_NOT_EXISTS_MSG, itemId, version.getId(), conflictId)) - .build()); - } + private CoreException getConflictNotExistException(String itemId, Version version, String conflictId) { + return new CoreException(new ErrorCode.ErrorCodeBuilder().withCategory(ErrorCategory.APPLICATION).withId(ELEMENT_CONFLICT_NOT_EXIST_ERR_ID) + .withMessage(String.format(ELEMENT_CONFLICT_NOT_EXISTS_MSG, itemId, version.getId(), conflictId)).build()); + } } |