aboutsummaryrefslogtreecommitdiffstats
path: root/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/CapabilityTypeImportManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/CapabilityTypeImportManager.java')
-rw-r--r--catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/CapabilityTypeImportManager.java108
1 files changed, 43 insertions, 65 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/CapabilityTypeImportManager.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/CapabilityTypeImportManager.java
index b350c7b4c9..b54a8050ce 100644
--- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/CapabilityTypeImportManager.java
+++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/impl/CapabilityTypeImportManager.java
@@ -20,85 +20,65 @@
package org.openecomp.sdc.be.components.impl;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.function.Consumer;
-
-import javax.annotation.Resource;
-
-import org.openecomp.sdc.be.components.impl.ImportUtils.ToscaTagNamesEnum;
-import org.openecomp.sdc.be.config.BeEcompErrorManager;
+import fj.data.Either;
+import org.apache.commons.lang3.tuple.ImmutablePair;
import org.openecomp.sdc.be.dao.api.ActionStatus;
-import org.openecomp.sdc.be.impl.ComponentsUtils;
import org.openecomp.sdc.be.model.CapabilityTypeDefinition;
import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
import org.openecomp.sdc.be.model.operations.impl.CapabilityTypeOperation;
+import org.openecomp.sdc.be.model.utils.TypeCompareUtils;
+import org.openecomp.sdc.be.utils.TypeUtils;
+import org.openecomp.sdc.common.log.wrappers.Logger;
import org.openecomp.sdc.exception.ResponseFormat;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
-import fj.data.Either;
+import java.util.List;
+import java.util.Map;
@Component("capabilityTypeImportManager")
public class CapabilityTypeImportManager {
- private static final Logger log = LoggerFactory.getLogger(CapabilityTypeImportManager.class);
- @Resource
- private CapabilityTypeOperation capabilityTypeOperation;
- @Resource
- private ComponentsUtils componentsUtils;
- @Resource
- private CommonImportManager commonImportManager;
-
- public Either<List<CapabilityTypeDefinition>, ResponseFormat> createCapabilityTypes(String capabilityYml) {
- Either<List<CapabilityTypeDefinition>, ActionStatus> capabilityTypes = createCapabilityTypesFromYml(capabilityYml);
- if (capabilityTypes.isRight()) {
- ActionStatus status = capabilityTypes.right().value();
- ResponseFormat responseFormat = componentsUtils.getResponseFormatByCapabilityType(status, null);
- return Either.right(responseFormat);
- }
- return createCapabilityTypesByDao(capabilityTypes.left().value());
+ private static final Logger log = Logger.getLogger(CapabilityTypeImportManager.class.getName());
+ private final CapabilityTypeOperation capabilityTypeOperation;
+ private final CommonImportManager commonImportManager;
+
+ public CapabilityTypeImportManager(CapabilityTypeOperation capabilityTypeOperation, CommonImportManager commonImportManager) {
+ this.capabilityTypeOperation = capabilityTypeOperation;
+ this.commonImportManager = commonImportManager;
}
- private Either<List<CapabilityTypeDefinition>, ActionStatus> createCapabilityTypesFromYml(String capabilityYml) {
- return commonImportManager.createElementTypesFromYml(capabilityYml, (capTypeName, capTypeJsonData) -> createCapabilityType(capTypeName, capTypeJsonData));
+ public Either<List<ImmutablePair<CapabilityTypeDefinition, Boolean>>, ResponseFormat> createCapabilityTypes(String capabilityTypesYml) {
+ return commonImportManager.createElementTypes(capabilityTypesYml, this::createCapabilityTypesFromYml, this::upsertCapabilityTypesByDao, CommonImportManager.ElementTypeEnum.CAPABILITY_TYPE);
}
- private Either<List<CapabilityTypeDefinition>, ResponseFormat> createCapabilityTypesByDao(List<CapabilityTypeDefinition> capabilityTypesToCreate) {
- List<CapabilityTypeDefinition> createdCapabilities = new ArrayList<>();
- Either<List<CapabilityTypeDefinition>, ResponseFormat> eitherResult = Either.left(createdCapabilities);
- Iterator<CapabilityTypeDefinition> capTypeItr = capabilityTypesToCreate.iterator();
- boolean stopDao = false;
- while (capTypeItr.hasNext() && !stopDao) {
- CapabilityTypeDefinition capabilityType = capTypeItr.next();
-
- log.info("send capabilityType {} to dao for create", capabilityType.getType());
- Either<CapabilityTypeDefinition, StorageOperationStatus> dataModelResponse = capabilityTypeOperation.addCapabilityType(capabilityType);
- if (dataModelResponse.isRight()) {
- BeEcompErrorManager.getInstance().logBeFailedAddingNodeTypeError("Create CapabilityTypes", "capability type");
- log.debug("failed to create capabilityType: {}", capabilityType.getType());
- if (dataModelResponse.right().value() != StorageOperationStatus.SCHEMA_VIOLATION) {
- ResponseFormat responseFormat = componentsUtils.getResponseFormatByCapabilityType(componentsUtils.convertFromStorageResponseForCapabilityType(dataModelResponse.right().value()), capabilityType);
- eitherResult = Either.right(responseFormat);
- stopDao = true;
- }
-
- } else {
- createdCapabilities.add(capabilityType);
- }
- if (!capTypeItr.hasNext()) {
- log.info("capabilityTypes were created successfully!!!");
- }
-
- }
+ private Either<List<CapabilityTypeDefinition>, ActionStatus> createCapabilityTypesFromYml(String capabilityTypesYml) {
+ return commonImportManager.createElementTypesFromYml(capabilityTypesYml, this::createCapabilityType);
- return eitherResult;
+ }
+ private Either<List<ImmutablePair<CapabilityTypeDefinition, Boolean>>, ResponseFormat> upsertCapabilityTypesByDao(List<CapabilityTypeDefinition> capabilityTypesToCreate) {
+ return commonImportManager.createElementTypesByDao(capabilityTypesToCreate,
+ capabilityType -> Either.left(ActionStatus.OK),
+ capabilityType -> new ImmutablePair<>(CommonImportManager.ElementTypeEnum.CAPABILITY_TYPE, capabilityType.getType()),
+ capabilityTypeOperation::getCapabilityType,
+ capabilityTypeOperation::addCapabilityType,
+ this::updateCapabilityType);
+ }
+
+ private Either<CapabilityTypeDefinition, StorageOperationStatus> updateCapabilityType(CapabilityTypeDefinition newCapabilityType, CapabilityTypeDefinition oldCapabilityType) {
+ Either<CapabilityTypeDefinition, StorageOperationStatus> validationRes = capabilityTypeOperation.validateUpdateProperties(newCapabilityType);
+ if (validationRes.isRight()) {
+ log.error("#updateCapabilityType - One or all properties of capability type {} not valid. status is {}", newCapabilityType, validationRes.right().value());
+ return validationRes;
+ }
+
+ if (TypeCompareUtils.isCapabilityTypesEquals(newCapabilityType, oldCapabilityType)) {
+ return TypeCompareUtils.typeAlreadyExists();
+ }
+
+ return capabilityTypeOperation.updateCapabilityType(newCapabilityType, oldCapabilityType);
}
private CapabilityTypeDefinition createCapabilityType(String capabilityTypeName, Map<String, Object> toscaJson) {
@@ -107,13 +87,11 @@ public class CapabilityTypeImportManager {
capabilityType.setType(capabilityTypeName);
// Description
- final Consumer<String> descriptionSetter = description -> capabilityType.setDescription(description);
- commonImportManager.setField(toscaJson, ToscaTagNamesEnum.DESCRIPTION.getElementName(), descriptionSetter);
+ commonImportManager.setField(toscaJson, TypeUtils.ToscaTagNamesEnum.DESCRIPTION.getElementName(), capabilityType::setDescription);
// Derived From
- final Consumer<String> derivedFromSetter = derivedFrom -> capabilityType.setDerivedFrom(derivedFrom);
- commonImportManager.setField(toscaJson, ToscaTagNamesEnum.DERIVED_FROM.getElementName(), derivedFromSetter);
+ commonImportManager.setField(toscaJson, TypeUtils.ToscaTagNamesEnum.DERIVED_FROM.getElementName(), capabilityType::setDerivedFrom);
// Properties
- commonImportManager.setPropertiesMap(toscaJson, (values) -> capabilityType.setProperties(values));
+ commonImportManager.setPropertiesMap(toscaJson, capabilityType::setProperties);
return capabilityType;
}