public RemoteDocumentMetadataDto put()

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);
  }