aboutsummaryrefslogtreecommitdiffstats
path: root/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentNodeFilterBusinessLogic.java
diff options
context:
space:
mode:
Diffstat (limited to 'catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentNodeFilterBusinessLogic.java')
-rw-r--r--catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentNodeFilterBusinessLogic.java157
1 files changed, 42 insertions, 115 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentNodeFilterBusinessLogic.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentNodeFilterBusinessLogic.java
index 1b9054e187..f547dcf19c 100644
--- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentNodeFilterBusinessLogic.java
+++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/ComponentNodeFilterBusinessLogic.java
@@ -24,9 +24,8 @@ import static org.openecomp.sdc.common.log.enums.EcompLoggerErrorCode.BUSINESS_P
import fj.data.Either;
import java.util.Arrays;
import java.util.Collections;
-import java.util.List;
import java.util.Optional;
-import java.util.stream.Collectors;
+import org.apache.commons.lang.StringUtils;
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;
@@ -50,6 +49,7 @@ import org.openecomp.sdc.be.model.operations.api.IGroupOperation;
import org.openecomp.sdc.be.model.operations.api.IGroupTypeOperation;
import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
import org.openecomp.sdc.be.model.operations.impl.InterfaceLifecycleOperation;
+import org.openecomp.sdc.be.ui.model.UIConstraint;
import org.openecomp.sdc.be.user.Role;
import org.openecomp.sdc.common.log.wrappers.Logger;
import org.openecomp.sdc.exception.ResponseFormat;
@@ -177,12 +177,13 @@ public class ComponentNodeFilterBusinessLogic extends BaseBusinessLogic {
final String constraint,
final boolean shouldLock,
final ComponentTypeEnum componentTypeEnum,
- final NodeFilterConstraintType nodeFilterConstraintType)
+ final NodeFilterConstraintType nodeFilterConstraintType,
+ final String capabilityName)
throws BusinessLogicException {
final Component component = getComponent(componentId);
CINodeFilterDataDefinition nodeFilterDataDefinition = validateAndReturnNodeFilterDefinition(componentInstanceId,
- action, constraint, component);
+ action, constraint, component, nodeFilterConstraintType);
boolean wasLocked = false;
try {
if (shouldLock) {
@@ -193,9 +194,10 @@ public class ComponentNodeFilterBusinessLogic extends BaseBusinessLogic {
new RequirementNodeFilterPropertyDataDefinition();
requirementNodeFilterPropertyDataDefinition.setName(propertyName);
requirementNodeFilterPropertyDataDefinition.setConstraints(Collections.singletonList(constraint));
+
final Either<CINodeFilterDataDefinition, StorageOperationStatus> result = addNewNodeFilter(componentId,
- componentInstanceId, propertyName, nodeFilterConstraintType, nodeFilterDataDefinition,
- requirementNodeFilterPropertyDataDefinition);
+ componentInstanceId, nodeFilterConstraintType, nodeFilterDataDefinition,
+ requirementNodeFilterPropertyDataDefinition, capabilityName);
if (result.isRight()) {
janusGraphDao.rollback();
throw new BusinessLogicException(componentsUtils.getResponseFormatByResource(componentsUtils
@@ -232,7 +234,7 @@ public class ComponentNodeFilterBusinessLogic extends BaseBusinessLogic {
final Component component = getComponent(componentId);
CINodeFilterDataDefinition nodeFilterDataDefinition =
- validateAndReturnNodeFilterDefinition(componentInstanceId, action, constraint, component);
+ validateAndReturnNodeFilterDefinition(componentInstanceId, action, constraint, component, nodeFilterConstraintType);
boolean wasLocked = false;
try {
if (shouldLock) {
@@ -266,90 +268,13 @@ public class ComponentNodeFilterBusinessLogic extends BaseBusinessLogic {
return Optional.ofNullable(nodeFilterDataDefinition);
}
- public Optional<CINodeFilterDataDefinition> updateNodeFilter(final String componentId,
- final String componentInstanceId,
- final List<String> constraints,
- final boolean shouldLock,
- final ComponentTypeEnum componentTypeEnum,
- final NodeFilterConstraintType nodeFilterConstraintType)
- throws BusinessLogicException {
-
- final Component component = getComponent(componentId);
-
- final Either<Boolean, ResponseFormat> response = nodeFilterValidator
- .validateFilter(component, componentInstanceId, constraints, NodeFilterConstraintAction.UPDATE);
- if (response.isRight()) {
- throw new BusinessLogicException(componentsUtils
- .getResponseFormat(ActionStatus.NODE_FILTER_NOT_FOUND, response.right().value().getFormattedMessage()));
- }
- final Optional<ComponentInstance> componentInstance = getComponentInstance(componentInstanceId,
- component);
- if (!componentInstance.isPresent()) {
- throw new BusinessLogicException(ResponseFormatManager.getInstance()
- .getResponseFormat(ActionStatus.GENERAL_ERROR));
- }
- CINodeFilterDataDefinition nodeFilterDataDefinition = componentInstance.get().getNodeFilter();
- if (nodeFilterDataDefinition == null) {
- throw new BusinessLogicException(componentsUtils.getResponseFormat(ActionStatus.NODE_FILTER_NOT_FOUND));
- }
- boolean wasLocked = false;
- try {
- if (shouldLock) {
- lockComponent(component.getUniqueId(), component,"Update Node Filter on Component");
- wasLocked = true;
- }
- final Either<CINodeFilterDataDefinition, StorageOperationStatus> result =
- updateNodeFilterConstraint(componentId, componentInstanceId, constraints, nodeFilterConstraintType,
- nodeFilterDataDefinition);
-
- if (result.isRight()) {
- janusGraphDao.rollback();
- throw new BusinessLogicException(componentsUtils.getResponseFormatByResource(componentsUtils
- .convertFromStorageResponse(result.right().value()), component.getSystemName()));
- } else {
- nodeFilterDataDefinition = result.left().value();
- }
- janusGraphDao.commit();
- LOGGER.debug("Node filter successfully updated in component {} . ", component.getSystemName());
-
- } catch (final Exception e) {
- janusGraphDao.rollback();
- LOGGER.error(BUSINESS_PROCESS_ERROR,
- "Exception occurred during update component node filter property values: {}",
- e.getMessage(), e);
- throw new BusinessLogicException(componentsUtils.getResponseFormat(ActionStatus.GENERAL_ERROR));
-
- } finally {
- if (wasLocked) {
- unlockComponent(component.getUniqueId(), componentTypeEnum);
- }
- }
- return Optional.ofNullable(nodeFilterDataDefinition);
- }
-
- private Either<CINodeFilterDataDefinition, StorageOperationStatus> updateNodeFilterConstraint(
- final String componentId, final String componentInstanceId, final List<String> constraints,
- final NodeFilterConstraintType nodeFilterConstraintType, final CINodeFilterDataDefinition nodeFilterDataDefinition) {
-
- if (NodeFilterConstraintType.PROPERTIES.equals(nodeFilterConstraintType)) {
- final List<RequirementNodeFilterPropertyDataDefinition> properties = constraints.stream()
- .map(this::getRequirementNodeFilterPropertyDataDefinition).collect(Collectors.toList());
- return nodeFilterOperation.updateProperties(componentId, componentInstanceId,
- nodeFilterDataDefinition, properties);
- }
- final List<RequirementNodeFilterCapabilityDataDefinition> capabilities = constraints.stream()
- .map(this::getRequirementNodeFilterCapabilityDataDefinition).collect(Collectors.toList());
- return nodeFilterOperation.updateCapabilities(componentId, componentInstanceId,
- nodeFilterDataDefinition, capabilities);
- }
-
private Either<CINodeFilterDataDefinition, StorageOperationStatus> addNewNodeFilter(
final String componentId,
final String componentInstanceId,
- final String propertyName,
final NodeFilterConstraintType nodeFilterConstraintType,
final CINodeFilterDataDefinition nodeFilterDataDefinition,
- final RequirementNodeFilterPropertyDataDefinition requirementNodeFilterPropertyDataDefinition) {
+ final RequirementNodeFilterPropertyDataDefinition requirementNodeFilterPropertyDataDefinition,
+ final String capabilityName) {
if (NodeFilterConstraintType.PROPERTIES.equals(nodeFilterConstraintType)) {
return nodeFilterOperation.addNewProperty(componentId, componentInstanceId, nodeFilterDataDefinition,
@@ -357,7 +282,7 @@ public class ComponentNodeFilterBusinessLogic extends BaseBusinessLogic {
}
final RequirementNodeFilterCapabilityDataDefinition requirementNodeFilterCapabilityDataDefinition =
new RequirementNodeFilterCapabilityDataDefinition();
- requirementNodeFilterCapabilityDataDefinition.setName(propertyName);
+ requirementNodeFilterCapabilityDataDefinition.setName(capabilityName);
final ListDataDefinition<RequirementNodeFilterPropertyDataDefinition>
propertyDataDefinitionListDataDefinition = new ListDataDefinition<>();
propertyDataDefinitionListDataDefinition.getListToscaDataDefinition().addAll(
@@ -410,37 +335,14 @@ public class ComponentNodeFilterBusinessLogic extends BaseBusinessLogic {
return Optional.empty();
}
- private RequirementNodeFilterPropertyDataDefinition getRequirementNodeFilterPropertyDataDefinition(
- final String constraint) {
-
- final RequirementNodeFilterPropertyDataDefinition requirementNodeFilterPropertyDataDefinition =
- new RequirementNodeFilterPropertyDataDefinition();
- requirementNodeFilterPropertyDataDefinition.setConstraints(Arrays.asList(constraint));
- return requirementNodeFilterPropertyDataDefinition;
- }
-
- private RequirementNodeFilterCapabilityDataDefinition getRequirementNodeFilterCapabilityDataDefinition(
- final String constraint) {
-
- final RequirementNodeFilterCapabilityDataDefinition requirementNodeFilterCapabilityDataDefinition =
- new RequirementNodeFilterCapabilityDataDefinition();
- final ListDataDefinition<RequirementNodeFilterPropertyDataDefinition> propertyDataDefinitionList =
- new ListDataDefinition<>();
- propertyDataDefinitionList.getListToscaDataDefinition().addAll(
- Collections.singleton(getRequirementNodeFilterPropertyDataDefinition(constraint)));
- requirementNodeFilterCapabilityDataDefinition.setName(new ConstraintConvertor().convert(constraint)
- .getServicePropertyName());
- requirementNodeFilterCapabilityDataDefinition.setProperties(propertyDataDefinitionList);
- return requirementNodeFilterCapabilityDataDefinition;
- }
-
private CINodeFilterDataDefinition validateAndReturnNodeFilterDefinition(final String componentInstanceId,
final NodeFilterConstraintAction action,
final String constraint,
- final Component component)
+ final Component component,
+ final NodeFilterConstraintType nodeFilterConstraintType)
throws BusinessLogicException {
- validateNodeFilter(component, componentInstanceId, action, constraint);
+ validateNodeFilter(component, componentInstanceId, action, constraint, nodeFilterConstraintType);
final Optional<CINodeFilterDataDefinition> cINodeFilterDataDefinition = getCiNodeFilterDataDefinition(
componentInstanceId, component);
if (!cINodeFilterDataDefinition.isPresent()) {
@@ -452,12 +354,37 @@ public class ComponentNodeFilterBusinessLogic extends BaseBusinessLogic {
private void validateNodeFilter(final Component component,
final String componentInstanceId,
final NodeFilterConstraintAction action,
- final String constraint) throws BusinessLogicException {
+ final String constraint,
+ final NodeFilterConstraintType nodeFilterConstraintType) throws BusinessLogicException {
final Either<Boolean, ResponseFormat> response = nodeFilterValidator
- .validateFilter(component, componentInstanceId, Collections.singletonList(constraint), action);
+ .validateFilter(component, componentInstanceId, Collections.singletonList(constraint), action, nodeFilterConstraintType);
if (response.isRight()) {
throw new BusinessLogicException(componentsUtils
.getResponseFormat(ActionStatus.NODE_FILTER_NOT_FOUND, response.right().value().getFormattedMessage()));
}
}
+
+ public Optional<CINodeFilterDataDefinition> updateNodeFilter(final String componentId,
+ final String componentInstanceId,
+ final UIConstraint uiConstraint,
+ final ComponentTypeEnum componentTypeEnum,
+ final NodeFilterConstraintType nodeFilterConstraintType,
+ final int index)
+ throws BusinessLogicException {
+
+ final Optional<CINodeFilterDataDefinition> deleteActionResponse = deleteNodeFilter(componentId,
+ componentInstanceId,
+ NodeFilterConstraintAction.DELETE, null, index, true, componentTypeEnum,
+ nodeFilterConstraintType);
+
+ if (!deleteActionResponse.isPresent()) {
+ throw new BusinessLogicException(componentsUtils
+ .getResponseFormat(ActionStatus.GENERAL_ERROR, "Failed to delete node filter capabilities"));
+ }
+
+ return addNodeFilter(componentId.toLowerCase(), componentInstanceId, NodeFilterConstraintAction.ADD,
+ uiConstraint.getServicePropertyName(), new ConstraintConvertor().convert(uiConstraint), true,
+ componentTypeEnum, nodeFilterConstraintType,
+ StringUtils.isEmpty(uiConstraint.getCapabilityName()) ? "" : uiConstraint.getCapabilityName());
+ }
}