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;
18 import java.io.InputStream;
19 import java.util.Optional;
21 import static org.openecomp.core.validation.errors.ErrorMessagesFormatBuilder.getErrorWithParameters;
23 public abstract class BaseOrchestrationTemplateHandler implements OrchestrationTemplateFileHandler {
24 protected static final Logger logger =
25 LoggerFactory.getLogger(BaseOrchestrationTemplateHandler.class);
26 protected static MdcDataDebugMessage mdcDataDebugMessage = new MdcDataDebugMessage();
29 public UploadFileResponse upload(VspDetails vspDetails, InputStream fileToUpload,
30 String fileSuffix, String networkPackageName,
31 CandidateService candidateService) {
32 UploadFileResponse uploadFileResponse = new UploadFileResponse();
33 uploadFileResponse.setOnboardingType(getHandlerType());
34 if (isNotEmptyFileToUpload(fileToUpload, uploadFileResponse, candidateService)) {
35 return uploadFileResponse;
38 byte[] uploadedFileData = FileUtils.toByteArray(fileToUpload);
39 if (isInvalidRawZipData(uploadFileResponse, uploadedFileData, candidateService)) {
40 return uploadFileResponse;
43 Optional<FileContentHandler> optionalContentMap =
44 getFileContentMap(uploadFileResponse, uploadedFileData);
45 if (!optionalContentMap.isPresent()) {
46 logger.error(getErrorWithParameters(Messages.FILE_CONTENT_MAP.getErrorMessage(),
47 getHandlerType().toString()));
48 uploadFileResponse.addStructureError(SdcCommon.UPLOAD_FILE, new ErrorMessage(ErrorLevel.ERROR,
49 getErrorWithParameters(Messages.FILE_CONTENT_MAP.getErrorMessage(),
50 getHandlerType().toString())));
52 mdcDataDebugMessage.debugExitMessage("VSP id", vspDetails.getId());
53 return uploadFileResponse;
56 if (!MapUtils.isEmpty(uploadFileResponse.getErrors())) {
57 mdcDataDebugMessage.debugExitMessage("VSP id", vspDetails.getId());
58 return uploadFileResponse;
60 if (updateCandidateData(vspDetails, uploadedFileData, optionalContentMap.get(), fileSuffix,
61 networkPackageName, candidateService, uploadFileResponse)) {
62 return uploadFileResponse;
65 mdcDataDebugMessage.debugExitMessage("VSP id", vspDetails.getId());
66 return uploadFileResponse;
70 protected abstract boolean updateCandidateData(VspDetails vspDetails,
71 byte[] uploadedFileData,
72 FileContentHandler contentMap,
74 String networkPackageName,
75 CandidateService candidateService,
76 UploadFileResponse uploadFileResponse);
78 private boolean isNotEmptyFileToUpload(InputStream fileToUpload,
79 UploadFileResponse uploadFileResponse,
80 CandidateService candidateService) {
81 Optional<ErrorMessage> errorMessage =
82 candidateService.validateNonEmptyFileToUpload(fileToUpload);
83 if (errorMessage.isPresent()) {
84 uploadFileResponse.addStructureError(SdcCommon.UPLOAD_FILE, errorMessage.get());
90 protected boolean isInvalidRawZipData(UploadFileResponse uploadFileResponse,
91 byte[] uploadedFileData,
92 CandidateService candidateService) {
93 Optional<ErrorMessage> errorMessage;
94 errorMessage = candidateService.validateRawZipData(uploadedFileData);
95 if (errorMessage.isPresent()) {
96 uploadFileResponse.addStructureError(SdcCommon.UPLOAD_FILE, errorMessage.get());
102 public abstract Optional<FileContentHandler> getFileContentMap(
103 UploadFileResponse uploadFileResponse,
104 byte[] uploadedFileData);
106 protected abstract OnboardingTypesEnum getHandlerType();