Add collaboration feature
[sdc.git] / openecomp-be / lib / openecomp-sdc-vendor-software-product-lib / openecomp-sdc-vendor-software-product-core / src / main / java / org / openecomp / sdc / vendorsoftwareproduct / services / impl / composition / CompositionEntityDataManagerImpl.java
index 39534cf..ab5ee6c 100644 (file)
@@ -37,7 +37,6 @@ import org.openecomp.sdc.vendorsoftwareproduct.dao.DeploymentFlavorDao;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.ImageDao;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.NetworkDao;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.NicDao;
-import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDao;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentEntity;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.CompositionEntity;
@@ -78,14 +77,14 @@ import java.util.Set;
 public class CompositionEntityDataManagerImpl implements CompositionEntityDataManager {
 
   private static final String COMPOSITION_ENTITY_DATA_MANAGER_ERR =
-          "COMPOSITION_ENTITY_DATA_MANAGER_ERR";
+      "COMPOSITION_ENTITY_DATA_MANAGER_ERR";
   private static final String COMPOSITION_ENTITY_DATA_MANAGER_ERR_MSG =
-          "Invalid input: %s may not be null";
+      "Invalid input: %s may not be null";
   private static final String MISSING_OR_INVALID_QUESTIONNAIRE_MSG =
       "Data is missing/invalid for this %s. Please refill and resubmit.";
 
   private static final Logger logger =
-          LoggerFactory.getLogger(CompositionEntityDataManagerImpl.class);
+      LoggerFactory.getLogger(CompositionEntityDataManagerImpl.class);
   private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
 
   private Map<CompositionEntityId, CompositionEntityData> entities = new HashMap<>();
@@ -99,14 +98,12 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa
   private ImageDao imageDao;
   private ComputeDao computeDao;
   private DeploymentFlavorDao deploymentFlavorDao;
-  private VendorSoftwareProductDao vendorSoftwareProductDao;
 
   public CompositionEntityDataManagerImpl(VendorSoftwareProductInfoDao vspInfoDao,
                                           ComponentDao componentDao,
                                           NicDao nicDao, NetworkDao networkDao,
                                           ImageDao imageDao, ComputeDao computeDao,
-                                          DeploymentFlavorDao deploymentFlavorDao,
-                                          VendorSoftwareProductDao vendorSoftwareProductDao) {
+                                          DeploymentFlavorDao deploymentFlavorDao) {
     this.vspInfoDao = vspInfoDao;
     this.componentDao = componentDao;
     this.nicDao = nicDao;
@@ -114,7 +111,6 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa
     this.imageDao = imageDao;
     this.computeDao = computeDao;
     this.deploymentFlavorDao = deploymentFlavorDao;
-    this.vendorSoftwareProductDao = vendorSoftwareProductDao;
   }
 
   /**
@@ -133,27 +129,27 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa
 
     if (entity == null) {
       throw new CoreException(
-              new ErrorCode.ErrorCodeBuilder().withCategory(ErrorCategory.APPLICATION)
-                      .withId(COMPOSITION_ENTITY_DATA_MANAGER_ERR).withMessage(
-                      String.format(COMPOSITION_ENTITY_DATA_MANAGER_ERR_MSG, "composition entity"))
-                      .build());
+          new ErrorCode.ErrorCodeBuilder().withCategory(ErrorCategory.APPLICATION)
+              .withId(COMPOSITION_ENTITY_DATA_MANAGER_ERR).withMessage(
+              String.format(COMPOSITION_ENTITY_DATA_MANAGER_ERR_MSG, "composition entity"))
+              .build());
     }
     if (schemaTemplateContext == null) {
       throw new CoreException(
-              new ErrorCode.ErrorCodeBuilder().withCategory(ErrorCategory.APPLICATION)
-                      .withId(COMPOSITION_ENTITY_DATA_MANAGER_ERR).withMessage(
-                      String.format(COMPOSITION_ENTITY_DATA_MANAGER_ERR_MSG, "schema template context"))
-                      .build());
+          new ErrorCode.ErrorCodeBuilder().withCategory(ErrorCategory.APPLICATION)
+              .withId(COMPOSITION_ENTITY_DATA_MANAGER_ERR).withMessage(
+              String.format(COMPOSITION_ENTITY_DATA_MANAGER_ERR_MSG, "schema template context"))
+              .build());
     }
 
     CompositionEntityValidationData validationData =
-            new CompositionEntityValidationData(entity.getType(), entity.getId());
+        new CompositionEntityValidationData(entity.getType(), entity.getId());
     String json =
-            schemaTemplateContext == SchemaTemplateContext.composition ? entity.getCompositionData()
-                    : entity.getQuestionnaireData();
+        schemaTemplateContext == SchemaTemplateContext.composition ? entity.getCompositionData()
+            : entity.getQuestionnaireData();
     validationData.setErrors(JsonUtil.validate(
-            json == null ? JsonUtil.object2Json(new Object()) : json,
-            generateSchema(schemaTemplateContext, entity.getType(), schemaTemplateInput)));
+        json == null ? JsonUtil.object2Json(new Object()) : json,
+        generateSchema(schemaTemplateContext, entity.getType(), schemaTemplateInput)));
 
     mdcDataDebugMessage.debugExitMessage(null);
     return validationData;
@@ -169,13 +165,13 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa
   public void addEntity(CompositionEntity entity, SchemaTemplateInput schemaTemplateInput) {
     if (entity == null) {
       throw new CoreException(
-              new ErrorCode.ErrorCodeBuilder().withCategory(ErrorCategory.APPLICATION)
-                      .withId(COMPOSITION_ENTITY_DATA_MANAGER_ERR).withMessage(
-                      String.format(COMPOSITION_ENTITY_DATA_MANAGER_ERR_MSG, "composition entity"))
-                      .build());
+          new ErrorCode.ErrorCodeBuilder().withCategory(ErrorCategory.APPLICATION)
+              .withId(COMPOSITION_ENTITY_DATA_MANAGER_ERR).withMessage(
+              String.format(COMPOSITION_ENTITY_DATA_MANAGER_ERR_MSG, "composition entity"))
+              .build());
     }
     entities.put(entity.getCompositionEntityId(),
-            new CompositionEntityData(entity, schemaTemplateInput));
+        new CompositionEntityData(entity, schemaTemplateInput));
   }
 
   /**
@@ -205,10 +201,10 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa
   @Override
   public void buildTrees() {
     Map<CompositionEntityId, CompositionEntityValidationData> entitiesValidationData =
-            new HashMap<>();
+        new HashMap<>();
     entities.entrySet().forEach(
-            entry -> addValidationDataEntity(entitiesValidationData, entry.getKey(),
-                    entry.getValue().entity));
+        entry -> addValidationDataEntity(entitiesValidationData, entry.getKey(),
+            entry.getValue().entity));
   }
 
   public Collection<CompositionEntityValidationData> getTrees() {
@@ -259,14 +255,14 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa
     }
 
     Collection<CompositionEntityValidationData> subEntitiesValidationData =
-            entity.getSubEntitiesValidationData();
+        entity.getSubEntitiesValidationData();
     return !CollectionUtils.isEmpty(subEntitiesValidationData) &&
-            checkForErrorsInChildren(subEntitiesValidationData);
+        checkForErrorsInChildren(subEntitiesValidationData);
 
   }
 
   private boolean checkForErrorsInChildren(
-          Collection<CompositionEntityValidationData> subEntitiesValidationData) {
+      Collection<CompositionEntityValidationData> subEntitiesValidationData) {
     boolean result = false;
     for (CompositionEntityValidationData subEntity : subEntitiesValidationData) {
       if (CollectionUtils.isNotEmpty(subEntity.getErrors())) {
@@ -360,10 +356,10 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa
 
     //component.setId(CommonMethods.nextUuId()); will be set by the dao
     component.setQuestionnaireData(
-            new JsonSchemaDataGenerator(
-                    generateSchema(SchemaTemplateContext.questionnaire, CompositionEntityType.component,
-                            null))
-                    .generateData());
+        new JsonSchemaDataGenerator(
+            generateSchema(SchemaTemplateContext.questionnaire, CompositionEntityType.component,
+                null))
+            .generateData());
 
     componentDao.create(component);
 
@@ -377,9 +373,9 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa
 
     //nic.setId(CommonMethods.nextUuId()); will be set by the dao
     nic.setQuestionnaireData(
-            new JsonSchemaDataGenerator(
-                    generateSchema(SchemaTemplateContext.questionnaire, CompositionEntityType.nic, null))
-                    .generateData());
+        new JsonSchemaDataGenerator(
+            generateSchema(SchemaTemplateContext.questionnaire, CompositionEntityType.nic, null))
+            .generateData());
 
     nicDao.create(nic);
 
@@ -412,28 +408,26 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa
     return treeAsList;
   }
 
-  public void getEntityListWithErrors(CompositionEntityValidationData entity,
+  private void getEntityListWithErrors(CompositionEntityValidationData entity,
                                       Set<CompositionEntityValidationData> compositionSet) {
-    Collection<CompositionEntityValidationData> childNodes =
-            entity.getSubEntitiesValidationData();
+    if(CollectionUtils.isNotEmpty(entity.getErrors())){
+      addNodeWithErrors(entity, compositionSet);
+    }
 
-    if (CollectionUtils.isEmpty(childNodes)) {
+    if (CollectionUtils.isEmpty(entity.getSubEntitiesValidationData())) {
       return;
     }
 
-    for (CompositionEntityValidationData child : childNodes) {
-      if (CollectionUtils.isNotEmpty(child.getErrors())) {
-        addNodeWithErrors(child, compositionSet);
-      }
+    for (CompositionEntityValidationData child : entity.getSubEntitiesValidationData()) {
       getEntityListWithErrors(child, compositionSet);
     }
   }
 
 
-  public void addNodeWithErrors(CompositionEntityValidationData node,
+  private void addNodeWithErrors(CompositionEntityValidationData node,
                                 Set<CompositionEntityValidationData> entitiesWithErrors) {
     CompositionEntityValidationData compositionNodeToAdd = new CompositionEntityValidationData(node
-            .getEntityType(), node.getEntityId());
+        .getEntityType(), node.getEntityId());
     compositionNodeToAdd.setErrors(node.getErrors());
     compositionNodeToAdd.setSubEntitiesValidationData(null);
 
@@ -446,9 +440,9 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa
 
 
   private CompositionEntityData getCompositionEntityDataById(CompositionEntityValidationData
-                                                                     entity) {
+                                                                 entity) {
     for (Map.Entry<CompositionEntityId, CompositionEntityData> entityEntry : entities
-            .entrySet()) {
+        .entrySet()) {
       if (entityEntry.getKey().getId().equals(entity.getEntityId())) {
         return entityEntry.getValue();
       }
@@ -458,11 +452,11 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa
 
 
   private void updateValidationCompositionEntityName(Set<CompositionEntityValidationData>
-                                                             compositionSet) {
+                                                         compositionSet) {
     for (CompositionEntityValidationData entity : compositionSet) {
       String compositionData = getCompositionDataAsString(entity);
       if (entity.getEntityType().equals(CompositionEntityType.vsp) ||
-              Objects.nonNull(compositionData)) {
+          Objects.nonNull(compositionData)) {
         entity.setEntityName(getEntityNameByEntityType(compositionData, entity));
       }
     }
@@ -497,8 +491,8 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa
         CompositionEntityData vspEntity = getCompositionEntityDataById(entity);
         VspQuestionnaireEntity vspQuestionnaireEntity = (VspQuestionnaireEntity) vspEntity.entity;
         VspDetails vspDetails =
-                vspInfoDao.get(new VspDetails(vspQuestionnaireEntity.getId(),
-                        vspQuestionnaireEntity.getVersion()));
+            vspInfoDao.get(new VspDetails(vspQuestionnaireEntity.getId(),
+                vspQuestionnaireEntity.getVersion()));
         return vspDetails.getName();
     }
 
@@ -514,7 +508,7 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa
 
     if (hasChildren(node)) {
       Collection<CompositionEntityValidationData> subNodes =
-              new ArrayList<>(node.getSubEntitiesValidationData());
+          new ArrayList<>(node.getSubEntitiesValidationData());
       subNodes.forEach(subNode -> removeNodesWithoutErrors(subNode, node));
       node.setSubEntitiesValidationData(subNodes);
 
@@ -543,14 +537,14 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa
 
 
   private void addValidationDataEntity(
-          Map<CompositionEntityId, CompositionEntityValidationData> entitiesValidationData,
-          CompositionEntityId entityId, CompositionEntity entity) {
+      Map<CompositionEntityId, CompositionEntityValidationData> entitiesValidationData,
+      CompositionEntityId entityId, CompositionEntity entity) {
     if (entitiesValidationData.containsKey(entityId)) {
       return;
     }
 
     CompositionEntityValidationData validationData =
-            new CompositionEntityValidationData(entity.getType(), entity.getId());
+        new CompositionEntityValidationData(entity.getType(), entity.getId());
     entitiesValidationData.put(entityId, validationData);
 
     CompositionEntityId parentEntityId = entityId.getParentId();
@@ -578,16 +572,16 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa
 
     if (node.getSubEntitiesValidationData() != null) {
       node.getSubEntitiesValidationData()
-              .forEach(subNode -> addErrorsToTree(subNode, nodeId, errors));
+          .forEach(subNode -> addErrorsToTree(subNode, nodeId, errors));
     }
   }
 
   private Collection<String> validateQuestionnaire(CompositionEntityData compositionEntityData) {
     logger.debug(String.format("validateQuestionnaire start:  " +
-                    "[entity.type]=%s, [entity.id]=%s, [entity.questionnaireString]=%s",
-            compositionEntityData.entity.getType().name(),
-            compositionEntityData.entity.getCompositionEntityId().toString(),
-            compositionEntityData.entity.getQuestionnaireData()));
+            "[entity.type]=%s, [entity.id]=%s, [entity.questionnaireString]=%s",
+        compositionEntityData.entity.getType().name(),
+        compositionEntityData.entity.getCompositionEntityId().toString(),
+        compositionEntityData.entity.getQuestionnaireData()));
 
     if (Objects.isNull(compositionEntityData.entity.getQuestionnaireData()) ||
         !JsonUtil.isValidJson(compositionEntityData.entity.getQuestionnaireData())) {
@@ -596,20 +590,20 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa
     }
 
     return JsonUtil.validate(
-            compositionEntityData.entity.getQuestionnaireData() == null
-                    ? JsonUtil.object2Json(new Object())
-                    : compositionEntityData.entity.getQuestionnaireData(),
-            getSchema(compositionEntityData.entity.getType(), SchemaTemplateContext.questionnaire,
-                    compositionEntityData.schemaTemplateInput));
+        compositionEntityData.entity.getQuestionnaireData() == null
+            ? JsonUtil.object2Json(new Object())
+            : compositionEntityData.entity.getQuestionnaireData(),
+        getSchema(compositionEntityData.entity.getType(), SchemaTemplateContext.questionnaire,
+            compositionEntityData.schemaTemplateInput));
   }
 
   private String getSchema(CompositionEntityType compositionEntityType,
                            SchemaTemplateContext schemaTemplateContext,
                            SchemaTemplateInput schemaTemplateInput) {
     return schemaTemplateInput == null
-            ? nonDynamicSchemas.computeIfAbsent(compositionEntityType,
-            k -> generateSchema(schemaTemplateContext, compositionEntityType, null))
-            : generateSchema(schemaTemplateContext, compositionEntityType, schemaTemplateInput);
+        ? nonDynamicSchemas.computeIfAbsent(compositionEntityType,
+        k -> generateSchema(schemaTemplateContext, compositionEntityType, null))
+        : generateSchema(schemaTemplateContext, compositionEntityType, schemaTemplateInput);
   }
 
   private static class CompositionEntityData {
@@ -630,7 +624,7 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa
                                   CompositionEntityType compositionEntityType,
                                   SchemaTemplateInput schemaTemplateInput) {
     return SchemaGenerator
-            .generate(schemaTemplateContext, compositionEntityType, schemaTemplateInput);
+        .generate(schemaTemplateContext, compositionEntityType, schemaTemplateInput);
   }
 
   @Override
@@ -649,46 +643,33 @@ public class CompositionEntityDataManagerImpl implements CompositionEntityDataMa
     image.setId(CommonMethods.nextUuId());
 
     image.setQuestionnaireData(
-            new JsonSchemaDataGenerator(SchemaGenerator
-                    .generate(SchemaTemplateContext.questionnaire, CompositionEntityType.image, null))
-                    .generateData());
+        new JsonSchemaDataGenerator(SchemaGenerator
+            .generate(SchemaTemplateContext.questionnaire, CompositionEntityType.image, null))
+            .generateData());
 
     imageDao.create(image);
     mdcDataDebugMessage.debugExitMessage(null, null);
     return image;
   }
 
-  @Override
-  public ComputeEntity createCompute(ComputeEntity compute) {
-    mdcDataDebugMessage.debugEntryMessage("VSP id, component id", compute.getVspId(),
-            compute.getComponentId());
-
-    compute.setId(CommonMethods.nextUuId());
-    compute.setQuestionnaireData(
-            new JsonSchemaDataGenerator(SchemaGenerator
-                    .generate(SchemaTemplateContext.questionnaire, CompositionEntityType.compute,
-                            null)).generateData());
-
-    computeDao.create(compute);
-
-    mdcDataDebugMessage.debugExitMessage("VSP id, component id", compute.getVspId(),
-            compute.getComponentId());
-    return compute;
-  }
-
   public void saveComputesFlavorByComponent(String vspId, Version version, Component component,
                                             String componentId) {
     if (CollectionUtils.isNotEmpty(component.getCompute())) {
       for (ComputeData flavor : component.getCompute()) {
         ComputeEntity computeEntity = new ComputeEntity(vspId, version, componentId, null);
         computeEntity.setComputeCompositionData(flavor);
-        createCompute(computeEntity);
+        computeEntity.setQuestionnaireData(
+            new JsonSchemaDataGenerator(SchemaGenerator
+                .generate(SchemaTemplateContext.questionnaire, CompositionEntityType.compute,
+                    null)).generateData());
+
+        computeDao.create(computeEntity);
       }
     }
   }
 
   public void saveImagesByComponent(String vspId, Version version, Component component, String
-          componentId) {
+      componentId) {
     if (CollectionUtils.isNotEmpty(component.getImages())) {
       for (Image img : component.getImages()) {
         ImageEntity imageEntity = new ImageEntity(vspId, version, componentId, null);