Pull request #139: RED-2900: Added missing migration of digital signature
Merge in RED/persistence-service from RED-2900-ds to master * commit '0fb4867ee050806de04a54302c80f6c4575737df': RED-2900: Added missing migration of digital signature
This commit is contained in:
commit
00fb70c3bf
@ -0,0 +1,49 @@
|
||||
package com.iqser.red.service.peristence.v1.server.migration;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.security.MessageDigest;
|
||||
import java.util.Arrays;
|
||||
import java.util.Base64;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import javax.crypto.Cipher;
|
||||
import javax.crypto.spec.SecretKeySpec;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import lombok.SneakyThrows;
|
||||
|
||||
@Service
|
||||
public class MigrationEncryptionDecryptionService {
|
||||
|
||||
@Value("${configuration-service.crypto.key:redaction}")
|
||||
private String key;
|
||||
private SecretKeySpec secretKey;
|
||||
|
||||
@SneakyThrows
|
||||
@PostConstruct
|
||||
protected void postConstruct() {
|
||||
byte[] keyBytes = key.getBytes(StandardCharsets.UTF_8);
|
||||
var sha = MessageDigest.getInstance("SHA-1");
|
||||
keyBytes = sha.digest(keyBytes);
|
||||
keyBytes = Arrays.copyOf(keyBytes, 16);
|
||||
secretKey = new SecretKeySpec(keyBytes, "AES");
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
public String encrypt(String strToEncrypt) {
|
||||
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
|
||||
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
|
||||
return Base64.getEncoder().encodeToString(cipher.doFinal(strToEncrypt.getBytes(StandardCharsets.UTF_8)));
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
public String decrypt(String strToDecrypt) {
|
||||
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5PADDING");
|
||||
cipher.init(Cipher.DECRYPT_MODE, secretKey);
|
||||
return new String(cipher.doFinal(Base64.getDecoder().decode(strToDecrypt)), StandardCharsets.UTF_8);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@ -1,42 +1,127 @@
|
||||
package com.iqser.red.service.peristence.v1.server.migration;
|
||||
|
||||
import static com.iqser.red.service.persistence.management.v1.processor.utils.TypeIdUtils.toTypeId;
|
||||
import static java.util.stream.Collectors.toList;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.iqser.red.service.peristence.v1.server.exception.MigrationException;
|
||||
import com.iqser.red.service.peristence.v1.server.migration.model.*;
|
||||
import com.iqser.red.service.peristence.v1.server.migration.model.CommentRow;
|
||||
import com.iqser.red.service.peristence.v1.server.migration.model.ConfigurationRow;
|
||||
import com.iqser.red.service.peristence.v1.server.migration.model.DigitalSignatureModel;
|
||||
import com.iqser.red.service.peristence.v1.server.migration.model.DossierAttributeRow;
|
||||
import com.iqser.red.service.peristence.v1.server.migration.model.DossierAttributesConfig;
|
||||
import com.iqser.red.service.peristence.v1.server.migration.model.EntryRow;
|
||||
import com.iqser.red.service.peristence.v1.server.migration.model.FileAttributesConfig;
|
||||
import com.iqser.red.service.peristence.v1.server.migration.model.IdRemovalRow;
|
||||
import com.iqser.red.service.peristence.v1.server.migration.model.ManualForceRedactionRow;
|
||||
import com.iqser.red.service.peristence.v1.server.migration.model.ManualImageRecategorizationRow;
|
||||
import com.iqser.red.service.peristence.v1.server.migration.model.ManualLegalBasisChangeRow;
|
||||
import com.iqser.red.service.peristence.v1.server.migration.model.ManualRedactionEntryRow;
|
||||
import com.iqser.red.service.peristence.v1.server.migration.model.MigrationAuditModel;
|
||||
import com.iqser.red.service.peristence.v1.server.migration.model.MigrationComment;
|
||||
import com.iqser.red.service.peristence.v1.server.migration.model.MigrationDossier;
|
||||
import com.iqser.red.service.peristence.v1.server.migration.model.MigrationDossierTemplate;
|
||||
import com.iqser.red.service.peristence.v1.server.migration.model.MigrationDownloadStatus;
|
||||
import com.iqser.red.service.peristence.v1.server.migration.model.MigrationFileStatus;
|
||||
import com.iqser.red.service.peristence.v1.server.migration.model.MigrationNotification;
|
||||
import com.iqser.red.service.peristence.v1.server.migration.model.MigrationRedactionLog;
|
||||
import com.iqser.red.service.peristence.v1.server.migration.model.MigrationRedactionLogEntry;
|
||||
import com.iqser.red.service.peristence.v1.server.migration.model.MigrationViewedPage;
|
||||
import com.iqser.red.service.peristence.v1.server.migration.model.NewIdForDossierTemplate;
|
||||
import com.iqser.red.service.peristence.v1.server.migration.model.Status;
|
||||
import com.iqser.red.service.peristence.v1.server.migration.model.VersionRow;
|
||||
import com.iqser.red.service.peristence.v1.server.migration.model.VersionType;
|
||||
import com.iqser.red.service.peristence.v1.server.service.FileManagementStorageService;
|
||||
import com.iqser.red.service.peristence.v1.server.utils.StorageIdUtils;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.*;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.CommentEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.IdRemovalEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualForceRedactionEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualImageRecategorizationEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualLegalBasisChangeEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualRedactionEntryEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.RectangleEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ViewedPageEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.audit.AuditEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.*;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.*;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.ColorsEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.DictionaryEntryEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.DigitalSignatureEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.FileAttributesGeneralConfigurationEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.LegalBasisEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.LegalBasisMappingEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.RuleSetEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.TypeEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.WatermarkEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierAttributeEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierTemplateEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileAttributeConfigEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileAttributeEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.ReportTemplateEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.download.DownloadStatusEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.notification.NotificationEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.EncryptionDecryptionService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileAttributeConfigPersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.*;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.AuditRepository;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ColorsRepository;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.CommentRepository;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DigitalSignatureRepository;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierAttributeConfigRepository;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierAttributeRepository;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierRepository;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierTemplateRepository;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DownloadStatusRepository;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.EntryRepository;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileAttributeConfigRepository;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileAttributesGeneralConfigurationRepository;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileRepository;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ForceRedactionRepository;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ImageRecategorizationRepository;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.LegalBasisChangeRepository;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.LegalBasisMappingRepository;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ManualRedactionRepository;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.NotificationRepository;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.RemoveRedactionRepository;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ReportTemplateRepository;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.RuleSetRepository;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.TypeRepository;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ViewedPagesRepository;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.WatermarkRepository;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.annotations.Comment;
|
||||
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;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.WorkflowStatus;
|
||||
import com.iqser.red.service.redaction.v1.model.*;
|
||||
import com.iqser.red.service.redaction.v1.model.Change;
|
||||
import com.iqser.red.service.redaction.v1.model.ChangeType;
|
||||
import com.iqser.red.service.redaction.v1.model.Engine;
|
||||
import com.iqser.red.service.redaction.v1.model.Rectangle;
|
||||
import com.iqser.red.service.redaction.v1.model.RedactionLog;
|
||||
import com.iqser.red.service.redaction.v1.model.RedactionLogEntry;
|
||||
import com.iqser.red.storage.commons.exception.StorageObjectDoesNotExist;
|
||||
import com.iqser.red.storage.commons.service.StorageService;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
import static com.iqser.red.service.persistence.management.v1.processor.utils.TypeIdUtils.toTypeId;
|
||||
import static java.util.stream.Collectors.toList;
|
||||
|
||||
|
||||
@SuppressWarnings("PMD")
|
||||
@Slf4j
|
||||
@ -79,6 +164,9 @@ public class MigrationService {
|
||||
private final CommentRepository commentRepository;
|
||||
|
||||
private final StorageService storageService;
|
||||
private final MigrationEncryptionDecryptionService migrationEncryptionDecryptionService;
|
||||
private final EncryptionDecryptionService encryptionDecryptionService;
|
||||
private final DigitalSignatureRepository digitalSignatureRepository;
|
||||
|
||||
|
||||
@SneakyThrows
|
||||
@ -102,7 +190,7 @@ public class MigrationService {
|
||||
dossierTemplates.forEach(dossierTemplate -> {
|
||||
migrateDossierTemplate(dossierTemplate);
|
||||
log.info("Migrated dossierTemplates");
|
||||
addValues(dossierAttributesOldIdToNewId,migrateDossierAttributeConfiguration(dossierTemplate.getDossierTemplateId(), configurationRows));
|
||||
addValues(dossierAttributesOldIdToNewId, migrateDossierAttributeConfiguration(dossierTemplate.getDossierTemplateId(), configurationRows));
|
||||
log.info("Migrated dossier attributes config");
|
||||
addValues(fileAttributesOldIdToNewId, migrateFileAttributeConfiguration(dossierTemplate.getDossierTemplateId(), configurationRows));
|
||||
log.info("Migrated file attributes config");
|
||||
@ -114,9 +202,11 @@ public class MigrationService {
|
||||
log.info("Migrated default colors");
|
||||
migrateRules(dossierTemplate.getDossierTemplateId(), versions);
|
||||
log.info("Migrated rules");
|
||||
|
||||
});
|
||||
|
||||
log.info("Migrated reportTemplates");
|
||||
migrateDigitalSignature();
|
||||
log.info("Migrated digital signature");
|
||||
migrateReportTemplates();
|
||||
log.info("Migrated reportTemplates");
|
||||
migrateDossiers();
|
||||
@ -161,7 +251,9 @@ public class MigrationService {
|
||||
}
|
||||
|
||||
|
||||
private void addValues(Map<String, List<NewIdForDossierTemplate>> existing, Map<String, List<NewIdForDossierTemplate>> newValues){
|
||||
private void addValues(Map<String, List<NewIdForDossierTemplate>> existing,
|
||||
Map<String, List<NewIdForDossierTemplate>> newValues) {
|
||||
|
||||
newValues.entrySet().forEach(entry -> {
|
||||
existing.computeIfAbsent(entry.getKey(), x -> new ArrayList<>()).addAll(entry.getValue());
|
||||
});
|
||||
@ -359,13 +451,11 @@ public class MigrationService {
|
||||
.equals(dossierTemplateId) && versionRow.getVersionType() == VersionType.RULE.ordinal())
|
||||
.findFirst();
|
||||
|
||||
if(!versionOptional.isPresent()){
|
||||
if (!versionOptional.isPresent()) {
|
||||
log.warn("no rules version found for dossier template {}", dossierTemplateId);
|
||||
return;
|
||||
}
|
||||
var version = versionOptional
|
||||
.get()
|
||||
.getVersion();
|
||||
var version = versionOptional.get().getVersion();
|
||||
|
||||
String rules = new String(fileManagementStorageService.getStoredObjectBytes(String.format("rules/%s-rules.drl", dossierTemplateId)));
|
||||
RuleSetEntity ruleSet = new RuleSetEntity();
|
||||
@ -501,7 +591,6 @@ public class MigrationService {
|
||||
.processedDate(redaction.getProcessedDate())
|
||||
.softDeletedTime(redaction.getSoftDeletedTime())
|
||||
.fileStatus(file)
|
||||
|
||||
.build();
|
||||
|
||||
legalBasisChangeRepository.save(manualLegalBasisChange);
|
||||
@ -530,7 +619,6 @@ public class MigrationService {
|
||||
.processedDate(redaction.getProcessedDate())
|
||||
.softDeletedTime(redaction.getSoftDeletedTime())
|
||||
.fileStatus(file)
|
||||
|
||||
.build();
|
||||
|
||||
removeRedactionRepository.save(idRemoval);
|
||||
@ -671,7 +759,9 @@ public class MigrationService {
|
||||
break;
|
||||
case REPROCESS:
|
||||
if (oldFile.getLastSuccessfulStatus() != null) {
|
||||
workflowStatus = oldFile.getLastSuccessfulStatus().equals(Status.UNASSIGNED) ? WorkflowStatus.NEW : WorkflowStatus.valueOf(oldFile.getLastSuccessfulStatus().name());
|
||||
workflowStatus = oldFile.getLastSuccessfulStatus()
|
||||
.equals(Status.UNASSIGNED) ? WorkflowStatus.NEW : WorkflowStatus.valueOf(oldFile.getLastSuccessfulStatus()
|
||||
.name());
|
||||
processingStatus = ProcessingStatus.REPROCESS;
|
||||
} else {
|
||||
workflowStatus = WorkflowStatus.NEW;
|
||||
@ -680,7 +770,9 @@ public class MigrationService {
|
||||
break;
|
||||
case PROCESSING:
|
||||
if (oldFile.getLastSuccessfulStatus() != null) {
|
||||
workflowStatus = oldFile.getLastSuccessfulStatus().equals(Status.UNASSIGNED) ? WorkflowStatus.NEW : WorkflowStatus.valueOf(oldFile.getLastSuccessfulStatus().name());
|
||||
workflowStatus = oldFile.getLastSuccessfulStatus()
|
||||
.equals(Status.UNASSIGNED) ? WorkflowStatus.NEW : WorkflowStatus.valueOf(oldFile.getLastSuccessfulStatus()
|
||||
.name());
|
||||
processingStatus = ProcessingStatus.PROCESSING;
|
||||
} else {
|
||||
workflowStatus = WorkflowStatus.NEW;
|
||||
@ -689,7 +781,9 @@ public class MigrationService {
|
||||
break;
|
||||
case ERROR:
|
||||
if (oldFile.getLastSuccessfulStatus() != null) {
|
||||
workflowStatus = oldFile.getLastSuccessfulStatus().equals(Status.UNASSIGNED) ? WorkflowStatus.NEW : WorkflowStatus.valueOf(oldFile.getLastSuccessfulStatus().name());
|
||||
workflowStatus = oldFile.getLastSuccessfulStatus()
|
||||
.equals(Status.UNASSIGNED) ? WorkflowStatus.NEW : WorkflowStatus.valueOf(oldFile.getLastSuccessfulStatus()
|
||||
.name());
|
||||
processingStatus = ProcessingStatus.ERROR;
|
||||
} else {
|
||||
workflowStatus = WorkflowStatus.NEW;
|
||||
@ -698,7 +792,9 @@ public class MigrationService {
|
||||
break;
|
||||
case DELETED:
|
||||
if (oldFile.getLastSuccessfulStatus() != null) {
|
||||
workflowStatus = oldFile.getLastSuccessfulStatus().equals(Status.UNASSIGNED) ? WorkflowStatus.NEW : WorkflowStatus.valueOf(oldFile.getLastSuccessfulStatus().name());
|
||||
workflowStatus = oldFile.getLastSuccessfulStatus()
|
||||
.equals(Status.UNASSIGNED) ? WorkflowStatus.NEW : WorkflowStatus.valueOf(oldFile.getLastSuccessfulStatus()
|
||||
.name());
|
||||
processingStatus = ProcessingStatus.DELETED;
|
||||
} else {
|
||||
workflowStatus = WorkflowStatus.NEW;
|
||||
@ -723,7 +819,9 @@ public class MigrationService {
|
||||
break;
|
||||
case FULLREPROCESS:
|
||||
if (oldFile.getLastSuccessfulStatus() != null) {
|
||||
workflowStatus = oldFile.getLastSuccessfulStatus().equals(Status.UNASSIGNED) ? WorkflowStatus.NEW : WorkflowStatus.valueOf(oldFile.getLastSuccessfulStatus().name());
|
||||
workflowStatus = oldFile.getLastSuccessfulStatus()
|
||||
.equals(Status.UNASSIGNED) ? WorkflowStatus.NEW : WorkflowStatus.valueOf(oldFile.getLastSuccessfulStatus()
|
||||
.name());
|
||||
processingStatus = ProcessingStatus.FULLREPROCESS;
|
||||
} else {
|
||||
workflowStatus = WorkflowStatus.NEW;
|
||||
@ -732,7 +830,9 @@ public class MigrationService {
|
||||
break;
|
||||
case OCR_PROCESSING:
|
||||
if (oldFile.getLastSuccessfulStatus() != null) {
|
||||
workflowStatus = oldFile.getLastSuccessfulStatus().equals(Status.UNASSIGNED) ? WorkflowStatus.NEW : WorkflowStatus.valueOf(oldFile.getLastSuccessfulStatus().name());
|
||||
workflowStatus = oldFile.getLastSuccessfulStatus()
|
||||
.equals(Status.UNASSIGNED) ? WorkflowStatus.NEW : WorkflowStatus.valueOf(oldFile.getLastSuccessfulStatus()
|
||||
.name());
|
||||
processingStatus = ProcessingStatus.OCR_PROCESSING;
|
||||
} else {
|
||||
workflowStatus = WorkflowStatus.NEW;
|
||||
@ -741,7 +841,9 @@ public class MigrationService {
|
||||
break;
|
||||
case INDEXING:
|
||||
if (oldFile.getLastSuccessfulStatus() != null) {
|
||||
workflowStatus = oldFile.getLastSuccessfulStatus().equals(Status.UNASSIGNED) ? WorkflowStatus.NEW : WorkflowStatus.valueOf(oldFile.getLastSuccessfulStatus().name());
|
||||
workflowStatus = oldFile.getLastSuccessfulStatus()
|
||||
.equals(Status.UNASSIGNED) ? WorkflowStatus.NEW : WorkflowStatus.valueOf(oldFile.getLastSuccessfulStatus()
|
||||
.name());
|
||||
processingStatus = ProcessingStatus.INDEXING;
|
||||
} else {
|
||||
workflowStatus = WorkflowStatus.NEW;
|
||||
@ -970,6 +1072,35 @@ public class MigrationService {
|
||||
}
|
||||
|
||||
|
||||
@SneakyThrows
|
||||
private void migrateDigitalSignature() {
|
||||
|
||||
byte[] confTableBytes = fileManagementStorageService.getStoredObjectBytes(getMigrationId("configuration_table_v1"));
|
||||
Map<String, String> configMap = objectMapper.readValue(confTableBytes, new TypeReference<Map<String, String>>() {
|
||||
});
|
||||
|
||||
if (!configMap.containsKey("DIGITAL_SIGNATURE")) {
|
||||
return;
|
||||
}
|
||||
|
||||
var oldEncrypted = configMap.get("DIGITAL_SIGNATURE");
|
||||
|
||||
var oldSignature = objectMapper.readValue(migrationEncryptionDecryptionService.decrypt(oldEncrypted), DigitalSignatureModel.class);
|
||||
|
||||
DigitalSignatureEntity digitalSignatureEntity = DigitalSignatureEntity.builder()
|
||||
.location(oldSignature.getLocation())
|
||||
.reason(oldSignature.getReason())
|
||||
.contactInfo(oldSignature.getContactInfo())
|
||||
.certificateName(oldSignature.getCertificateName())
|
||||
.build();
|
||||
|
||||
digitalSignatureEntity.setPrivateKey(encryptionDecryptionService.encrypt(oldSignature.getPrivateKey()));
|
||||
digitalSignatureEntity.setPassword(encryptionDecryptionService.encrypt(oldSignature.getPassword()));
|
||||
digitalSignatureRepository.save(digitalSignatureEntity);
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void migrateWatermark(String dossierTemplateId, List<ConfigurationRow> configurationRows) {
|
||||
|
||||
configurationRows.stream()
|
||||
|
||||
@ -0,0 +1,22 @@
|
||||
package com.iqser.red.service.peristence.v1.server.migration.model;
|
||||
|
||||
import lombok.AccessLevel;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
||||
@AllArgsConstructor
|
||||
@Builder
|
||||
public class DigitalSignatureModel {
|
||||
|
||||
private String location;
|
||||
private String reason;
|
||||
private String contactInfo;
|
||||
private String certificateName;
|
||||
private byte[] privateKey;
|
||||
private String password;
|
||||
|
||||
}
|
||||
@ -15,6 +15,7 @@ import org.springframework.core.io.ClassPathResource;
|
||||
import com.iqser.red.service.peristence.v1.server.Application;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.AuditClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.DigitalSignatureClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.DossierAttributeClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.DossierAttributeConfigClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient;
|
||||
@ -99,6 +100,9 @@ public class MigrationTest extends AbstractPersistenceServerServiceTest {
|
||||
@Autowired
|
||||
private RedactionLogClient redactionLogClient;
|
||||
|
||||
@Autowired
|
||||
private DigitalSignatureClient digitalSignatureClient;
|
||||
|
||||
|
||||
@Test
|
||||
@SneakyThrows
|
||||
@ -197,6 +201,11 @@ public class MigrationTest extends AbstractPersistenceServerServiceTest {
|
||||
.getInputStream()
|
||||
.readAllBytes());
|
||||
|
||||
ClassPathResource confTable1Json = new ClassPathResource("files/migration/configuration_table_v1.json");
|
||||
when(fileManagementStorageService.getStoredObjectBytes(getMigrationId("configuration_table_v1"))).thenReturn(confTable1Json
|
||||
.getInputStream()
|
||||
.readAllBytes());
|
||||
|
||||
when(fileManagementStorageService.getStoredObjectBytes(String.format("rules/%s-rules.drl", "6d945ebb-604b-4781-a72b-0f07e8ceb3e6")))
|
||||
.thenReturn("Rules".getBytes(StandardCharsets.UTF_8));
|
||||
when(fileManagementStorageService.getStoredObjectBytes(String.format("rules/%s-rules.drl", "49156a1f-30cc-412f-8778-eb5bd842d709")))
|
||||
@ -290,6 +299,9 @@ public class MigrationTest extends AbstractPersistenceServerServiceTest {
|
||||
});
|
||||
assertThat(files.size()).isEqualTo(33);
|
||||
|
||||
var digitalSignature = digitalSignatureClient.getDigitalSignature();
|
||||
assertThat(digitalSignature.getCertificateName()).isNotEmpty();
|
||||
|
||||
var auditCategories = auditClient.getCategories();
|
||||
assertThat(auditCategories.size()).isEqualTo(7);
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user