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.vendorsoftwareproduct.dao.type.VspDetails;
14 import org.openecomp.sdc.vendorsoftwareproduct.services.filedatastructuremodule.CandidateService;
15 import org.openecomp.sdc.vendorsoftwareproduct.types.UploadFileResponse;
17 import java.io.InputStream;
18 import java.util.Optional;
20 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);
26 public UploadFileResponse upload(VspDetails vspDetails, InputStream fileToUpload,
27 String fileSuffix, String networkPackageName,
28 CandidateService candidateService) {
29 UploadFileResponse uploadFileResponse = new UploadFileResponse();
30 uploadFileResponse.setOnboardingType(getHandlerType());
31 if (isNotEmptyFileToUpload(fileSuffix, fileToUpload, uploadFileResponse, candidateService)) {
32 return uploadFileResponse;
35 byte[] uploadedFileData = FileUtils.toByteArray(fileToUpload);
36 if (isInvalidRawZipData(fileSuffix, uploadFileResponse, uploadedFileData, candidateService)) {
37 return uploadFileResponse;
40 Optional<FileContentHandler> optionalContentMap =
41 getFileContentMap(uploadFileResponse, uploadedFileData);
42 if (!optionalContentMap.isPresent()) {
43 logger.error(getErrorWithParameters(Messages.FILE_CONTENT_MAP.getErrorMessage(),
44 getHandlerType().toString()));
45 uploadFileResponse.addStructureError(SdcCommon.UPLOAD_FILE, new ErrorMessage(ErrorLevel.ERROR,
46 getErrorWithParameters(Messages.FILE_CONTENT_MAP.getErrorMessage(),
47 getHandlerType().toString())));
48 return uploadFileResponse;
51 if (!MapUtils.isEmpty(uploadFileResponse.getErrors())) {
52 return uploadFileResponse;
54 if (updateCandidateData(vspDetails, uploadedFileData, optionalContentMap.get(), fileSuffix,
55 networkPackageName, candidateService, uploadFileResponse)) {
56 return uploadFileResponse;
58 return uploadFileResponse;
62 protected abstract boolean updateCandidateData(VspDetails vspDetails,
63 byte[] uploadedFileData,
64 FileContentHandler contentMap,
66 String networkPackageName,
67 CandidateService candidateService,
68 UploadFileResponse uploadFileResponse);
70 private boolean isNotEmptyFileToUpload(String fileSuffix, InputStream fileToUpload,
71 UploadFileResponse uploadFileResponse,
72 CandidateService candidateService) {
73 Optional<ErrorMessage> errorMessage =
74 candidateService.validateNonEmptyFileToUpload(fileToUpload, fileSuffix);
75 if (errorMessage.isPresent()) {
76 uploadFileResponse.addStructureError(SdcCommon.UPLOAD_FILE, errorMessage.get());
82 protected boolean isInvalidRawZipData(String fileSuffix,
83 UploadFileResponse uploadFileResponse,
84 byte[] uploadedFileData,
85 CandidateService candidateService) {
86 Optional<ErrorMessage> errorMessage;
87 errorMessage = candidateService.validateRawZipData(fileSuffix, uploadedFileData);
88 if (errorMessage.isPresent()) {
89 uploadFileResponse.addStructureError(SdcCommon.UPLOAD_FILE, errorMessage.get());
95 public abstract Optional<FileContentHandler> getFileContentMap(
96 UploadFileResponse uploadFileResponse,
97 byte[] uploadedFileData);
99 protected abstract OnboardingTypesEnum getHandlerType();