Add collaboration feature
[sdc.git] / openecomp-be / api / openecomp-sdc-rest-webapp / vendor-software-products-rest / vendor-software-products-rest-services / src / main / java / org / openecomp / sdcrests / vsp / rest / services / OrchestrationTemplateCandidateImpl.java
index 172c894..aaee77d 100644 (file)
@@ -4,6 +4,10 @@ import org.apache.commons.beanutils.BeanUtils;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.cxf.jaxrs.ext.multipart.Attachment;
 import org.openecomp.core.validation.errors.ErrorMessagesFormatBuilder;
+import org.openecomp.sdc.activitylog.ActivityLogManager;
+import org.openecomp.sdc.activitylog.ActivityLogManagerFactory;
+import org.openecomp.sdc.activitylog.dao.type.ActivityLogEntity;
+import org.openecomp.sdc.activitylog.dao.type.ActivityType;
 import org.openecomp.sdc.common.errors.Messages;
 import org.openecomp.sdc.logging.api.Logger;
 import org.openecomp.sdc.logging.api.LoggerFactory;
@@ -12,27 +16,28 @@ import org.openecomp.sdc.logging.messages.AuditMessages;
 import org.openecomp.sdc.logging.types.LoggerServiceName;
 import org.openecomp.sdc.vendorsoftwareproduct.OrchestrationTemplateCandidateManager;
 import org.openecomp.sdc.vendorsoftwareproduct.OrchestrationTemplateCandidateManagerFactory;
-import org.openecomp.sdc.vendorsoftwareproduct.types.FileDataStructureDto;
 import org.openecomp.sdc.vendorsoftwareproduct.types.OrchestrationTemplateActionResponse;
 import org.openecomp.sdc.vendorsoftwareproduct.types.UploadFileResponse;
 import org.openecomp.sdc.vendorsoftwareproduct.types.ValidationResponse;
 import org.openecomp.sdc.vendorsoftwareproduct.types.candidateheat.FilesDataStructure;
-import org.openecomp.sdc.versioning.types.VersionableEntityAction;
+import org.openecomp.sdc.versioning.dao.types.Version;
+import org.openecomp.sdcrests.vendorsoftwareproducts.types.FileDataStructureDto;
 import org.openecomp.sdcrests.vendorsoftwareproducts.types.OrchestrationTemplateActionResponseDto;
 import org.openecomp.sdcrests.vendorsoftwareproducts.types.UploadFileResponseDto;
 import org.openecomp.sdcrests.vendorsoftwareproducts.types.ValidationResponseDto;
 import org.openecomp.sdcrests.vsp.rest.OrchestrationTemplateCandidate;
+import org.openecomp.sdcrests.vsp.rest.mapping.MapFilesDataStructureToDto;
 import org.openecomp.sdcrests.vsp.rest.mapping.MapUploadFileResponseToUploadFileResponseDto;
 import org.openecomp.sdcrests.vsp.rest.mapping.MapValidationResponseToDto;
 import org.springframework.context.annotation.Scope;
 import org.springframework.stereotype.Service;
 
+import javax.inject.Named;
+import javax.ws.rs.core.Response;
 import java.io.IOException;
 import java.io.InputStream;
 import java.lang.reflect.InvocationTargetException;
 import java.util.Optional;
-import javax.inject.Named;
-import javax.ws.rs.core.Response;
 
 import static org.openecomp.core.utilities.file.FileUtils.getFileExtension;
 import static org.openecomp.core.utilities.file.FileUtils.getNetworkPackageName;
@@ -44,32 +49,31 @@ public class OrchestrationTemplateCandidateImpl implements OrchestrationTemplate
 
   private OrchestrationTemplateCandidateManager candidateManager =
       OrchestrationTemplateCandidateManagerFactory.getInstance().createInterface();
+  private ActivityLogManager activityLogManager =
+      ActivityLogManagerFactory.getInstance().createInterface();
+
   private static final Logger logger =
-          LoggerFactory.getLogger(OrchestrationTemplateCandidateImpl.class);
+      LoggerFactory.getLogger(OrchestrationTemplateCandidateImpl.class);
 
   @Override
