in digital-document-service/src/main/java/com/epam/digital/data/platform/dgtldcmnt/service/CephInternalApiDocumentService.java [49:79]
public RemoteDocumentMetadataDto put(UploadDocumentDto documentDto) {
validator.validate(documentDto.getSize());
var fileId = UUID.randomUUID().toString();
var validateLengthIS = new ValidateLengthInputStream(documentDto.getFileInputStream(), validator);
var sha256DigestCalculatingIS = new Sha256DigestCalculatingInputStream(validateLengthIS);
log.info("Downloading file {} from remote URI and uploading it to the storage in process {}",
documentDto.getFilename(), documentDto.getRootProcessInstanceId());
var userMetadata = buildUserMetadata(fileId, documentDto.getFilename());
var fileMetadata = new BaseFileMetadataDto(
documentDto.getSize(), documentDto.getContentType(), userMetadata);
var fileObjectDto = FileObjectDto.builder()
.content(sha256DigestCalculatingIS)
.metadata(fileMetadata).build();
BaseFileMetadataDto resultMetadata;
try {
resultMetadata = storage.save(documentDto.getRootProcessInstanceId(), fileId, fileObjectDto);
} catch (CephCommunicationException e) {
if(e.getCause() instanceof ValidationException) {
throw (ValidationException)e.getCause();
}
throw e;
}
String checksum = Hex.encodeHexString(sha256DigestCalculatingIS.getDigest());
userMetadata.put(BaseUserMetadataHeaders.CHECKSUM, checksum);
storage.setUserMetadata(documentDto.getRootProcessInstanceId(), fileId, userMetadata);
log.debug("File {} uploaded. Id {}", documentDto.getFilename(), fileId);
return toRemoteDocumentMetadataDto(resultMetadata, checksum);
}