X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=catalog-be%2Fsrc%2Fmain%2Fjava%2Forg%2Fopenecomp%2Fsdc%2Fbe%2Fcomponents%2Fimpl%2FComponentSubstitutionFilterBusinessLogic.java;h=74b353ec8515499035c541fde0472534ebef960c;hb=refs%2Fchanges%2F97%2F130597%2F5;hp=55c70ed2714404cd538a6fefb05989988a8a10da;hpb=bdeb28f273da2494d7eeabbb5329222dfd168e3b;p=sdc.git diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentSubstitutionFilterBusinessLogic.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentSubstitutionFilterBusinessLogic.java index 55c70ed271..74b353ec85 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentSubstitutionFilterBusinessLogic.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentSubstitutionFilterBusinessLogic.java @@ -16,7 +16,6 @@ * SPDX-License-Identifier: Apache-2.0 * ============LICENSE_END========================================================= */ - package org.openecomp.sdc.be.components.impl; import static org.openecomp.sdc.be.dao.api.ActionStatus.SUBSTITUTION_FILTER_NOT_FOUND; @@ -32,11 +31,11 @@ import org.openecomp.sdc.be.components.impl.exceptions.BusinessLogicException; import org.openecomp.sdc.be.components.impl.utils.NodeFilterConstraintAction; import org.openecomp.sdc.be.components.validation.NodeFilterValidator; import org.openecomp.sdc.be.dao.api.ActionStatus; +import org.openecomp.sdc.be.datatypes.elements.ListDataDefinition; import org.openecomp.sdc.be.datatypes.elements.RequirementSubstitutionFilterPropertyDataDefinition; import org.openecomp.sdc.be.datatypes.elements.SubstitutionFilterDataDefinition; import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum; import org.openecomp.sdc.be.model.Component; -import org.openecomp.sdc.be.model.ComponentInstance; import org.openecomp.sdc.be.model.User; import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ArtifactsOperations; import org.openecomp.sdc.be.model.jsonjanusgraph.operations.InterfaceOperation; @@ -56,42 +55,30 @@ import org.springframework.beans.factory.annotation.Autowired; public class ComponentSubstitutionFilterBusinessLogic extends BaseBusinessLogic { private static final Logger LOGGER = Logger.getLogger(ComponentSubstitutionFilterBusinessLogic.class); - private final SubstitutionFilterOperation substitutionFilterOperation; private final NodeFilterValidator nodeFilterValidator; @Autowired - public ComponentSubstitutionFilterBusinessLogic(final IElementOperation elementDao, - final IGroupOperation groupOperation, + public ComponentSubstitutionFilterBusinessLogic(final IElementOperation elementDao, final IGroupOperation groupOperation, final IGroupInstanceOperation groupInstanceOperation, - final IGroupTypeOperation groupTypeOperation, - final InterfaceOperation interfaceOperation, + final IGroupTypeOperation groupTypeOperation, final InterfaceOperation interfaceOperation, final InterfaceLifecycleOperation interfaceLifecycleTypeOperation, final ArtifactsOperations artifactToscaOperation, final SubstitutionFilterOperation substitutionFilterOperation, final NodeFilterValidator nodeFilterValidator) { - super(elementDao, groupOperation, groupInstanceOperation, groupTypeOperation, interfaceOperation, - interfaceLifecycleTypeOperation, artifactToscaOperation); + super(elementDao, groupOperation, groupInstanceOperation, groupTypeOperation, interfaceOperation, interfaceLifecycleTypeOperation, + artifactToscaOperation); this.substitutionFilterOperation = substitutionFilterOperation; this.nodeFilterValidator = nodeFilterValidator; } - public Optional createSubstitutionFilterIfNotExist(final String componentId, - final String componentInstanceId, - final boolean shouldLock, + public Optional createSubstitutionFilterIfNotExist(final String componentId, final boolean shouldLock, final ComponentTypeEnum componentTypeEnum) throws BusinessLogicException { - final Component component = getComponent(componentId); - final Optional componentInstanceOptional = - getComponentInstance(componentInstanceId, component); - - Optional substitutionFilterDataDefinition; - if (componentInstanceOptional.isPresent()) { - substitutionFilterDataDefinition = getSubstitutionFilterDataDefinition(componentInstanceOptional.get()); - if (substitutionFilterDataDefinition.isPresent()) { - return substitutionFilterDataDefinition; - } + Optional substitutionFilterDataDefinition = Optional.ofNullable(component.getSubstitutionFilter()); + if (substitutionFilterDataDefinition.isPresent()) { + return substitutionFilterDataDefinition; } boolean wasLocked = false; try { @@ -100,108 +87,83 @@ public class ComponentSubstitutionFilterBusinessLogic extends BaseBusinessLogic wasLocked = true; } final Either result = substitutionFilterOperation - .createSubstitutionFilter(componentId, componentInstanceId); + .createSubstitutionFilter(componentId); if (result.isRight()) { janusGraphDao.rollback(); - LOGGER.error(BUSINESS_PROCESS_ERROR, - "Failed to Create Substitution filter on component with id {}", componentId); - throw new BusinessLogicException(componentsUtils.getResponseFormatByResource(componentsUtils - .convertFromStorageResponse(result.right().value()), component.getSystemName())); + LOGGER.error(BUSINESS_PROCESS_ERROR, "Failed to Create Substitution filter on component with id {}", componentId); + throw new BusinessLogicException(componentsUtils + .getResponseFormatByResource(componentsUtils.convertFromStorageResponse(result.right().value()), component.getSystemName())); } substitutionFilterDataDefinition = Optional.ofNullable(result.left().value()); - if (componentInstanceOptional.isPresent() && substitutionFilterDataDefinition.isPresent()) { - componentInstanceOptional.get().setSubstitutionFilter(substitutionFilterDataDefinition.get()); - } + component.setSubstitutionFilter(substitutionFilterDataDefinition.get()); janusGraphDao.commit(); LOGGER.debug("Substitution filter successfully created in component {} . ", component.getSystemName()); } catch (final Exception e) { janusGraphDao.rollback(); - LOGGER.error(BUSINESS_PROCESS_ERROR, - "Exception occurred during add Component Substitution filter property values: {}", e.getMessage(), e); + LOGGER + .error(BUSINESS_PROCESS_ERROR, "Exception occurred during add Component Substitution filter property values: {}", e.getMessage(), e); throw new BusinessLogicException(componentsUtils.getResponseFormat(ActionStatus.GENERAL_ERROR)); - } finally { if (wasLocked) { unlockComponent(component.getUniqueId(), componentTypeEnum); } } - return substitutionFilterDataDefinition; } - public Optional addSubstitutionFilter(final String componentId, - final String componentInstanceId, - final NodeFilterConstraintAction action, - final String propertyName, - final String constraint, - final boolean shouldLock, - final ComponentTypeEnum componentTypeEnum) - throws BusinessLogicException { - + public Optional addSubstitutionFilter(final String componentId, final String propertyName, + final String constraint, final boolean shouldLock, + final ComponentTypeEnum componentTypeEnum) throws BusinessLogicException { final Component component = getComponent(componentId); - SubstitutionFilterDataDefinition substitutionFilterDataDefinition = validateAndReturnSubstitutionFilterDefinition( - componentInstanceId, - action, constraint, component); + final Either response = nodeFilterValidator + .validateComponentFilter(component, Collections.singletonList(constraint), NodeFilterConstraintAction.ADD); + if (response.isRight()) { + throw new BusinessLogicException( + componentsUtils.getResponseFormat(ActionStatus.SUBSTITUTION_FILTER_NOT_FOUND, response.right().value().getFormattedMessage())); + } boolean wasLocked = false; try { if (shouldLock) { lockComponent(component.getUniqueId(), component, "Add Substitution Filter on Component"); wasLocked = true; } - final RequirementSubstitutionFilterPropertyDataDefinition newProperty = - new RequirementSubstitutionFilterPropertyDataDefinition(); + final RequirementSubstitutionFilterPropertyDataDefinition newProperty = new RequirementSubstitutionFilterPropertyDataDefinition(); newProperty.setName(propertyName); newProperty.setConstraints(Collections.singletonList(constraint)); - final Either result = substitutionFilterOperation - .addNewProperty(componentId, componentInstanceId, substitutionFilterDataDefinition, newProperty); - - if (result.isRight()) { + final Either resultEither = substitutionFilterOperation + .addPropertyFilter(componentId, component.getSubstitutionFilter(), newProperty); + if (resultEither.isRight()) { janusGraphDao.rollback(); - throw new BusinessLogicException(componentsUtils.getResponseFormatByResource(componentsUtils - .convertFromStorageResponse(result.right().value()), component.getSystemName())); - } else { - substitutionFilterDataDefinition = result.left().value(); + throw new BusinessLogicException(componentsUtils + .getResponseFormatByResource(componentsUtils.convertFromStorageResponse(resultEither.right().value()), + component.getSystemName())); } janusGraphDao.commit(); LOGGER.debug("Substitution filter successfully created in component {} . ", component.getSystemName()); - + return Optional.ofNullable(resultEither.left().value()); } catch (final Exception e) { janusGraphDao.rollback(); - LOGGER.error(BUSINESS_PROCESS_ERROR, - "Exception occurred during add component substitution filter property values: {}", e.getMessage(), e); + LOGGER + .error(BUSINESS_PROCESS_ERROR, "Exception occurred during add component substitution filter property values: {}", e.getMessage(), e); throw new BusinessLogicException(componentsUtils.getResponseFormat(ActionStatus.GENERAL_ERROR)); - } finally { if (wasLocked) { unlockComponent(component.getUniqueId(), componentTypeEnum); } } - return Optional.ofNullable(substitutionFilterDataDefinition); } - public Optional updateSubstitutionFilter(final String componentId, - final String componentInstanceId, - final List constraints, - final boolean shouldLock, - final ComponentTypeEnum componentTypeEnum) + public Optional updateSubstitutionFilter(final String componentId, final List constraints, + final boolean shouldLock, final ComponentTypeEnum componentTypeEnum) throws BusinessLogicException { - final Component component = getComponent(componentId); - final Either response = nodeFilterValidator - .validateFilter(component, componentInstanceId, constraints, NodeFilterConstraintAction.UPDATE); + .validateComponentFilter(component, constraints, NodeFilterConstraintAction.UPDATE); if (response.isRight()) { - throw new BusinessLogicException(componentsUtils - .getResponseFormat(SUBSTITUTION_FILTER_NOT_FOUND, response.right().value().getFormattedMessage())); + throw new BusinessLogicException( + componentsUtils.getResponseFormat(ActionStatus.SUBSTITUTION_FILTER_NOT_FOUND, response.right().value().getFormattedMessage())); } - final Optional componentInstance = getComponentInstance(componentInstanceId, - component); - if (!componentInstance.isPresent()) { - throw new BusinessLogicException(ResponseFormatManager.getInstance() - .getResponseFormat(ActionStatus.GENERAL_ERROR)); - } - SubstitutionFilterDataDefinition substitutionFilterDataDefinition = componentInstance.get() - .getSubstitutionFilter(); + SubstitutionFilterDataDefinition substitutionFilterDataDefinition = component.getSubstitutionFilter(); if (substitutionFilterDataDefinition == null) { throw new BusinessLogicException(componentsUtils.getResponseFormat(SUBSTITUTION_FILTER_NOT_FOUND)); } @@ -214,24 +176,21 @@ public class ComponentSubstitutionFilterBusinessLogic extends BaseBusinessLogic final List properties = constraints.stream() .map(this::getRequirementSubstitutionFilterPropertyDataDefinition).collect(Collectors.toList()); final Either result = substitutionFilterOperation - .updateSubstitutionFilter(componentId, componentInstanceId, substitutionFilterDataDefinition, properties); - + .updateProperties(componentId, substitutionFilterDataDefinition, properties); if (result.isRight()) { janusGraphDao.rollback(); - throw new BusinessLogicException(componentsUtils.getResponseFormatByResource(componentsUtils - .convertFromStorageResponse(result.right().value()), component.getSystemName())); + throw new BusinessLogicException(componentsUtils + .getResponseFormatByResource(componentsUtils.convertFromStorageResponse(result.right().value()), component.getSystemName())); } else { substitutionFilterDataDefinition = result.left().value(); } janusGraphDao.commit(); LOGGER.debug("Substitution filter successfully updated in component {} . ", component.getSystemName()); - } catch (final Exception e) { janusGraphDao.rollback(); LOGGER.error(BUSINESS_PROCESS_ERROR, this.getClass().getName(), "Exception occurred during update component substitution filter property values: {}", e); throw new BusinessLogicException(componentsUtils.getResponseFormat(ActionStatus.GENERAL_ERROR)); - } finally { if (wasLocked) { unlockComponent(component.getUniqueId(), componentTypeEnum); @@ -240,43 +199,33 @@ public class ComponentSubstitutionFilterBusinessLogic extends BaseBusinessLogic return Optional.ofNullable(substitutionFilterDataDefinition); } - public Optional deleteSubstitutionFilter(final String componentId, - final String componentInstanceId, - final NodeFilterConstraintAction action, - final String constraint, - final int position, - final boolean shouldLock, + public Optional deleteSubstitutionFilter(final String componentId, final int position, final boolean shouldLock, final ComponentTypeEnum componentTypeEnum) throws BusinessLogicException { - final Component component = getComponent(componentId); - SubstitutionFilterDataDefinition substitutionFilterDataDefinition = - validateAndReturnSubstitutionFilterDefinition(componentInstanceId, action, constraint, component); + SubstitutionFilterDataDefinition substitutionFilterDataDefinition = component.getSubstitutionFilter(); boolean wasLocked = false; try { if (shouldLock) { - lockComponent(component.getUniqueId(), component,"Add Node Filter on Component"); + lockComponent(component.getUniqueId(), component, "Delete substitution Filter on Component"); wasLocked = true; } final Either result = substitutionFilterOperation - .deleteConstraint(componentId, componentInstanceId, substitutionFilterDataDefinition, position); + .deleteConstraint(componentId, substitutionFilterDataDefinition, position); if (result.isRight()) { janusGraphDao.rollback(); - throw new BusinessLogicException(componentsUtils.getResponseFormatByResource(componentsUtils - .convertFromStorageResponse(result.right().value()), component.getSystemName())); + throw new BusinessLogicException(componentsUtils + .getResponseFormatByResource(componentsUtils.convertFromStorageResponse(result.right().value()), component.getSystemName())); } else { substitutionFilterDataDefinition = result.left().value(); } janusGraphDao.commit(); LOGGER.debug("Substitution filter successfully deleted in component {} . ", component.getSystemName()); - } catch (final Exception e) { janusGraphDao.rollback(); - LOGGER.error(BUSINESS_PROCESS_ERROR, - "Exception occurred during delete component substitution filter property values: {}", - e.getMessage(), e); + LOGGER.error(BUSINESS_PROCESS_ERROR, "Exception occurred during delete component substitution filter property values: {}", e.getMessage(), + e); throw new BusinessLogicException(componentsUtils.getResponseFormat(ActionStatus.GENERAL_ERROR)); - } finally { if (wasLocked) { unlockComponent(component.getUniqueId(), componentTypeEnum); @@ -285,19 +234,7 @@ public class ComponentSubstitutionFilterBusinessLogic extends BaseBusinessLogic return Optional.ofNullable(substitutionFilterDataDefinition); } - private Optional getSubstitutionFilterDataDefinition( - final ComponentInstance componentInstance) { - - final SubstitutionFilterDataDefinition substitutionFilterDataDefinition = - componentInstance.getSubstitutionFilter(); - if (componentInstance.getSubstitutionFilter() != null) { - return Optional.ofNullable(substitutionFilterDataDefinition); - } - return Optional.empty(); - } - - private void unlockComponent(final String componentUniqueId, - final ComponentTypeEnum componentType) { + private void unlockComponent(final String componentUniqueId, final ComponentTypeEnum componentType) { graphLockOperation.unlockComponent(componentUniqueId, componentType.getNodeType()); } @@ -307,53 +244,27 @@ public class ComponentSubstitutionFilterBusinessLogic extends BaseBusinessLogic return user; } - private Optional getComponentInstance(final String componentInstanceId, - final Component component) { - return component.getComponentInstanceById(componentInstanceId); + private RequirementSubstitutionFilterPropertyDataDefinition getRequirementSubstitutionFilterPropertyDataDefinition(final String constraint) { + final RequirementSubstitutionFilterPropertyDataDefinition requirementSubstitutionFilterPropertyDataDefinition = new RequirementSubstitutionFilterPropertyDataDefinition(); + requirementSubstitutionFilterPropertyDataDefinition.setConstraints(Arrays.asList(constraint)); + return requirementSubstitutionFilterPropertyDataDefinition; } - private Optional getComponentInstanceSubstitutionFilterDataDefinition( - final String componentInstanceId, final Component component) + public void addSubstitutionFilterInGraph(String componentId, + ListDataDefinition substitutionFilterProperties) throws BusinessLogicException { - - if (nodeFilterValidator.validateComponentInstanceExist(component, componentInstanceId).isRight()) { - throw new BusinessLogicException(componentsUtils - .getResponseFormat(SUBSTITUTION_FILTER_NOT_FOUND)); - } - return getComponentInstance(componentInstanceId, component).map(ComponentInstance::getSubstitutionFilter); - } - - private SubstitutionFilterDataDefinition validateAndReturnSubstitutionFilterDefinition( - final String componentInstanceId, final NodeFilterConstraintAction action, final String constraint, - final Component component) throws BusinessLogicException { - - validateSubstitutionFilter(component, componentInstanceId, action, constraint); - final Optional substitutionFilterDataDefinition = - getComponentInstanceSubstitutionFilterDataDefinition(componentInstanceId, component); - if (!substitutionFilterDataDefinition.isPresent()) { - throw new BusinessLogicException(componentsUtils.getResponseFormat(SUBSTITUTION_FILTER_NOT_FOUND)); - } - return substitutionFilterDataDefinition.get(); - } - - private void validateSubstitutionFilter(final Component component, - final String componentInstanceId, - final NodeFilterConstraintAction action, - final String constraint) throws BusinessLogicException { - final Either response = nodeFilterValidator - .validateFilter(component, componentInstanceId, Collections.singletonList(constraint), action); - if (response.isRight()) { - throw new BusinessLogicException(componentsUtils - .getResponseFormat(SUBSTITUTION_FILTER_NOT_FOUND, response.right().value().getFormattedMessage())); + Either updateSubstitutionFilter; + Optional substitutionFilter = createSubstitutionFilterIfNotExist(componentId, true, + ComponentTypeEnum.SERVICE); + if (substitutionFilter.isPresent()) { + for (RequirementSubstitutionFilterPropertyDataDefinition filter : substitutionFilterProperties.getListToscaDataDefinition()) { + updateSubstitutionFilter = substitutionFilterOperation.addPropertyFilter(componentId, substitutionFilter.get(), filter); + if (updateSubstitutionFilter.isRight()) { + throw new BusinessLogicException(componentsUtils + .getResponseFormat(componentsUtils.convertFromStorageResponse(updateSubstitutionFilter.right().value()))); + } + } } } - private RequirementSubstitutionFilterPropertyDataDefinition getRequirementSubstitutionFilterPropertyDataDefinition( - final String constraint) { - - final RequirementSubstitutionFilterPropertyDataDefinition requirementSubstitutionFilterPropertyDataDefinition = - new RequirementSubstitutionFilterPropertyDataDefinition(); - requirementSubstitutionFilterPropertyDataDefinition.setConstraints(Arrays.asList(constraint)); - return requirementSubstitutionFilterPropertyDataDefinition; - } -} \ No newline at end of file +}