Pull request #433: RED-3749 Revert digital signature removal

Merge in RED/persistence-service from RED-3749-revert to master

* commit '94e606dcfb6da1638f3b3052cb1bc45e1ddbe222':
  RED-3749 Revert digital signature removal
  RED-3749 Revert digital signature removal
This commit is contained in:
Timo Bejan 2022-06-07 10:25:47 +02:00
commit 47c0e055ba
9 changed files with 31 additions and 84 deletions

View File

@ -14,5 +14,5 @@ public class ApplicationConfig {
private int downloadCleanupDownloadFilesHours;
private int downloadCleanupNotDownloadFilesHours;
private int softDeleteCleanupTime;
private boolean removeDigitalSignaturesOnUpload;
}

View File

@ -32,6 +32,4 @@ public class ApplicationConfigurationEntity {
@Column
private int softDeleteCleanupTime = 96;
@Column
private boolean removeDigitalSignaturesOnUpload;
}

View File

@ -4,8 +4,6 @@ import com.iqser.red.service.pdftron.redaction.v1.api.model.ProcessUntouchedDocu
import com.iqser.red.service.peristence.v1.server.migration.Migration;
import com.iqser.red.service.peristence.v1.server.service.FileManagementStorageService;
import com.iqser.red.service.persistence.management.v1.processor.client.PDFTronRedactionClient;
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.ApplicationConfigurationEntity;
import com.iqser.red.service.persistence.management.v1.processor.service.ApplicationConfigService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileStatusPersistenceService;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileType;
@ -34,9 +32,6 @@ public class MigrateHighlights3 extends Migration {
@Autowired
private FileManagementStorageService fileManagementStorageService;
@Autowired
private ApplicationConfigService applicationConfigService;
public MigrateHighlights3() {
super(NAME, VERSION);
@ -68,10 +63,8 @@ public class MigrateHighlights3 extends Migration {
fileManagementStorageService.getStoredObjectBytes(dossier.getId(), file.getId(), FileType.ORIGIN));
}
ApplicationConfigurationEntity applicationConfigurationEntity = applicationConfigService.getApplicationConfig();
var response = pdfTronRedactionClient.processUntouchedDocument(ProcessUntouchedDocumentRequest.builder()
.fileName(file.getFilename()).fileId(file.getId()).dossierId(file.getDossierId())
.removeDigitalSignaturesOnUpload(applicationConfigurationEntity.isRemoveDigitalSignaturesOnUpload()).build());
.fileName(file.getFilename()).fileId(file.getId()).dossierId(file.getDossierId()).build());
fileStatusPersistenceService.updateHasHighlights(file.getId(), response.isHasHighlights());
} else {

View File

@ -1,32 +1,22 @@
package com.iqser.red.service.peristence.v1.server.service;
import java.time.OffsetDateTime;
import java.util.Arrays;
import org.springframework.stereotype.Service;
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.ApplicationConfigurationEntity;
import com.iqser.red.service.persistence.management.v1.processor.exception.ConflictException;
import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException;
import com.iqser.red.service.persistence.management.v1.processor.service.ApplicationConfigService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ViewedPagesPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.AddRedactionPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.CommentPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.ForceRedactionPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.ImageRecategorizationPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.LegalBasisChangePersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.RemoveRedactionPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.ResizeRedactionPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.*;
import com.iqser.red.service.persistence.service.v1.api.model.common.JSONPrimitive;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.AddFileRequest;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileModel;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileType;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.WorkflowStatus;
import com.iqser.red.service.search.v1.model.IndexMessageType;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.time.OffsetDateTime;
import java.util.Arrays;
/**
* Provides the internal interface between upload request and the actual persistence.
@ -48,7 +38,6 @@ public class FileService {
private final LegalBasisChangePersistenceService legalBasisChangePersistenceService;
private final ResizeRedactionPersistenceService resizeRedactionPersistenceService;
private final IndexingService indexingService;
private final ApplicationConfigService applicationConfigService;
public JSONPrimitive<String> upload(AddFileRequest request, boolean keepManualRedactions) {
@ -68,16 +57,14 @@ public class FileService {
}
}
ApplicationConfigurationEntity applicationConfigurationEntity = applicationConfigService.getApplicationConfig();
if (existingStatus != null) {
// the file is already uploaded, just reanalyse it.
fileStatusService.overwriteFile(request.getDossierId(), request.getFileId(), request.getUploader(), request.getFilename(), keepManualRedactions, applicationConfigurationEntity.isRemoveDigitalSignaturesOnUpload());
fileStatusService.overwriteFile(request.getDossierId(), request.getFileId(), request.getUploader(), request.getFilename(), keepManualRedactions);
} else {
// the file is new, should create a new status for it.
log.info("File {} has no status yet, creating one and setting to unprocessed.", request.getFilename());
fileStatusService.createStatus(request.getDossierId(), request.getFileId(), request.getUploader(), request.getFilename(), applicationConfigurationEntity.isRemoveDigitalSignaturesOnUpload());
fileStatusService.createStatus(request.getDossierId(), request.getFileId(), request.getUploader(), request.getFilename());
}
return new JSONPrimitive<>(request.getFileId());

View File

@ -1,19 +1,5 @@
package com.iqser.red.service.peristence.v1.server.service;
import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert;
import java.time.OffsetDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import javax.transaction.Transactional;
import org.apache.commons.lang3.StringUtils;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Service;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.collect.Sets;
@ -34,13 +20,7 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileAttributeConfigPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileStatusPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ViewedPagesPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.AddRedactionPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.CommentPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.ForceRedactionPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.ImageRecategorizationPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.LegalBasisChangePersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.RemoveRedactionPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.ResizeRedactionPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.*;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileModel;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileType;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.ProcessingStatus;
@ -48,10 +28,21 @@ import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.do
import com.iqser.red.service.redaction.v1.model.AnalyzeRequest;
import com.iqser.red.service.redaction.v1.model.AnalyzeResult;
import com.iqser.red.service.redaction.v1.model.MessageType;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.time.OffsetDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert;
@Slf4j
@Service
@ -143,9 +134,8 @@ public class FileStatusService {
// TODO add better logic than always reprocess.
fileStatusPersistenceService.updateProcessingStatusPreprocessingFailed(fileId);
ApplicationConfigurationEntity applicationConfigurationEntity = applicationConfigService.getApplicationConfig();
var fileEntity = fileStatusPersistenceService.getStatus(fileId);
addToPreprocessingQueue(dossierId, fileId, fileEntity.getFilename(), applicationConfigurationEntity.isRemoveDigitalSignaturesOnUpload());
addToPreprocessingQueue(dossierId, fileId, fileEntity.getFilename());
}
@ -248,14 +238,12 @@ public class FileStatusService {
@SneakyThrows
public void addToPreprocessingQueue(String dossierId, String fileId, String filename,
boolean removeDigitalSignatures) {
public void addToPreprocessingQueue(String dossierId, String fileId, String filename) {
var processUntouchedDocumentRequest = ProcessUntouchedDocumentRequest.builder()
.dossierId(dossierId)
.fileId(fileId)
.fileName(filename)
.removeDigitalSignaturesOnUpload(removeDigitalSignatures)
.build();
setStatusPreProcessing(fileId);
@ -365,11 +353,10 @@ public class FileStatusService {
@Transactional
public void createStatus(String dossierId, String fileId, String uploader, String filename,
boolean removeDigitalSignatures) {
public void createStatus(String dossierId, String fileId, String uploader, String filename) {
fileStatusPersistenceService.createStatus(dossierId, fileId, filename, uploader);
addToPreprocessingQueue(dossierId, fileId, filename, removeDigitalSignatures);
addToPreprocessingQueue(dossierId, fileId, filename);
}
@ -525,8 +512,7 @@ public class FileStatusService {
}
public void overwriteFile(String dossierId, String fileId, String uploader, String filename,
boolean keepManualRedactions, boolean removeDigitalSignatures) {
public void overwriteFile(String dossierId, String fileId, String uploader, String filename, boolean keepManualRedactions) {
fileManagementStorageService.deleteObject(dossierId, fileId, FileType.REDACTION_LOG);
fileManagementStorageService.deleteObject(dossierId, fileId, FileType.SECTION_GRID);
@ -543,7 +529,7 @@ public class FileStatusService {
viewedPagesPersistenceService.deleteForFile(fileId);
addToPreprocessingQueue(dossierId, fileId, filename, removeDigitalSignatures);
addToPreprocessingQueue(dossierId, fileId, filename);
}

View File

@ -1,12 +0,0 @@
databaseChangeLog:
- changeSet:
id: add-remove-digital-signatures-on-upload
author: corina
changes:
- addColumn:
columns:
- column:
name: remove_digital_signatures_on_upload
type: BOOLEAN
defaultValue: false
tableName: application_configuration

View File

@ -69,7 +69,5 @@ databaseChangeLog:
file: db/changelog/sql/27-update-soft-delete-date.sql
- include:
file: db/changelog/28-add-update-dictionary-to-manual-resize-redactions.yaml
- include:
file: db/changelog/29-add-remove-digital-signatures-on-upload.changelog.yaml
- include:
file: db/changelog/sql/30-change-bigint-to-serial.sql

View File

@ -16,18 +16,16 @@ public class ApplicationConfigTest extends AbstractPersistenceServerServiceTest
@Test
public void testAppConfig() {
ApplicationConfig appConfig = new ApplicationConfig().builder()
.downloadCleanupDownloadFilesHours(8).downloadCleanupNotDownloadFilesHours(72).softDeleteCleanupTime(96).removeDigitalSignaturesOnUpload(true).build();
.downloadCleanupDownloadFilesHours(8).downloadCleanupNotDownloadFilesHours(72).softDeleteCleanupTime(96).build();
var result = appConfigClient.createOrUpdateAppConfig(appConfig);
assertThat(result.getSoftDeleteCleanupTime()).isEqualTo(appConfig.getSoftDeleteCleanupTime());
assertThat(result.getDownloadCleanupDownloadFilesHours()).isEqualTo(appConfig.getDownloadCleanupDownloadFilesHours());
assertThat(result.getDownloadCleanupNotDownloadFilesHours()).isEqualTo(appConfig.getDownloadCleanupNotDownloadFilesHours());
assertThat(result.isRemoveDigitalSignaturesOnUpload()).isEqualTo(appConfig.isRemoveDigitalSignaturesOnUpload());
var getResult = appConfigClient.getCurrentApplicationConfig();
assertThat(getResult.getSoftDeleteCleanupTime()).isEqualTo(appConfig.getSoftDeleteCleanupTime());
assertThat(getResult.getDownloadCleanupDownloadFilesHours()).isEqualTo(appConfig.getDownloadCleanupDownloadFilesHours());
assertThat(getResult.getDownloadCleanupNotDownloadFilesHours()).isEqualTo(appConfig.getDownloadCleanupNotDownloadFilesHours());
assertThat(result.isRemoveDigitalSignaturesOnUpload()).isEqualTo(appConfig.isRemoveDigitalSignaturesOnUpload());
appConfig.setDownloadCleanupDownloadFilesHours(16);
appConfig.setDownloadCleanupNotDownloadFilesHours(80);
@ -38,6 +36,5 @@ public class ApplicationConfigTest extends AbstractPersistenceServerServiceTest
assertThat(getResult.getSoftDeleteCleanupTime()).isEqualTo(appConfig.getSoftDeleteCleanupTime());
assertThat(getResult.getDownloadCleanupDownloadFilesHours()).isEqualTo(appConfig.getDownloadCleanupDownloadFilesHours());
assertThat(getResult.getDownloadCleanupNotDownloadFilesHours()).isEqualTo(appConfig.getDownloadCleanupNotDownloadFilesHours());
assertThat(result.isRemoveDigitalSignaturesOnUpload()).isEqualTo(appConfig.isRemoveDigitalSignaturesOnUpload());
}
}

View File

@ -136,14 +136,14 @@ public abstract class AbstractPersistenceServerServiceTest {
@Before
public void setupOptimize() {
ApplicationConfig appConfig = new ApplicationConfig().builder()
.downloadCleanupDownloadFilesHours(8).downloadCleanupNotDownloadFilesHours(72).softDeleteCleanupTime(96).removeDigitalSignaturesOnUpload(true).build();
.downloadCleanupDownloadFilesHours(8).downloadCleanupNotDownloadFilesHours(72).softDeleteCleanupTime(96).build();
appConfigClient.createOrUpdateAppConfig(appConfig);
// when(appConfigClient.getCurrentApplicationConfig()).thenReturn(ApplicationConfig.builder()
// .downloadCleanupDownloadFilesHours(8)
// .downloadCleanupNotDownloadFilesHours(72)
// .softDeleteCleanupTime(96)
// .removeDigitalSignaturesOnUpload(true).build());
doNothing().when(pdfTronRedactionClient).testDigitalCurrentSignature(Mockito.any());
when(amqpAdmin.getQueueInfo(Mockito.any())).thenReturn(null);