diff options
Diffstat (limited to 'catalog-be/src/main/java/org/openecomp/sdc/be/components/validation/CapabilitiesValidation.java')
-rw-r--r-- | catalog-be/src/main/java/org/openecomp/sdc/be/components/validation/CapabilitiesValidation.java | 147 |
1 files changed, 60 insertions, 87 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/validation/CapabilitiesValidation.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/validation/CapabilitiesValidation.java index 2c69ee5b38..3f53f6b993 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/validation/CapabilitiesValidation.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/validation/CapabilitiesValidation.java @@ -13,10 +13,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.openecomp.sdc.be.components.validation; import fj.data.Either; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.regex.Pattern; +import java.util.stream.Collectors; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang.StringUtils; @@ -28,26 +33,17 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.regex.Pattern; -import java.util.stream.Collectors; - @Component("capabilitiesValidation") public class CapabilitiesValidation { + private static final Logger LOGGER = LoggerFactory.getLogger(CapabilitiesValidation.class); private static final String CAPABILITY_NOT_FOUND_IN_COMPONENT = "Capability not found in component {} "; private static final Pattern NAME_VALIDATION_REGEX_PATTERN = Pattern.compile("^[a-zA-Z0-9_.]*$"); - public Either<Boolean, ResponseFormat> validateCapabilities( - Collection<CapabilityDefinition> capabilities, - org.openecomp.sdc.be.model.Component component, boolean isUpdate) { - - for(CapabilityDefinition capabilityDefinition : capabilities) { - Either<Boolean, ResponseFormat> validateCapabilityResponse = validateCapability(capabilityDefinition, - component, isUpdate); + public Either<Boolean, ResponseFormat> validateCapabilities(Collection<CapabilityDefinition> capabilities, + org.openecomp.sdc.be.model.Component component, boolean isUpdate) { + for (CapabilityDefinition capabilityDefinition : capabilities) { + Either<Boolean, ResponseFormat> validateCapabilityResponse = validateCapability(capabilityDefinition, component, isUpdate); if (validateCapabilityResponse.isRight()) { return validateCapabilityResponse; } @@ -56,29 +52,25 @@ public class CapabilitiesValidation { } private Either<Boolean, ResponseFormat> validateCapability(CapabilityDefinition capabilityDefinition, - org.openecomp.sdc.be.model.Component component, - boolean isUpdate) { + org.openecomp.sdc.be.model.Component component, boolean isUpdate) { ResponseFormatManager responseFormatManager = getResponseFormatManager(); - - if(isUpdate) { - Either<Boolean, ResponseFormat> capabilityExistValidationEither - = isCapabilityExist(capabilityDefinition, responseFormatManager, component); + if (isUpdate) { + Either<Boolean, ResponseFormat> capabilityExistValidationEither = isCapabilityExist(capabilityDefinition, responseFormatManager, + component); if (capabilityExistValidationEither.isRight()) { return Either.right(capabilityExistValidationEither.right().value()); } } - Either<Boolean, ResponseFormat> capabilityNameValidationResponse - = validateCapabilityName(capabilityDefinition, responseFormatManager, component, isUpdate); + Either<Boolean, ResponseFormat> capabilityNameValidationResponse = validateCapabilityName(capabilityDefinition, responseFormatManager, + component, isUpdate); if (capabilityNameValidationResponse.isRight()) { return Either.right(capabilityNameValidationResponse.right().value()); } - Either<Boolean, ResponseFormat> capabilityTypeEmptyEither = - isCapabilityTypeEmpty(responseFormatManager, capabilityDefinition.getType()); + Either<Boolean, ResponseFormat> capabilityTypeEmptyEither = isCapabilityTypeEmpty(responseFormatManager, capabilityDefinition.getType()); if (capabilityTypeEmptyEither.isRight()) { return Either.right(capabilityTypeEmptyEither.right().value()); } - Either<Boolean, ResponseFormat> capabilityOccurrencesValidationEither = - validateOccurrences(capabilityDefinition, responseFormatManager); + Either<Boolean, ResponseFormat> capabilityOccurrencesValidationEither = validateOccurrences(capabilityDefinition, responseFormatManager); if (capabilityOccurrencesValidationEither.isRight()) { return Either.right(capabilityOccurrencesValidationEither.right().value()); } @@ -89,9 +81,9 @@ public class CapabilitiesValidation { ResponseFormatManager responseFormatManager) { String maxOccurrences = capabilityDefinition.getMaxOccurrences(); String minOccurrences = capabilityDefinition.getMinOccurrences(); - if(maxOccurrences != null && minOccurrences != null) { - Either<Boolean, ResponseFormat> capabilityOccurrencesValidationEither = - validateOccurrences(responseFormatManager, minOccurrences, maxOccurrences); + if (maxOccurrences != null && minOccurrences != null) { + Either<Boolean, ResponseFormat> capabilityOccurrencesValidationEither = validateOccurrences(responseFormatManager, minOccurrences, + maxOccurrences); if (capabilityOccurrencesValidationEither.isRight()) { return Either.right(capabilityOccurrencesValidationEither.right().value()); } @@ -99,32 +91,26 @@ public class CapabilitiesValidation { return Either.left(Boolean.TRUE); } - private Either<Boolean, ResponseFormat> isCapabilityExist(CapabilityDefinition definition, - ResponseFormatManager responseFormatManager, + private Either<Boolean, ResponseFormat> isCapabilityExist(CapabilityDefinition definition, ResponseFormatManager responseFormatManager, org.openecomp.sdc.be.model.Component component) { Map<String, List<CapabilityDefinition>> componentCapabilities = component.getCapabilities(); - if(MapUtils.isEmpty(componentCapabilities)){ + if (MapUtils.isEmpty(componentCapabilities)) { LOGGER.error(CAPABILITY_NOT_FOUND_IN_COMPONENT, component.getUniqueId()); - ResponseFormat errorResponse = responseFormatManager.getResponseFormat(ActionStatus - .CAPABILITY_NOT_FOUND, component.getUniqueId()); + ResponseFormat errorResponse = responseFormatManager.getResponseFormat(ActionStatus.CAPABILITY_NOT_FOUND, component.getUniqueId()); return Either.right(errorResponse); } - - List<CapabilityDefinition> capabilityDefinitionList = componentCapabilities.values() - .stream().flatMap(Collection::stream).collect(Collectors.toList()); - if(CollectionUtils.isEmpty(capabilityDefinitionList)){ + List<CapabilityDefinition> capabilityDefinitionList = componentCapabilities.values().stream().flatMap(Collection::stream) + .collect(Collectors.toList()); + if (CollectionUtils.isEmpty(capabilityDefinitionList)) { LOGGER.error(CAPABILITY_NOT_FOUND_IN_COMPONENT, component.getUniqueId()); - ResponseFormat errorResponse = responseFormatManager.getResponseFormat(ActionStatus - .CAPABILITY_NOT_FOUND, component.getUniqueId()); + ResponseFormat errorResponse = responseFormatManager.getResponseFormat(ActionStatus.CAPABILITY_NOT_FOUND, component.getUniqueId()); return Either.right(errorResponse); } - boolean isCapabilityExist = capabilityDefinitionList.stream().anyMatch(capabilityDefinition -> - capabilityDefinition.getUniqueId().equalsIgnoreCase(definition.getUniqueId())); - - if(!isCapabilityExist) { + boolean isCapabilityExist = capabilityDefinitionList.stream() + .anyMatch(capabilityDefinition -> capabilityDefinition.getUniqueId().equalsIgnoreCase(definition.getUniqueId())); + if (!isCapabilityExist) { LOGGER.error(CAPABILITY_NOT_FOUND_IN_COMPONENT, component.getUniqueId()); - ResponseFormat errorResponse = responseFormatManager.getResponseFormat(ActionStatus - .CAPABILITY_NOT_FOUND, component.getUniqueId()); + ResponseFormat errorResponse = responseFormatManager.getResponseFormat(ActionStatus.CAPABILITY_NOT_FOUND, component.getUniqueId()); return Either.right(errorResponse); } return Either.left(Boolean.TRUE); @@ -132,36 +118,30 @@ public class CapabilitiesValidation { private Either<Boolean, ResponseFormat> validateCapabilityName(CapabilityDefinition capabilityDefinition, ResponseFormatManager responseFormatManager, - org.openecomp.sdc.be.model.Component component, - boolean isUpdate) { - Either<Boolean, ResponseFormat> capabilityNameEmptyEither = - isCapabilityNameEmpty(responseFormatManager, capabilityDefinition.getName()); + org.openecomp.sdc.be.model.Component component, boolean isUpdate) { + Either<Boolean, ResponseFormat> capabilityNameEmptyEither = isCapabilityNameEmpty(responseFormatManager, capabilityDefinition.getName()); if (capabilityNameEmptyEither.isRight()) { return Either.right(capabilityNameEmptyEither.right().value()); } - - Either<Boolean, ResponseFormat> capabilityNameRegexValidationResponse = - isCapabilityNameRegexValid(responseFormatManager, capabilityDefinition.getName()); + Either<Boolean, ResponseFormat> capabilityNameRegexValidationResponse = isCapabilityNameRegexValid(responseFormatManager, + capabilityDefinition.getName()); if (capabilityNameRegexValidationResponse.isRight()) { return Either.right(capabilityNameRegexValidationResponse.right().value()); } - - Either<Boolean, ResponseFormat> operationTypeUniqueResponse - = validateCapabilityNameUnique(capabilityDefinition, component, isUpdate ); - if(operationTypeUniqueResponse.isRight()) { + Either<Boolean, ResponseFormat> operationTypeUniqueResponse = validateCapabilityNameUnique(capabilityDefinition, component, isUpdate); + if (operationTypeUniqueResponse.isRight()) { return Either.right(operationTypeUniqueResponse.right().value()); } if (!operationTypeUniqueResponse.left().value()) { LOGGER.error("Capability name {} already in use ", capabilityDefinition.getName()); - ResponseFormat errorResponse = responseFormatManager.getResponseFormat(ActionStatus - .CAPABILITY_NAME_ALREADY_IN_USE, capabilityDefinition.getName()); + ResponseFormat errorResponse = responseFormatManager + .getResponseFormat(ActionStatus.CAPABILITY_NAME_ALREADY_IN_USE, capabilityDefinition.getName()); return Either.right(errorResponse); } return Either.left(Boolean.TRUE); } - private Either<Boolean, ResponseFormat> isCapabilityNameEmpty(ResponseFormatManager responseFormatManager, - String capabilityName) { + private Either<Boolean, ResponseFormat> isCapabilityNameEmpty(ResponseFormatManager responseFormatManager, String capabilityName) { if (StringUtils.isEmpty(capabilityName)) { LOGGER.error("Capability Name is mandatory"); ResponseFormat errorResponse = responseFormatManager.getResponseFormat(ActionStatus.CAPABILITY_NAME_MANDATORY); @@ -170,8 +150,7 @@ public class CapabilitiesValidation { return Either.left(Boolean.TRUE); } - private Either<Boolean, ResponseFormat> isCapabilityTypeEmpty(ResponseFormatManager responseFormatManager, - String capabilityType) { + private Either<Boolean, ResponseFormat> isCapabilityTypeEmpty(ResponseFormatManager responseFormatManager, String capabilityType) { if (StringUtils.isEmpty(capabilityType)) { LOGGER.error("Capability type is mandatory"); ResponseFormat errorResponse = responseFormatManager.getResponseFormat(ActionStatus.CAPABILITY_TYPE_MANDATORY); @@ -180,11 +159,10 @@ public class CapabilitiesValidation { return Either.left(Boolean.TRUE); } - private Either<Boolean, ResponseFormat> validateOccurrences (ResponseFormatManager responseFormatManager, - String minOccurrences, String maxOccurrences ) { + private Either<Boolean, ResponseFormat> validateOccurrences(ResponseFormatManager responseFormatManager, String minOccurrences, + String maxOccurrences) { try { - if (StringUtils.isNotEmpty(maxOccurrences) && "UNBOUNDED".equalsIgnoreCase(maxOccurrences) - && Integer.parseInt(minOccurrences) >= 0) { + if (StringUtils.isNotEmpty(maxOccurrences) && "UNBOUNDED".equalsIgnoreCase(maxOccurrences) && Integer.parseInt(minOccurrences) >= 0) { return Either.left(Boolean.TRUE); } else if (Integer.parseInt(minOccurrences) < 0) { LOGGER.debug("Invalid occurrences format.low_bound occurrence negative {}", minOccurrences); @@ -192,8 +170,8 @@ public class CapabilitiesValidation { return Either.right(responseFormat); } else if (Integer.parseInt(maxOccurrences) < Integer.parseInt(minOccurrences)) { LOGGER.error("Capability maxOccurrences should be greater than minOccurrences"); - ResponseFormat errorResponse = responseFormatManager.getResponseFormat(ActionStatus - .MAX_OCCURRENCES_SHOULD_BE_GREATER_THAN_MIN_OCCURRENCES); + ResponseFormat errorResponse = responseFormatManager + .getResponseFormat(ActionStatus.MAX_OCCURRENCES_SHOULD_BE_GREATER_THAN_MIN_OCCURRENCES); return Either.right(errorResponse); } } catch (NumberFormatException ex) { @@ -205,40 +183,36 @@ public class CapabilitiesValidation { } private Either<Boolean, ResponseFormat> validateCapabilityNameUnique(CapabilityDefinition capabilityDefinition, - org.openecomp.sdc.be.model.Component component, - boolean isUpdate) { + org.openecomp.sdc.be.model.Component component, boolean isUpdate) { boolean isCapabilityNameUnique = false; Map<String, List<CapabilityDefinition>> componentCapabilities = component.getCapabilities(); - if(MapUtils.isEmpty(componentCapabilities)){ + if (MapUtils.isEmpty(componentCapabilities)) { return Either.left(true); } - List<CapabilityDefinition> capabilityDefinitionList = componentCapabilities.values() - .stream().flatMap(Collection::stream).collect(Collectors.toList()); - if(CollectionUtils.isEmpty(capabilityDefinitionList)){ + List<CapabilityDefinition> capabilityDefinitionList = componentCapabilities.values().stream().flatMap(Collection::stream) + .collect(Collectors.toList()); + if (CollectionUtils.isEmpty(capabilityDefinitionList)) { return Either.left(true); } Map<String, String> capabilityNameMap = new HashMap<>(); capabilityDefinitionList.forEach(capability -> capabilityNameMap.put(capability.getUniqueId(), capability.getName())); - - if (!capabilityNameMap.values().contains(capabilityDefinition.getName())){ + if (!capabilityNameMap.values().contains(capabilityDefinition.getName())) { isCapabilityNameUnique = true; } - if (!isCapabilityNameUnique && isUpdate){ - List<Map.Entry<String, String>> capNamesEntries = capabilityNameMap.entrySet().stream().filter(entry -> - entry.getValue().equalsIgnoreCase(capabilityDefinition.getName())).collect(Collectors.toList()); - if(capNamesEntries.size() == 1 && capNamesEntries.get(0).getKey().equals(capabilityDefinition.getUniqueId())) { + if (!isCapabilityNameUnique && isUpdate) { + List<Map.Entry<String, String>> capNamesEntries = capabilityNameMap.entrySet().stream() + .filter(entry -> entry.getValue().equalsIgnoreCase(capabilityDefinition.getName())).collect(Collectors.toList()); + if (capNamesEntries.size() == 1 && capNamesEntries.get(0).getKey().equals(capabilityDefinition.getUniqueId())) { isCapabilityNameUnique = true; } } return Either.left(isCapabilityNameUnique); } - private Either<Boolean, ResponseFormat> isCapabilityNameRegexValid(ResponseFormatManager responseFormatManager, - String capabilityName) { + private Either<Boolean, ResponseFormat> isCapabilityNameRegexValid(ResponseFormatManager responseFormatManager, String capabilityName) { if (!isValidCapabilityName(capabilityName)) { LOGGER.error("Capability name {} is invalid, Only alphanumeric chars, underscore and dot allowed", capabilityName); - ResponseFormat errorResponse = responseFormatManager - .getResponseFormat(ActionStatus.INVALID_CAPABILITY_NAME, capabilityName); + ResponseFormat errorResponse = responseFormatManager.getResponseFormat(ActionStatus.INVALID_CAPABILITY_NAME, capabilityName); return Either.right(errorResponse); } return Either.left(Boolean.TRUE); @@ -251,5 +225,4 @@ public class CapabilitiesValidation { protected ResponseFormatManager getResponseFormatManager() { return ResponseFormatManager.getInstance(); } - } |