1 package org.openecomp.sdc.vendorsoftwareproduct.impl.orchestration;
3 import org.apache.commons.collections4.MapUtils;
4 import org.openecomp.core.utilities.file.FileContentHandler;
5 import org.openecomp.core.utilities.file.FileUtils;
6 import org.openecomp.core.utilities.orchestration.OnboardingTypesEnum;
7 import org.openecomp.sdc.common.errors.Messages;
8 import org.openecomp.sdc.common.utils.SdcCommon;
9 import org.openecomp.sdc.datatypes.error.ErrorLevel;
10 import org.openecomp.sdc.datatypes.error.ErrorMessage;
11 import org.openecomp.sdc.logging.api.Logger;
12 import org.openecomp.sdc.logging.api.LoggerFactory;
13 import org.openecomp.sdc.logging.context.impl.MdcDataDebugMessage;
14 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails;
15 import org.openecomp.sdc.vendorsoftwareproduct.services.filedatastructuremodule.CandidateService;
16 import org.openecomp.sdc.vendorsoftwareproduct.types.UploadFileResponse;
17 import org.openecomp.sdc.versioning.dao.types.Version;
19 import java.io.InputStream;
20 import java.util.Optional;
21 import static org.openecomp.core.validation.errors.ErrorMessagesFormatBuilder.getErrorWithParameters;
22 public abstract class BaseOrchestrationTemplateHandler implements OrchestrationTemplateFileHandler {
23 protected static final Logger logger =
24 LoggerFactory.getLogger(BaseOrchestrationTemplateHandler.class);
25 protected static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
28 public UploadFileResponse upload(String vspId, Version version, InputStream fileToUpload, String user,
29 CandidateService candidateService, VspDetails vspDetails) {
30 UploadFileResponse uploadFileResponse = new UploadFileResponse();
31 uploadFileResponse.setOnboardingType(getHandlerType());
32 if (isNotEmptyFileToUpload(fileToUpload, uploadFileResponse, candidateService)) {
33 return uploadFileResponse;
36 byte[] uploadedFileData = FileUtils.toByteArray(fileToUpload);
37 if (isInvalidRawZipData(uploadFileResponse, uploadedFileData, candidateService)) {
38 return uploadFileResponse;
41 Optional<FileContentHandler> optionalContentMap =
42 getFileContentMap(uploadFileResponse, uploadedFileData);
43 if (!optionalContentMap.isPresent()) {
44 logger.error(getErrorWithParameters(Messages.FILE_CONTENT_MAP.getErrorMessage(), getHandlerType().toString()));
47 SdcCommon.UPLOAD_FILE,
48 new ErrorMessage(ErrorLevel.ERROR,
49 getErrorWithParameters(Messages.FILE_CONTENT_MAP.getErrorMessage(), getHandlerType().toString())));
51 mdcDataDebugMessage.debugExitMessage("VSP id", vspId);
52 return uploadFileResponse;
55 if (!MapUtils.isEmpty(uploadFileResponse.getErrors())) {
57 mdcDataDebugMessage.debugExitMessage("VSP id", vspId);
58 return uploadFileResponse;
60 if (updateCandidateData(vspId, user, candidateService, vspDetails, uploadFileResponse,
61 uploadedFileData, optionalContentMap))
62 return uploadFileResponse;
64 mdcDataDebugMessage.debugExitMessage("VSP id", vspId);
65 return uploadFileResponse;
69 protected abstract boolean updateCandidateData(String vspId, String user, CandidateService candidateService,
70 VspDetails vspDetails, UploadFileResponse uploadFileResponse,
71 byte[] uploadedFileData,
72 Optional<FileContentHandler> optionalContentMap);
75 private boolean isNotEmptyFileToUpload(InputStream fileToUpload,
76 UploadFileResponse uploadFileResponse, CandidateService candidateService) {
77 Optional<ErrorMessage> errorMessage =
78 candidateService.validateNonEmptyFileToUpload(fileToUpload);
79 if (errorMessage.isPresent()) {
80 uploadFileResponse.addStructureError(SdcCommon.UPLOAD_FILE, errorMessage.get());
86 protected boolean isInvalidRawZipData(UploadFileResponse uploadFileResponse,
87 byte[] uploadedFileData, CandidateService candidateService) {
88 Optional<ErrorMessage> errorMessage;
89 errorMessage = candidateService.validateRawZipData(uploadedFileData);
90 if (errorMessage.isPresent()) {
91 uploadFileResponse.addStructureError(SdcCommon.UPLOAD_FILE, errorMessage.get());
97 public abstract Optional<FileContentHandler> getFileContentMap(UploadFileResponse uploadFileResponse,
98 byte[] uploadedFileData);
99 protected abstract OnboardingTypesEnum getHandlerType();