summaryrefslogtreecommitdiffstats
path: root/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ComponentManagerImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ComponentManagerImpl.java')
-rw-r--r--openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ComponentManagerImpl.java234
1 files changed, 234 insertions, 0 deletions
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ComponentManagerImpl.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ComponentManagerImpl.java
new file mode 100644
index 0000000000..75a5377ec3
--- /dev/null
+++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/ComponentManagerImpl.java
@@ -0,0 +1,234 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.sdc.vendorsoftwareproduct.impl;
+
+import org.apache.commons.collections4.CollectionUtils;
+import org.openecomp.core.utilities.json.JsonUtil;
+import org.openecomp.sdc.common.errors.CoreException;
+import org.openecomp.sdc.datatypes.error.ErrorLevel;
+import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage;
+import org.openecomp.sdc.logging.context.impl.MdcDataErrorMessage;
+import org.openecomp.sdc.logging.types.LoggerConstants;
+import org.openecomp.sdc.logging.types.LoggerErrorCode;
+import org.openecomp.sdc.logging.types.LoggerTragetServiceName;
+import org.openecomp.sdc.vendorsoftwareproduct.ComponentManager;
+import org.openecomp.sdc.vendorsoftwareproduct.NicManager;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentDao;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentEntity;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
+import org.openecomp.sdc.vendorsoftwareproduct.errors.CompositionEditNotAllowedErrorBuilder;
+import org.openecomp.sdc.vendorsoftwareproduct.services.composition.CompositionEntityDataManager;
+import org.openecomp.sdc.vendorsoftwareproduct.services.schemagenerator.SchemaGenerator;
+import org.openecomp.sdc.vendorsoftwareproduct.types.CompositionEntityResponse;
+import org.openecomp.sdc.vendorsoftwareproduct.types.QuestionnaireResponse;
+import org.openecomp.sdc.vendorsoftwareproduct.types.composition.ComponentData;
+import org.openecomp.sdc.vendorsoftwareproduct.types.composition.CompositionEntityType;
+import org.openecomp.sdc.vendorsoftwareproduct.types.composition.CompositionEntityValidationData;
+import org.openecomp.sdc.vendorsoftwareproduct.types.schemagenerator.ComponentCompositionSchemaInput;
+import org.openecomp.sdc.vendorsoftwareproduct.types.schemagenerator.ComponentQuestionnaireSchemaInput;
+import org.openecomp.sdc.vendorsoftwareproduct.types.schemagenerator.SchemaTemplateContext;
+import org.openecomp.sdc.vendorsoftwareproduct.types.schemagenerator.SchemaTemplateInput;
+import org.openecomp.sdc.versioning.VersioningUtil;
+import org.openecomp.sdc.versioning.dao.types.Version;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+public class ComponentManagerImpl implements ComponentManager {
+ private static final MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
+ private ComponentDao componentDao;
+ private CompositionEntityDataManager compositionEntityDataManager;
+ private NicManager nicManager;
+
+ public ComponentManagerImpl(
+ ComponentDao componentDao,
+ CompositionEntityDataManager compositionEntityDataManager,
+ NicManager nicManager) {
+ this.componentDao = componentDao;
+ this.compositionEntityDataManager = compositionEntityDataManager;
+ this.nicManager = nicManager;
+ }
+
+ @Override
+ public Collection<ComponentEntity> listComponents(String vspId, Version version, String user) {
+ mdcDataDebugMessage.debugEntryMessage("VSP id", vspId);
+ mdcDataDebugMessage.debugExitMessage("VSP id", vspId);
+ return componentDao.list(new ComponentEntity(vspId, version, null));
+ }
+
+ @Override
+ public void deleteComponents(String vspId, Version version, String user) {
+ mdcDataDebugMessage.debugEntryMessage("VSP id", vspId);
+ if (!isManual(vspId, version)) {
+ MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB,
+ LoggerTragetServiceName.DELETE_COMPONENT, ErrorLevel.ERROR.name(),
+ LoggerErrorCode.PERMISSION_ERROR.getErrorCode(), "Can't delete component");
+ throw new CoreException(
+ new CompositionEditNotAllowedErrorBuilder(vspId, version).build());
+ }
+
+ //componentDao.updateVspLatestModificationTime(vspId, version);
+ mdcDataDebugMessage.debugExitMessage("VSP id", vspId);
+ }
+
+ @Override
+ public ComponentEntity createComponent(ComponentEntity component, String user) {
+ mdcDataDebugMessage.debugEntryMessage("VSP id", component.getId());
+
+ if (!isManual(component.getVspId(), component.getVersion())) {
+ MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB,
+ LoggerTragetServiceName.CREATE_COMPONENT, ErrorLevel.ERROR.name(),
+ LoggerErrorCode.PERMISSION_ERROR.getErrorCode(), "Can't create component");
+ throw new CoreException(
+ new CompositionEditNotAllowedErrorBuilder(component.getVspId(), component.getVersion())
+ .build());
+
+ }
+ //componentDao.updateVspLatestModificationTime(component.getVspId(), component.getVersion());
+ mdcDataDebugMessage.debugExitMessage("VSP id", component.getId());
+ return null;
+ }
+
+ @Override
+ public CompositionEntityValidationData updateComponent(ComponentEntity component, String user) {
+ mdcDataDebugMessage.debugEntryMessage("VSP id, component id", component
+ .getVspId(), component.getId());
+ ComponentEntity retrieved =
+ getComponent(component.getVspId(), component.getVersion(), component.getId());
+
+ ComponentCompositionSchemaInput schemaInput = new ComponentCompositionSchemaInput();
+ schemaInput.setManual(isManual(component.getVspId(), component.getVersion()));
+ schemaInput.setComponent(retrieved.getComponentCompositionData());
+
+ CompositionEntityValidationData validationData = compositionEntityDataManager
+ .validateEntity(component, SchemaTemplateContext.composition, schemaInput);
+ if (CollectionUtils.isEmpty(validationData.getErrors())) {
+ componentDao.update(component);
+ //componentDao.updateVspLatestModificationTime(component.getVspId(), component.getVersion());
+ }
+ mdcDataDebugMessage.debugExitMessage("VSP id, component id", component.getVspId(),
+ component.getId());
+
+ return validationData;
+ }
+
+ public CompositionEntityResponse<ComponentData> getComponent(String vspId, Version version,
+ String componentId, String user) {
+ mdcDataDebugMessage.debugEntryMessage("VSP id, component id", vspId, componentId);
+ ComponentEntity componentEntity = getComponent(vspId, version, componentId);
+ ComponentData component = componentEntity.getComponentCompositionData();
+
+ ComponentCompositionSchemaInput schemaInput = new ComponentCompositionSchemaInput();
+ schemaInput.setManual(isManual(vspId, version));
+ schemaInput.setComponent(component);
+
+ CompositionEntityResponse<ComponentData> response = new CompositionEntityResponse<>();
+ response.setId(componentId);
+ response.setData(component);
+ response.setSchema(getComponentCompositionSchema(schemaInput));
+ mdcDataDebugMessage.debugExitMessage("VSP id, component id", vspId, componentId);
+
+ return response;
+ }
+
+ @Override
+ public void deleteComponent(String vspId, Version version, String componentId, String user) {
+ mdcDataDebugMessage.debugEntryMessage("VSP id, component id", vspId, componentId);
+
+ if (!isManual(vspId, version)) {
+ MdcDataErrorMessage.createErrorMessageAndUpdateMdc(LoggerConstants.TARGET_ENTITY_DB,
+ LoggerTragetServiceName.DELETE_COMPONENT, ErrorLevel.ERROR.name(),
+ LoggerErrorCode.PERMISSION_ERROR.getErrorCode(), "Can't delete component");
+ throw new CoreException(
+ new CompositionEditNotAllowedErrorBuilder(vspId, version).build());
+ }
+
+ //componentDao.updateVspLatestModificationTime(vspId, version);
+
+ mdcDataDebugMessage.debugExitMessage("VSP id, component id", vspId, componentId);
+ }
+
+ @Override
+ public QuestionnaireResponse getQuestionnaire(String vspId, Version version,
+ String componentId, String user) {
+ mdcDataDebugMessage.debugEntryMessage("VSP id, component id", vspId, componentId);
+
+ QuestionnaireResponse questionnaireResponse = new QuestionnaireResponse();
+ ComponentEntity component = componentDao.getQuestionnaireData(vspId, version, componentId);
+ VersioningUtil
+ .validateEntityExistence(component, new ComponentEntity(vspId, version, componentId),
+ VspDetails.ENTITY_TYPE);
+
+ questionnaireResponse.setData(component.getQuestionnaireData());
+ List<String> nicNames = nicManager.listNics(vspId, version, componentId, user).stream()
+ .map(nic -> nic.getNicCompositionData().getName()).collect(Collectors.toList());
+ questionnaireResponse.setSchema(getComponentQuestionnaireSchema(
+ new ComponentQuestionnaireSchemaInput(nicNames, questionnaireResponse.getData() == null
+ ? null
+ : JsonUtil.json2Object(questionnaireResponse.getData(), Map.class))));
+
+ mdcDataDebugMessage.debugExitMessage("VSP id, component id", vspId, componentId);
+ return questionnaireResponse;
+ }
+
+ @Override
+ public void updateQuestionnaire(String vspId, Version version, String componentId,
+ String questionnaireData, String user) {
+ mdcDataDebugMessage.debugEntryMessage("VSP id, component id", vspId, componentId);
+ validateComponentExistence(vspId, version, componentId, user);
+
+ componentDao.updateQuestionnaireData(vspId, version, componentId, questionnaireData);
+
+ //componentDao.updateVspLatestModificationTime(vspId, version);
+ mdcDataDebugMessage.debugExitMessage("VSP id, component id", vspId, componentId);
+ }
+
+ @Override
+ public void validateComponentExistence(String vspId, Version version, String componentId,
+ String user) {
+ getComponent(vspId, version, componentId);
+ }
+
+ private ComponentEntity getComponent(String vspId, Version version, String componentId) {
+ ComponentEntity retrieved = componentDao.get(new ComponentEntity(vspId, version, componentId));
+ VersioningUtil
+ .validateEntityExistence(retrieved, new ComponentEntity(vspId, version, componentId),
+ VspDetails.ENTITY_TYPE);
+ return retrieved;
+ }
+
+ protected String getComponentCompositionSchema(ComponentCompositionSchemaInput schemaInput) {
+ return SchemaGenerator
+ .generate(SchemaTemplateContext.composition, CompositionEntityType.component, schemaInput);
+ }
+
+ protected String getComponentQuestionnaireSchema(SchemaTemplateInput schemaInput) {
+ return SchemaGenerator
+ .generate(SchemaTemplateContext.questionnaire, CompositionEntityType.component,
+ schemaInput);
+ }
+
+ private boolean isManual(String vspId, Version version) {
+ return false;
+ }
+}