diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/download/DownloadStatusEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/download/DownloadStatusEntity.java index 3b17c81de..15fad84f9 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/download/DownloadStatusEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/download/DownloadStatusEntity.java @@ -23,10 +23,8 @@ import org.hibernate.annotations.FetchMode; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity; import com.iqser.red.service.persistence.management.v1.processor.utils.JSONDownloadFileTypeConverter; -import com.iqser.red.service.persistence.management.v1.processor.utils.JSONStoredFileInformationConverter; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DownloadFileType; import com.iqser.red.service.persistence.service.v1.api.model.download.DownloadStatusValue; -import com.iqser.red.service.redaction.report.v1.api.model.StoredFileInformation; import lombok.AccessLevel; import lombok.AllArgsConstructor; @@ -74,8 +72,4 @@ public class DownloadStatusEntity { @Convert(converter = JSONDownloadFileTypeConverter.class) Set downloadFileTypes = new HashSet<>(); - @Builder.Default - @Column(columnDefinition = "text", name = "generated_reports_information") - @Convert(converter = JSONStoredFileInformationConverter.class) - Set generatedReportsInformation = new HashSet<>(); } diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/download/DownloadPreparationService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/download/DownloadPreparationService.java index b8c29fe47..cb9a6cd61 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/download/DownloadPreparationService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/download/DownloadPreparationService.java @@ -2,7 +2,6 @@ package com.iqser.red.service.peristence.v1.server.service.download; import java.io.IOException; import java.util.Collection; -import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -15,6 +14,7 @@ import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.stereotype.Service; import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import com.iqser.red.service.pdftron.redaction.v1.api.model.RedactionMessage; import com.iqser.red.service.pdftron.redaction.v1.api.model.RedactionResultDetail; @@ -41,6 +41,7 @@ import com.iqser.red.storage.commons.service.StorageService; import lombok.AccessLevel; import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; import lombok.experimental.FieldDefaults; import lombok.extern.slf4j.Slf4j; @@ -66,8 +67,6 @@ public class DownloadPreparationService { public void createDownload(ReportResultMessage reportResultMessage) throws JsonProcessingException { DownloadStatusEntity downloadStatus = downloadStatusPersistenceService.getStatus(reportResultMessage.getDownloadId()); - downloadStatus.setGeneratedReportsInformation(new HashSet<>(reportResultMessage.getStoredFileInformation())); - downloadStatusPersistenceService.updateStatusEntity(downloadStatus); DossierEntity dossier = downloadStatus.getDossier(); @@ -112,10 +111,12 @@ public class DownloadPreparationService { DownloadStatusEntity downloadStatus = downloadStatusPersistenceService.getStatus(reportResultMessage.getDownloadId()); + var storedFileInformations = getStoredFileInformation(reportResultMessage.getDownloadId()); + try (FileSystemBackedArchiver fileSystemBackedArchiver = new FileSystemBackedArchiver()) { generateAndAddFiles(downloadStatus, reportResultMessage, fileSystemBackedArchiver); - addReports(downloadStatus, fileSystemBackedArchiver); + addReports(reportResultMessage.getDownloadId(), storedFileInformations, fileSystemBackedArchiver); storeZipFile(downloadStatus, fileSystemBackedArchiver); downloadStatusPersistenceService.updateStatus(downloadStatus.getStorageId(), DownloadStatusValue.READY, fileSystemBackedArchiver.getContentLength()); @@ -130,7 +131,7 @@ public class DownloadPreparationService { .build()); } - downloadReportCleanupService.deleteTmpReportFiles(downloadStatus.getGeneratedReportsInformation() + downloadReportCleanupService.deleteTmpReportFiles(storedFileInformations .stream() .map(StoredFileInformation::getStorageId) .collect(Collectors.toSet())); @@ -210,11 +211,11 @@ public class DownloadPreparationService { } - private void addReports(DownloadStatusEntity downloadStatus, FileSystemBackedArchiver fileSystemBackedArchiver) { + private void addReports(String downloadId, List storedFileInformations, FileSystemBackedArchiver fileSystemBackedArchiver) { long addReportsStart = System.currentTimeMillis(); - for (StoredFileInformation storedFileInformation : downloadStatus.getGeneratedReportsInformation()) { + for (StoredFileInformation storedFileInformation : storedFileInformations) { FileEntity fileStatus = null; @@ -227,10 +228,17 @@ public class DownloadPreparationService { fileSystemBackedArchiver.addEntry(new FileSystemBackedArchiver.ArchiveModel(removeExtension(reportTemplate.getFileName()) + (reportTemplate.isMultiFileReport() ? " (multifile)" : ""), addSuffix(createFileName(fileStatus, reportTemplate), "justification"), report)); } - log.info("Successfully added {} reports for downloadId {}, took {}", downloadStatus.getGeneratedReportsInformation() - .size(), downloadStatus.getStorageId(), System.currentTimeMillis() - addReportsStart); + log.info("Successfully added {} reports for downloadId {}, took {}", storedFileInformations.size(), downloadId, System.currentTimeMillis() - addReportsStart); } + @SneakyThrows + private List getStoredFileInformation(String downloadId){ + + var storageId = downloadId.substring(0, downloadId.length() - 3) + "/REPORT_INFO.json"; + + return objectMapper.readValue(fileManagementStorageService.getStoredObjectBytes(storageId), new TypeReference<>() { + }); + } private String createFileName(FileEntity fileStatus, ReportTemplateEntity reportTemplate) { diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/36-revert-reports-information-column.changelog.yaml b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/36-revert-reports-information-column.changelog.yaml new file mode 100644 index 000000000..b3400dc7c --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/36-revert-reports-information-column.changelog.yaml @@ -0,0 +1,10 @@ +databaseChangeLog: + - changeSet: + id: remove-reports-information-column + author: dom + changes: + - removeColumn: + columns: + - column: + name: generated_reports_information + tableName: download_status diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml index 215427680..6b01366c0 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml +++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml @@ -85,3 +85,7 @@ databaseChangeLog: file: db/changelog/34-add-reports-information-column.changelog.yaml - include: file: db/changelog/sql/35-update-skipped-color-existing-types.sql + - include: + file: db/changelog/36-revert-reports-information-column.changelog.yaml + + diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DownloadPreparationTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DownloadPreparationTest.java index 7698178b9..5a7498dbe 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DownloadPreparationTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DownloadPreparationTest.java @@ -1,5 +1,15 @@ package com.iqser.red.service.peristence.v1.server.integration.tests; +import static org.assertj.core.api.Assertions.assertThat; + +import java.io.ByteArrayInputStream; +import java.util.ArrayList; +import java.util.Collections; +import java.util.stream.Collectors; + +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; + import com.fasterxml.jackson.databind.ObjectMapper; import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient; import com.iqser.red.service.peristence.v1.server.integration.client.DownloadClient; @@ -10,7 +20,6 @@ import com.iqser.red.service.peristence.v1.server.integration.service.DossierTes import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider; import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.peristence.v1.server.service.download.DownloadReportMessageReceiver; -import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DownloadFileType; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.ReportTemplateUploadRequest; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierRequest; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.WorkflowStatus; @@ -19,21 +28,7 @@ import com.iqser.red.service.redaction.report.v1.api.model.ReportResultMessage; import com.iqser.red.service.redaction.report.v1.api.model.StoredFileInformation; import com.iqser.red.storage.commons.service.StorageService; -import lombok.Builder; import lombok.SneakyThrows; -import org.junit.Test; -import org.springframework.beans.factory.annotation.Autowired; - -import java.io.ByteArrayInputStream; -import java.time.OffsetDateTime; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; - -import static org.assertj.core.api.Assertions.assertThat; public class DownloadPreparationTest extends AbstractPersistenceServerServiceTest { @@ -132,7 +127,6 @@ public class DownloadPreparationTest extends AbstractPersistenceServerServiceTes ReportResultMessage reportResultMessage = new ReportResultMessage(); reportResultMessage.setUserId("1"); reportResultMessage.setDownloadId(statuses.iterator().next().getStorageId()); - reportResultMessage.setStoredFileInformation(sivList); downloadReportMessageReceiver.receive(objectMapper.writeValueAsString(reportResultMessage)); } diff --git a/persistence-service-v1/pom.xml b/persistence-service-v1/pom.xml index 58d00c915..1e38ac2ea 100755 --- a/persistence-service-v1/pom.xml +++ b/persistence-service-v1/pom.xml @@ -28,7 +28,7 @@ 3.114.0 2.36.0 3.112.0 - 3.47.0 + 3.52.0