Add collaboration feature
[sdc.git] / openecomp-be / lib / openecomp-healing-lib / openecomp-sdc-healing-impl / src / main / java / org / openecomp / sdc / healing / healers / FileDataStructureHealer.java
index 4a0a5f9..6e49c9a 100644 (file)
@@ -24,33 +24,23 @@ import org.openecomp.core.utilities.file.FileContentHandler;
 import org.openecomp.core.utilities.json.JsonUtil;
 import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum;
 import org.openecomp.sdc.common.utils.CommonUtil;
-import org.openecomp.sdc.common.utils.SdcCommon;
-import org.openecomp.sdc.datatypes.error.ErrorMessage;
 import org.openecomp.sdc.healing.interfaces.Healer;
 import org.openecomp.sdc.logging.api.Logger;
 import org.openecomp.sdc.logging.api.LoggerFactory;
 import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage;
-import org.openecomp.sdc.vendorsoftwareproduct.dao.OrchestrationTemplateDao;
-import org.openecomp.sdc.vendorsoftwareproduct.dao.OrchestrationTemplateDaoFactory;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.OrchestrationTemplateCandidateDao;
+import org.openecomp.sdc.vendorsoftwareproduct.dao.OrchestrationTemplateCandidateDaoFactory;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.OrchestrationTemplateCandidateData;
-import org.openecomp.sdc.vendorsoftwareproduct.dao.type.UploadDataEntity;
 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
 import org.openecomp.sdc.vendorsoftwareproduct.factory.CandidateServiceFactory;
-import org.openecomp.sdc.vendorsoftwareproduct.services.filedatastructuremodule.CandidateService;
 import org.openecomp.sdc.vendorsoftwareproduct.services.utils.CandidateEntityBuilder;
 import org.openecomp.sdc.vendorsoftwareproduct.types.candidateheat.FilesDataStructure;
 import org.openecomp.sdc.versioning.dao.types.Version;
 
 import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
 import java.util.Optional;
 
 public class FileDataStructureHealer implements Healer {
-  private static final OrchestrationTemplateDao orchestrationTemplateDataDao =
-      OrchestrationTemplateDaoFactory.getInstance().createInterface();
-  private static CandidateService candidateService =
-      CandidateServiceFactory.getInstance().createInterface();
   private static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
 
   private final Logger log = (Logger) LoggerFactory.getLogger(this.getClass().getName());
@@ -59,64 +49,55 @@ public class FileDataStructureHealer implements Healer {
   }
 
   @Override
-  public Optional<FilesDataStructure> heal(Map<String, Object> healingParams) throws Exception {
-
-
+  public Optional<FilesDataStructure> heal(String vspId,
+                                           Version version) throws Exception {
     mdcDataDebugMessage.debugEntryMessage(null);
 
-    Optional<FilesDataStructure> healingResult = Optional.empty();
-    String vspId = (String) healingParams.get(SdcCommon.VSP_ID);
-    Version version = (Version) healingParams.get(SdcCommon.VERSION);
-    String user = (String) healingParams.get(SdcCommon.USER);
+    OrchestrationTemplateCandidateDao candidateDao =
+        OrchestrationTemplateCandidateDaoFactory.getInstance().createInterface();
+
+    OrchestrationTemplateCandidateData candidateData = candidateDao.get(vspId, version);
 
-    UploadDataEntity uploadData =
-        orchestrationTemplateDataDao.getOrchestrationTemplate(vspId,version);
-    if (uploadData == null || uploadData.getContentData() == null) {
-      FilesDataStructure emptyFilesDataStructure = new FilesDataStructure();
-      return Optional.of(emptyFilesDataStructure);
+    if (candidateData == null || candidateData.getContentData() == null ||
+        candidateData.getFilesDataStructure() != null) {
+      return Optional.of(new FilesDataStructure());
     }
 
-    Optional<FilesDataStructure> candidateFileDataStructure =
-        candidateService.getOrchestrationTemplateCandidateFileDataStructure(vspId, version);
+    Optional<FilesDataStructure> filesDataStructure =
+        healFilesDataStructure(vspId, version, candidateData);
 
-    if (!candidateFileDataStructure.isPresent()) {
-      healingResult = healFilesDataStructure(vspId, version, user, uploadData);
-    }
+    filesDataStructure
+        .ifPresent(structure -> candidateDao.updateStructure(vspId, version, structure));
 
     mdcDataDebugMessage.debugExitMessage(null);
-    return healingResult;
+    return filesDataStructure;
   }
 
-  private Optional<FilesDataStructure> healFilesDataStructure(String vspId, Version version,
-                                                              String user,
-                                                              UploadDataEntity uploadData)
+  private Optional<FilesDataStructure> healFilesDataStructure(
+      String vspId, Version version, OrchestrationTemplateCandidateData candidateData)
       throws Exception {
-
-
     mdcDataDebugMessage.debugEntryMessage(null);
 
     Optional<FilesDataStructure> healingResult;
-    byte[] byteContentData = uploadData.getContentData().array();
+    byte[] byteContentData = candidateData.getContentData().array();
     FileContentHandler fileContentHandler;
-    try{
-      fileContentHandler = CommonUtil.validateAndUploadFileContent(OnboardingTypesEnum.ZIP, byteContentData);
-      Map<String, List<ErrorMessage>> errors = new HashMap<>();
-      OrchestrationTemplateCandidateData candidateDataEntity =
-        new CandidateEntityBuilder(candidateService)
-            .buildCandidateEntityFromZip(new VspDetails(vspId, version), byteContentData,
-                fileContentHandler, errors, user);
-
-      healingResult = getFileDataStructureFromJson(candidateDataEntity.getFilesDataStructure());
-    }catch (Exception e){
+    try {
+      fileContentHandler =
+          CommonUtil.validateAndUploadFileContent(OnboardingTypesEnum.ZIP, byteContentData);
+
+      String filesDataStructure =
+          new CandidateEntityBuilder(CandidateServiceFactory.getInstance().createInterface())
+              .buildCandidateEntityFromZip(new VspDetails(vspId, version), byteContentData,
+                  fileContentHandler, new HashMap<>()).getFilesDataStructure();
+
+      healingResult =
+          Optional.of(JsonUtil.json2Object(filesDataStructure, FilesDataStructure.class));
+    } catch (Exception e) {
       log.debug("", e);
-      return Optional.empty();
+      healingResult = Optional.empty();
     }
 
     mdcDataDebugMessage.debugExitMessage(null);
     return healingResult;
   }
-
-  private Optional<FilesDataStructure> getFileDataStructureFromJson(String fileDataStructureJson) {
-    return Optional.of(JsonUtil.json2Object(fileDataStructureJson, FilesDataStructure.class));
-  }
 }