-  public Response upload(String vspId, String versionId, Attachment fileToUpload,
-                         String user) {
+  public Response upload(String vspId, String versionId, Attachment fileToUpload, String user) {
     MdcUtil.initMdc(LoggerServiceName.Upload_File.toString());
     logger.audit(AuditMessages.AUDIT_MSG + AuditMessages.UPLOAD_HEAT + vspId);
+
     String filename = fileToUpload.getContentDisposition().getParameter("filename");
     UploadFileResponse uploadFileResponse = candidateManager
-        .upload(vspId, resolveVspVersion(vspId, null, user, VersionableEntityAction
-            .Write), fileToUpload.getObject(InputStream.class), user, getFileExtension(filename),
-            getNetworkPackageName(filename));
+        .upload(vspId, new Version(versionId), fileToUpload.getObject(InputStream.class),
+            getFileExtension(filename), getNetworkPackageName(filename));
+
     UploadFileResponseDto uploadFileResponseDto = new MapUploadFileResponseToUploadFileResponseDto()
         .applyMapping(uploadFileResponse, UploadFileResponseDto.class);
 
     return Response.ok(uploadFileResponseDto).build();
   }
 
-
-
   @Override
   public Response get(String vspId, String versionId, String user) throws IOException {
-
-    Optional<Pair<String, byte[]>> zipFile = candidateManager
-        .get(vspId, resolveVspVersion(vspId, null, user, VersionableEntityAction.Read), user);
+    Optional<Pair<String, byte[]>> zipFile = candidateManager.get(vspId, new Version(versionId));
 
     if (!zipFile.isPresent()) {
       return Response.status(Response.Status.NOT_FOUND).build();
@@ -84,10 +88,12 @@ public class OrchestrationTemplateCandidateImpl implements OrchestrationTemplate
   public Response process(String vspId, String versionId, String user)
       throws InvocationTargetException, IllegalAccessException {
 
-    OrchestrationTemplateActionResponse response =
-        candidateManager
-            .process(vspId, resolveVspVersion(vspId, null, user, VersionableEntityAction.Write),
-                user);
+    Version version = new Version(versionId);
+    OrchestrationTemplateActionResponse response = candidateManager.process(vspId, version);
+
+    activityLogManager.logActivity(new ActivityLogEntity(vspId, version,
+        ActivityType.Upload_Network_Package, user, true, "", ""));
+
     OrchestrationTemplateActionResponseDto responseDto =
         new OrchestrationTemplateActionResponseDto();
     BeanUtils.copyProperties(responseDto, response);
@@ -95,8 +101,6 @@ public class OrchestrationTemplateCandidateImpl implements OrchestrationTemplate
     return Response.ok(responseDto).build();
   }
 
-
-
   @Override
   public Response updateFilesDataStructure(
       String vspId, String versionId, FileDataStructureDto fileDataStructureDto, String user)
@@ -112,9 +116,7 @@ public class OrchestrationTemplateCandidateImpl implements OrchestrationTemplate
       throw new Exception(errorWithParameters, exception);
     }
     ValidationResponse response = candidateManager
-        .updateFilesDataStructure(vspId,
-            resolveVspVersion(vspId, null, user, VersionableEntityAction
-                .Write), user, fileDataStructure);
+        .updateFilesDataStructure(vspId, new Version(versionId), fileDataStructure);
 
     if (!response.isValid()) {
       return Response.status(Response.Status.EXPECTATION_FAILED).entity(
@@ -127,20 +129,13 @@ public class OrchestrationTemplateCandidateImpl implements OrchestrationTemplate
   @Override
   public Response getFilesDataStructure(String vspId, String versionId, String user)
       throws Exception {
-    Optional<FilesDataStructure> filesDataStructure = candidateManager
-        .getFilesDataStructure(vspId, resolveVspVersion(vspId, null, user, VersionableEntityAction
-            .Read), user);
-    FileDataStructureDto fileDataStructureDto = new FileDataStructureDto();
-    if (filesDataStructure.isPresent()) {
-      try {
-        BeanUtils.copyProperties(fileDataStructureDto, filesDataStructure.get());
-      } catch (IllegalAccessException | InvocationTargetException exception) {
-        String errorWithParameters = ErrorMessagesFormatBuilder
-            .getErrorWithParameters(Messages.MAPPING_OBJECTS_FAILURE.getErrorMessage(),
-                filesDataStructure.toString(), fileDataStructureDto.toString());
-        throw new Exception(errorWithParameters, exception);
-      }
-    }
+    Optional<FilesDataStructure> filesDataStructure =
+        candidateManager.getFilesDataStructure(vspId, new Version(versionId));
+
+    FileDataStructureDto fileDataStructureDto =
+        filesDataStructure.map(dataStructure -> new MapFilesDataStructureToDto()
+            .applyMapping(dataStructure, FileDataStructureDto.class))
+            .orElse(new FileDataStructureDto());
     return Response.ok(fileDataStructureDto).build();
   }
 }