From 553ee374792c740f93137738473b9113d5e69b9c Mon Sep 17 00:00:00 2001 From: deiflaender Date: Mon, 21 Feb 2022 16:59:32 +0100 Subject: [PATCH] Removed 2.5.x migration for 3.1 --- .../MigrationEncryptionDecryptionService.java | 49 - .../v1/server/migration/MigrationService.java | 1137 ----------------- .../migration/MigrationStarterService.java | 35 - .../migration/image/MigrateImageService.java | 7 +- .../v1/server/migration/model/CommentRow.java | 24 - .../migration/model/ConfigurationRow.java | 20 - .../model/DigitalSignatureModel.java | 22 - .../migration/model/DossierAttributeRow.java | 19 - .../model/DossierAttributesConfig.java | 19 - .../v1/server/migration/model/EntryRow.java | 23 - .../migration/model/FileAttributesConfig.java | 21 - .../server/migration/model/IdRemovalRow.java | 27 - .../model/ManualForceRedactionRow.java | 27 - .../model/ManualImageRecategorizationRow.java | 27 - .../model/ManualLegalBasisChangeRow.java | 29 - .../model/ManualRedactionEntryRow.java | 42 - .../migration/model/MigrationAuditModel.java | 27 - .../migration/model/MigrationComment.java | 21 - .../migration/model/MigrationDossier.java | 59 - .../model/MigrationDossierTemplate.java | 43 - .../model/MigrationDownloadDetails.java | 35 - .../model/MigrationDownloadStatus.java | 30 - .../model/MigrationFileAttributes.java | 16 - .../migration/model/MigrationFileStatus.java | 88 -- .../model/MigrationNotification.java | 32 - .../model/MigrationRedactionLog.java | 28 - .../model/MigrationRedactionLogEntry.java | 64 - .../migration/model/MigrationViewedPage.java | 19 - .../model/NewIdForDossierTemplate.java | 13 - .../v1/server/migration/model/Status.java | 5 - .../v1/server/migration/model/VersionRow.java | 20 - .../server/migration/model/VersionType.java | 27 - .../integration/tests/MigrationTest.java | 336 ----- 33 files changed, 5 insertions(+), 2386 deletions(-) delete mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/MigrationEncryptionDecryptionService.java delete mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/MigrationService.java delete mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/MigrationStarterService.java delete mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/CommentRow.java delete mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/ConfigurationRow.java delete mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/DigitalSignatureModel.java delete mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/DossierAttributeRow.java delete mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/DossierAttributesConfig.java delete mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/EntryRow.java delete mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/FileAttributesConfig.java delete mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/IdRemovalRow.java delete mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/ManualForceRedactionRow.java delete mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/ManualImageRecategorizationRow.java delete mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/ManualLegalBasisChangeRow.java delete mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/ManualRedactionEntryRow.java delete mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationAuditModel.java delete mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationComment.java delete mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationDossier.java delete mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationDossierTemplate.java delete mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationDownloadDetails.java delete mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationDownloadStatus.java delete mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationFileAttributes.java delete mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationFileStatus.java delete mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationNotification.java delete mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationRedactionLog.java delete mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationRedactionLogEntry.java delete mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationViewedPage.java delete mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/NewIdForDossierTemplate.java delete mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/Status.java delete mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/VersionRow.java delete mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/VersionType.java delete mode 100644 persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/MigrationTest.java diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/MigrationEncryptionDecryptionService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/MigrationEncryptionDecryptionService.java deleted file mode 100644 index 6b8f7f525..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/MigrationEncryptionDecryptionService.java +++ /dev/null @@ -1,49 +0,0 @@ -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); - } - - -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/MigrationService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/MigrationService.java deleted file mode 100644 index 87761c786..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/MigrationService.java +++ /dev/null @@ -1,1137 +0,0 @@ -package com.iqser.red.service.peristence.v1.server.migration; - -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.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.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.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.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.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 -@Service -@RequiredArgsConstructor -public class MigrationService { - - private static final String GLOBAL = "global"; - - private final FileManagementStorageService fileManagementStorageService; - private final ObjectMapper objectMapper; - - private final DossierTemplateRepository dossierTemplateRepository; - private final ReportTemplateRepository reportTemplateRepository; - private final DossierAttributeConfigRepository dossierAttributeConfigRepository; - private final FileAttributeConfigRepository fileAttributeConfigRepository; - private final FileAttributesGeneralConfigurationRepository fileAttributesGeneralConfigurationRepository; - private final LegalBasisMappingRepository legalBasisMappingRepository; - private final WatermarkRepository watermarkRepository; - private final ColorsRepository colorsRepository; - - private final DossierRepository dossierRepository; - private final TypeRepository typeRepository; - private final EntryRepository entryRepository; - private final FileRepository fileRepository; - - private final FileAttributeConfigPersistenceService fileAttributeConfigPersistenceService; - - private final ManualRedactionRepository manualRedactionRepository; - private final AuditRepository auditRepository; - private final NotificationRepository notificationRepository; - private final DownloadStatusRepository downloadStatusRepository; - private final RuleSetRepository ruleSetRepository; - private final ViewedPagesRepository viewedPagesRepository; - private final DossierAttributeRepository dossierAttributeRepository; - private final ForceRedactionRepository forceRedactionRepository; - private final ImageRecategorizationRepository imageRecategorizationRepository; - private final LegalBasisChangeRepository legalBasisChangeRepository; - private final RemoveRedactionRepository removeRedactionRepository; - private final CommentRepository commentRepository; - - private final StorageService storageService; - private final MigrationEncryptionDecryptionService migrationEncryptionDecryptionService; - private final EncryptionDecryptionService encryptionDecryptionService; - private final DigitalSignatureRepository digitalSignatureRepository; - - - @SneakyThrows - @Transactional - public void migrate() { - - List versions = getVersions(); - - byte[] dossierTemplateBytes = fileManagementStorageService.getStoredObjectBytes(getMigrationId("dossier_template_v2")); - List dossierTemplates = objectMapper.readValue(dossierTemplateBytes, new TypeReference>() { - }); - - byte[] configurationRowsBytes = fileManagementStorageService.getStoredObjectBytes(getMigrationId("configuration_table_v3")); - List configurationRows = objectMapper.readValue(configurationRowsBytes, new TypeReference>() { - }); - - // This is needed because fileAttributes ids are not unique in old version. - Map> fileAttributesOldIdToNewId = new HashMap<>(); - Map> dossierAttributesOldIdToNewId = new HashMap<>(); - - dossierTemplates.forEach(dossierTemplate -> { - migrateDossierTemplate(dossierTemplate); - log.info("Migrated dossierTemplates"); - addValues(dossierAttributesOldIdToNewId, migrateDossierAttributeConfiguration(dossierTemplate.getDossierTemplateId(), configurationRows)); - log.info("Migrated dossier attributes config"); - addValues(fileAttributesOldIdToNewId, migrateFileAttributeConfiguration(dossierTemplate.getDossierTemplateId(), configurationRows)); - log.info("Migrated file attributes config"); - migrateLegalBasis(dossierTemplate.getDossierTemplateId(), configurationRows, versions); - log.info("Migrated legal basis"); - migrateWatermark(dossierTemplate.getDossierTemplateId(), configurationRows); - log.info("Migrated watermark"); - migrateDefaultColors(dossierTemplate.getDossierTemplateId(), configurationRows); - log.info("Migrated default colors"); - migrateRules(dossierTemplate.getDossierTemplateId(), versions); - log.info("Migrated rules"); - - }); - - migrateDigitalSignature(); - log.info("Migrated digital signature"); - migrateReportTemplates(); - log.info("Migrated reportTemplates"); - migrateDossiers(); - log.info("Migrated dossiers"); - migrateDossiersAttributes(dossierAttributesOldIdToNewId); - log.info("Migrated dossier attributes"); - migrateDictionaryTypes(versions); - log.info("Migrated dictionary types"); - migrateFilestatusWithFileAttributes(fileAttributesOldIdToNewId); - log.info("Migrated filestatus and file attributes"); - - migrateAudit(); - log.info("Migrated audit"); - migrateNotifications(); - log.info("Migrated notifications"); - migrateDownloadStatus(); - log.info("Migrated download status"); - migrateViewedPages(); - log.info("Migrated viewed pages"); - - migrateManualAddRedactions(); - log.info("Migrated manual add redactions"); - migrateForceRedactions(); - log.info("Migrated force redactions"); - migrateImageRecategorizationRedactions(); - log.info("Migrated image recategorizations"); - migrateLegalBasisRedactions(); - log.info("Migrated Legal basis changes"); - migrateRemoveRedactions(); - log.info("Migrated remove redactions"); - migrateComments(); - log.info("Migrated comments"); - - log.info("Starting migration of redaction logs"); - migrateRedactionLogs(); - log.info("Migrated redaction logs"); - - log.info("Starting migration of dictionary entries"); - migrateDictionaryEntries(); - log.info("Migrated dictionary entries"); - - } - - - private void addValues(Map> existing, - Map> newValues) { - - newValues.entrySet().forEach(entry -> { - existing.computeIfAbsent(entry.getKey(), x -> new ArrayList<>()).addAll(entry.getValue()); - }); - } - - - private void migrateRedactionLogs() { - - List files = fileRepository.findAll(); - List dossiers = dossierRepository.findAll(); - files.stream().filter(file -> file.getHardDeletedTime() == null).forEach(file -> { - migrateRedactionLog(file); - }); - } - - - @SneakyThrows - private void migrateRedactionLog(FileEntity file) { - - try { - byte[] oldRedactionLogBytes = fileManagementStorageService.getStoredObjectBytes(StorageIdUtils.getStorageId(file.getDossierId(), file.getId(), FileType.REDACTION_LOG)); - - if (oldRedactionLogBytes == null) { - log.warn("Not redactionLog found to convert for dossierId {} and fileId {}", file.getDossierId(), file.getId()); - return; - } - var oldRedactionLog = objectMapper.readValue(oldRedactionLogBytes, MigrationRedactionLog.class); - - RedactionLog redactionLog = new RedactionLog(oldRedactionLog.getAnalysisVersion(), - file.getNumberOfAnalyses(), oldRedactionLog.getRedactionLogEntry() - .stream() - .map(r -> convertRedactionLogEntry(r, file.getId(), file.getLastProcessed(),file.getNumberOfAnalyses())) - .collect(toList()), oldRedactionLog.getLegalBasis(), oldRedactionLog.getDictionaryVersion(), oldRedactionLog - .getDossierDictionaryVersion(), oldRedactionLog.getRulesVersion(), oldRedactionLog.getLegalBasisVersion()); - - storageService.storeObject("backup/" + StorageIdUtils.getStorageId(file.getDossierId(), file.getId(), FileType.REDACTION_LOG), objectMapper - .writeValueAsBytes(oldRedactionLogBytes)); - storageService.storeObject(StorageIdUtils.getStorageId(file.getDossierId(), file.getId(), FileType.REDACTION_LOG), objectMapper - .writeValueAsBytes(redactionLog)); - } catch (StorageObjectDoesNotExist e) { - log.warn("Not redactionLog found to convert for dossierId {} and fileId {}", file.getDossierId(), file.getId()); - } - } - - - private RedactionLogEntry convertRedactionLogEntry(MigrationRedactionLogEntry oldRedactionLogEntry, String fileId, - OffsetDateTime lastProcessed, int analysisNumber) { - - return RedactionLogEntry.builder() - .id(oldRedactionLogEntry.getId()) - .type(oldRedactionLogEntry.getType()) - .value(oldRedactionLogEntry.getValue()) - .reason(oldRedactionLogEntry.getReason()) - .matchedRule(oldRedactionLogEntry.getMatchedRule()) - .legalBasis(oldRedactionLogEntry.getLegalBasis()) - .redacted(oldRedactionLogEntry.isRedacted()) - .isHint(oldRedactionLogEntry.isHint()) - .isRecommendation(oldRedactionLogEntry.isRecommendation()) - .section(oldRedactionLogEntry.getSection()) - .color(oldRedactionLogEntry.getColor()) - .positions(oldRedactionLogEntry.getPositions()) - .sectionNumber(oldRedactionLogEntry.getSectionNumber()) - .isDictionaryEntry(oldRedactionLogEntry.isDictionaryEntry()) - .textBefore(oldRedactionLogEntry.getTextBefore()) - .textAfter(oldRedactionLogEntry.getTextAfter()) - .comments(oldRedactionLogEntry.getComments() - .stream() - .map(c -> convertRedactionLogComment(c, fileId, oldRedactionLogEntry.getId())) - .collect(toList())) - .startOffset(oldRedactionLogEntry.getStartOffset()) - .endOffset(oldRedactionLogEntry.getEndOffset()) - .isImage(oldRedactionLogEntry.getType().equals("image") || oldRedactionLogEntry.isImage()) - .imageHasTransparency(oldRedactionLogEntry.isImageHasTransparency()) - .isDossierDictionaryEntry(oldRedactionLogEntry.isDictionaryEntry()) - .excluded(oldRedactionLogEntry.isExcluded()) - .changes(List.of(new Change(analysisNumber, ChangeType.ADDED, lastProcessed))) - .engines(getEngine(oldRedactionLogEntry)) - .reference(null) - .rectangle(oldRedactionLogEntry.isRectangle()) - .build(); - } - - - private Set getEngine(MigrationRedactionLogEntry oldRedactionLogEntry) { - - if (oldRedactionLogEntry.isManual()) { - return new HashSet<>(); - } - if (oldRedactionLogEntry.isDictionaryEntry() || oldRedactionLogEntry.isDossierDictionaryEntry()) { - return Set.of(Engine.DICTIONARY); - } - return Set.of(Engine.RULE); - } - - - private Comment convertRedactionLogComment(MigrationComment oldComment, String fileId, String annotationId) { - - return Comment.builder() - .fileId(fileId) - .annotationId(annotationId) - .date(oldComment.getDate()) - .text(oldComment.getText()) - .user(oldComment.getUser()) - .softDeletedTime(null) // TODO not sure if needed. - .build(); - } - - - private void migrateDossierTemplate(MigrationDossierTemplate dossierTemplate) { - - var converted = DossierTemplateEntity.builder() - .id(dossierTemplate.getDossierTemplateId()) - .name(dossierTemplate.getName()) - .description(dossierTemplate.getDescription()) - .dateAdded(dossierTemplate.getDateAdded()) - .dateModified(dossierTemplate.getDateModified()) - .createdBy(dossierTemplate.getCreatedBy()) - .modifiedBy(dossierTemplate.getModifiedBy()) - .validFrom(dossierTemplate.getValidFrom()) - .validTo(dossierTemplate.getValidTo()) - .softDeleteTime(dossierTemplate.isDeleted() ? OffsetDateTime.now() - .truncatedTo(ChronoUnit.MILLIS) : null) - .downloadFileTypes(dossierTemplate.getDownloadFileTypes()) - .build(); - - dossierTemplateRepository.save(converted); - } - - - @SneakyThrows - private void migrateViewedPages() { - - byte[] versionBytes = fileManagementStorageService.getStoredObjectBytes(getMigrationId("viewed_pages_v2")); - List viewedPages = objectMapper.readValue(versionBytes, new TypeReference>() { - }); - - viewedPages.forEach(old -> { - var viewedPage = new ViewedPageEntity(); - viewedPage.setViewedTime(OffsetDateTime.now()); - viewedPage.setId(new ViewedPageEntity.ViewedPageId(old.getFileId(), old.getPage(), old.getUserId())); - viewedPage.setFile(fileRepository.getOne(old.getFileId())); - viewedPagesRepository.save(viewedPage); - }); - } - - - @SneakyThrows - private List getVersions() { - - byte[] versionBytes = fileManagementStorageService.getStoredObjectBytes(getMigrationId("version_table_v4")); - List versions = objectMapper.readValue(versionBytes, new TypeReference>() { - }); - - return versions; - } - - - @SneakyThrows - private void migrateDownloadStatus() { - - byte[] downloadsBytes = fileManagementStorageService.getStoredObjectBytes(getMigrationId("download_status_v3")); - List downloads = objectMapper.readValue(downloadsBytes, new TypeReference>() { - }); - - downloads.forEach(download -> { - DownloadStatusEntity downloadStatus = new DownloadStatusEntity(); - downloadStatus.setUserId(download.getUserId()); - downloadStatus.setStorageId(download.getStorageId()); - downloadStatus.setFilename(download.getFilename()); - downloadStatus.setMimeType(download.getMimeType()); - downloadStatus.setDossier(dossierRepository.getOne(download.getDossierId())); - downloadStatus.setCreationDate(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)); - downloadStatus.setFiles(fileRepository.findAllById(download.getDownloadDetails().getFileIds())); - downloadStatus.setDownloadFileTypes(new HashSet<>(download.getDownloadDetails().getDownloadFileTypes())); - downloadStatus.setStatus(download.getStatus()); - downloadStatus.setFileSize(download.getFileSize()); - downloadStatus.setLastDownload(download.getLastDownload()); - - downloadStatusRepository.save(downloadStatus); - }); - - } - - - private void migrateRules(String dossierTemplateId, List versions) { - - var versionOptional = versions.stream() - .filter(versionRow -> versionRow.getDossierTemplateId() - .equals(dossierTemplateId) && versionRow.getVersionType() == VersionType.RULE.ordinal()) - .findFirst(); - - if (!versionOptional.isPresent()) { - log.warn("no rules version found for dossier template {}", dossierTemplateId); - return; - } - var version = versionOptional.get().getVersion(); - - String rules = new String(fileManagementStorageService.getStoredObjectBytes(String.format("rules/%s-rules.drl", dossierTemplateId))); - RuleSetEntity ruleSet = new RuleSetEntity(); - ruleSet.setDossierTemplateId(dossierTemplateId); - ruleSet.setValue(rules); - ruleSet.setVersion(version); - - ruleSetRepository.save(ruleSet); - } - - - @SneakyThrows - private void migrateAudit() { - - byte[] addRedactionBytes = fileManagementStorageService.getStoredObjectBytes(getMigrationId("audit_record_v2")); - List audits = objectMapper.readValue(addRedactionBytes, new TypeReference>() { - }); - - audits.forEach(audit -> { - AuditEntity converted = AuditEntity.builder() - .recordDate(audit.getRecordDate()) - .objectId(audit.getObjectId()) - .category(audit.getCategory()) - .userId(audit.getUserId()) - .message(audit.getMessage()) - .details(audit.getDetails()) - .build(); - auditRepository.save(converted); - }); - - } - - - @SneakyThrows - private void migrateNotifications() { - - byte[] notificationsBytes = fileManagementStorageService.getStoredObjectBytes(getMigrationId("notification_v1")); - List notifications = objectMapper.readValue(notificationsBytes, new TypeReference>() { - }); - - notifications.forEach(notification -> { - var converted = NotificationEntity.builder() - .userId(notification.getUserId()) - .notificationType(notification.getNotificationType()) - .issuerId(notification.getIssuerId()) - .creationDate(notification.getCreationDate()) - .seenDate(notification.getSeenDate()) - .readDate(notification.getReadDate()) - .softDeleted(notification.getSoftDeleted()) - .target(notification.getTarget()) - .build(); - notificationRepository.save(converted); - }); - } - - - @SneakyThrows - private void migrateForceRedactions() { - - byte[] forceRedactionBytes = fileManagementStorageService.getStoredObjectBytes(getMigrationId("manual_force_redaction_v3")); - List forceRedactions = objectMapper.readValue(forceRedactionBytes, new TypeReference>() { - }); - - forceRedactions.forEach(forceRedaction -> { - - var file = fileRepository.getById(forceRedaction.getFileId()); - - ManualForceRedactionEntity manualForceRedaction = ManualForceRedactionEntity.builder() - .id(new AnnotationEntityId(forceRedaction.getId(), forceRedaction.getFileId())) - .user(forceRedaction.getUser()) - .status(forceRedaction.getStatus()) - .legalBasis(forceRedaction.getLegalBasis()) - .requestDate(forceRedaction.getRequestDate()) - .processedDate(forceRedaction.getProcessedDate()) - .softDeletedTime(forceRedaction.getSoftDeletedTime()) - .fileStatus(file) - .build(); - - forceRedactionRepository.save(manualForceRedaction); - - }); - } - - - @SneakyThrows - private void migrateImageRecategorizationRedactions() { - - byte[] forceRedactionBytes = fileManagementStorageService.getStoredObjectBytes(getMigrationId("manual_image_recategorization_v3")); - List imageRedactions = objectMapper.readValue(forceRedactionBytes, new TypeReference>() { - }); - - imageRedactions.forEach(redaction -> { - - var file = fileRepository.getById(redaction.getFileId()); - var dossier = dossierRepository.getById(file.getDossierId()); - - var manualImageRecategorization = ManualImageRecategorizationEntity.builder() - .id(new AnnotationEntityId(redaction.getId(), redaction.getFileId())) - .user(redaction.getUser()) - .status(redaction.getStatus()) - .typeId(toTypeId(redaction.getType(), dossier.getDossierTemplateId(), null)) - .requestDate(redaction.getRequestDate()) - .processedDate(redaction.getProcessedDate()) - .softDeletedTime(redaction.getSoftDeletedTime()) - .fileStatus(file) - - .build(); - - imageRecategorizationRepository.save(manualImageRecategorization); - - }); - } - - - @SneakyThrows - private void migrateLegalBasisRedactions() { - - byte[] forceRedactionBytes = fileManagementStorageService.getStoredObjectBytes(getMigrationId("manual_legal_basis_change_v3")); - List legalBasisRedactions = objectMapper.readValue(forceRedactionBytes, new TypeReference>() { - }); - - legalBasisRedactions.forEach(redaction -> { - - var file = fileRepository.getById(redaction.getFileId()); - - ManualLegalBasisChangeEntity manualLegalBasisChange = ManualLegalBasisChangeEntity.builder() - .id(new AnnotationEntityId(redaction.getId(), redaction.getFileId())) - .user(redaction.getUser()) - .status(redaction.getStatus()) - .section(redaction.getSection()) - .value(redaction.getValue()) - .legalBasis(redaction.getLegalBasis()) - .requestDate(redaction.getRequestDate()) - .processedDate(redaction.getProcessedDate()) - .softDeletedTime(redaction.getSoftDeletedTime()) - .fileStatus(file) - .build(); - - legalBasisChangeRepository.save(manualLegalBasisChange); - - }); - } - - - @SneakyThrows - private void migrateRemoveRedactions() { - - byte[] removeRedactionBytes = fileManagementStorageService.getStoredObjectBytes(getMigrationId("manual_redaction_remove_v2")); - List removeRedactions = objectMapper.readValue(removeRedactionBytes, new TypeReference>() { - }); - - removeRedactions.forEach(redaction -> { - - var file = fileRepository.getById(redaction.getFileId()); - - IdRemovalEntity idRemoval = IdRemovalEntity.builder() - .id(new AnnotationEntityId(redaction.getId(), redaction.getFileId())) - .user(redaction.getUser()) - .status(redaction.getStatus()) - .removeFromDictionary(redaction.isRemoveFromDictionary()) - .requestDate(redaction.getRequestDate()) - .processedDate(redaction.getProcessedDate()) - .softDeletedTime(redaction.getSoftDeletedTime()) - .fileStatus(file) - .build(); - - removeRedactionRepository.save(idRemoval); - - }); - } - - - @SneakyThrows - private void migrateComments() { - - byte[] commentsBytes = fileManagementStorageService.getStoredObjectBytes(getMigrationId("manual_redaction_comments_v3")); - List comments = objectMapper.readValue(commentsBytes, new TypeReference>() { - }); - - comments.forEach(comment -> { - - var commentEntity = CommentEntity.builder() - .text(comment.getText()) - .fileId(comment.getFileId()) - .annotationId(comment.getAnnotationId()) - .user(comment.getUser()) - .date(comment.getDate()) - .softDeletedTime(comment.getSoftDeletedTime()) - .build(); - - commentRepository.save(commentEntity); - - }); - } - - - @SneakyThrows - private void migrateManualAddRedactions() { - - byte[] addRedactionBytes = fileManagementStorageService.getStoredObjectBytes(getMigrationId("manual_redaction_annotations_v5")); - List addRedactions = objectMapper.readValue(addRedactionBytes, new TypeReference>() { - }); - - addRedactions.forEach(addRedaction -> { - - var file = fileRepository.getById(addRedaction.getFileId()); -var dossier = dossierRepository.findById(file.getDossierId()); - ManualRedactionEntryEntity manualRedactionEntry = ManualRedactionEntryEntity.builder() - - .id(new AnnotationEntityId(addRedaction.getId(), addRedaction.getFileId())) - .user(addRedaction.getUser()) - .typeId(toTypeId(addRedaction.getType(), dossier.get().getDossierTemplateId(), addRedaction.getType() - .equals("dossier_redaction") ? dossier.get().getDossierTemplateId() : null)) - .value(addRedaction.getValue()) - .reason(addRedaction.getReason()) - .legalBasis(addRedaction.getLegalBasis()) - .status(addRedaction.getStatus()) - .section(addRedaction.getSection()) - .rectangle(addRedaction.isRectangle()) - .addToDictionary(addRedaction.isAddToDictionary()) - .addToDossierDictionary(addRedaction.isAddToDossierDictionary()) - .requestDate(addRedaction.getRequestDate()) - .processedDate(addRedaction.getProcessedDate()) - .softDeletedTime(addRedaction.getSoftDeletedTime()) - .positions(addRedaction.getPositions().stream().map(this::convertPositions).collect(toList())) - .fileStatus(file) - .build(); - - manualRedactionRepository.save(manualRedactionEntry); - - }); - } - - - private RectangleEntity convertPositions(Rectangle rectangle) { - - return RectangleEntity.builder() - .topLeftX(rectangle.getTopLeft().getX()) - .topLeftY(rectangle.getTopLeft().getY()) - .width(rectangle.getWidth()) - .height(rectangle.getHeight()) - .page(rectangle.getPage()) - .build(); - } - - - @SneakyThrows - public void migrateDossiers() { - - byte[] dossierBytes = fileManagementStorageService.getStoredObjectBytes(getMigrationId("dossier_v4")); - List oldDossiers = objectMapper.readValue(dossierBytes, new TypeReference>() { - }); - - oldDossiers.forEach(oldDossier -> { - - var reportTemplates = reportTemplateRepository.findAllById(oldDossier.getReportTemplateIds()); - - DossierEntity dossier = DossierEntity.builder() - .id(oldDossier.getDossierId()) - .dossierName(oldDossier.getDossierName()) - .date(oldDossier.getDate()) - .lastUpdated(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)) - .description(oldDossier.getDescription()) - .status(oldDossier.getStatus()) - .ownerId(oldDossier.getOwnerId()) - .memberIds(oldDossier.getMemberIds()) - .approverIds(oldDossier.getApproverIds()) - .downloadFileTypes(oldDossier.getDownloadFileTypes()) - .watermarkEnabled(oldDossier.isWatermarkEnabled()) - .watermarkPreviewEnabled(oldDossier.isWatermarkPreviewEnabled()) - .softDeletedTime(oldDossier.getSoftDeletedTime()) - .hardDeletedTime(oldDossier.getHardDeletedTime()) - .dueDate(oldDossier.getDueDate()) - .dossierTemplate(dossierTemplateRepository.getOne(oldDossier.getDossierTemplateId())) - .dossierTemplateId(oldDossier.getDossierTemplateId()) - .reportTemplates(reportTemplates) - .build(); - - reportTemplates.forEach(r -> r.getDossiers().add(dossier)); - - dossierRepository.save(dossier); - }); - } - - - @SneakyThrows - private void migrateFilestatusWithFileAttributes( - Map> fileAttributesOldIdToNewId) { - - byte[] fileStatusBytes = fileManagementStorageService.getStoredObjectBytes(getMigrationId("file_status_v13")); - List oldFiles = objectMapper.readValue(fileStatusBytes, new TypeReference>() { - }); - - oldFiles.forEach(oldFile -> { - - WorkflowStatus workflowStatus = null; - ProcessingStatus processingStatus = null; - switch (oldFile.getStatus()) { - case UNPROCESSED: - workflowStatus = WorkflowStatus.NEW; - processingStatus = ProcessingStatus.UNPROCESSED; - break; - case REPROCESS: - if (oldFile.getLastSuccessfulStatus() != null) { - workflowStatus = oldFile.getLastSuccessfulStatus() - .equals(Status.UNASSIGNED) ? WorkflowStatus.NEW : WorkflowStatus.valueOf(oldFile.getLastSuccessfulStatus() - .name()); - processingStatus = ProcessingStatus.REPROCESS; - } else { - workflowStatus = WorkflowStatus.NEW; - processingStatus = ProcessingStatus.REPROCESS; - } - break; - case PROCESSING: - if (oldFile.getLastSuccessfulStatus() != null) { - workflowStatus = oldFile.getLastSuccessfulStatus() - .equals(Status.UNASSIGNED) ? WorkflowStatus.NEW : WorkflowStatus.valueOf(oldFile.getLastSuccessfulStatus() - .name()); - processingStatus = ProcessingStatus.PROCESSING; - } else { - workflowStatus = WorkflowStatus.NEW; - processingStatus = ProcessingStatus.PROCESSING; - } - break; - case ERROR: - if (oldFile.getLastSuccessfulStatus() != null) { - workflowStatus = oldFile.getLastSuccessfulStatus() - .equals(Status.UNASSIGNED) ? WorkflowStatus.NEW : WorkflowStatus.valueOf(oldFile.getLastSuccessfulStatus() - .name()); - processingStatus = ProcessingStatus.ERROR; - } else { - workflowStatus = WorkflowStatus.NEW; - processingStatus = ProcessingStatus.ERROR; - } - break; - case DELETED: - if (oldFile.getLastSuccessfulStatus() != null) { - workflowStatus = oldFile.getLastSuccessfulStatus() - .equals(Status.UNASSIGNED) ? WorkflowStatus.NEW : WorkflowStatus.valueOf(oldFile.getLastSuccessfulStatus() - .name()); - processingStatus = ProcessingStatus.DELETED; - } else { - workflowStatus = WorkflowStatus.NEW; - processingStatus = ProcessingStatus.DELETED; - } - break; - case UNASSIGNED: - workflowStatus = WorkflowStatus.NEW; - processingStatus = ProcessingStatus.PROCESSED; - break; - case UNDER_REVIEW: - workflowStatus = WorkflowStatus.UNDER_REVIEW; - processingStatus = ProcessingStatus.PROCESSED; - break; - case UNDER_APPROVAL: - workflowStatus = WorkflowStatus.UNDER_APPROVAL; - processingStatus = ProcessingStatus.PROCESSED; - break; - case APPROVED: - workflowStatus = WorkflowStatus.APPROVED; - processingStatus = ProcessingStatus.PROCESSED; - break; - case FULLREPROCESS: - if (oldFile.getLastSuccessfulStatus() != null) { - workflowStatus = oldFile.getLastSuccessfulStatus() - .equals(Status.UNASSIGNED) ? WorkflowStatus.NEW : WorkflowStatus.valueOf(oldFile.getLastSuccessfulStatus() - .name()); - processingStatus = ProcessingStatus.FULLREPROCESS; - } else { - workflowStatus = WorkflowStatus.NEW; - processingStatus = ProcessingStatus.FULLREPROCESS; - } - break; - case OCR_PROCESSING: - if (oldFile.getLastSuccessfulStatus() != null) { - workflowStatus = oldFile.getLastSuccessfulStatus() - .equals(Status.UNASSIGNED) ? WorkflowStatus.NEW : WorkflowStatus.valueOf(oldFile.getLastSuccessfulStatus() - .name()); - processingStatus = ProcessingStatus.OCR_PROCESSING; - } else { - workflowStatus = WorkflowStatus.NEW; - processingStatus = ProcessingStatus.OCR_PROCESSING; - } - break; - case INDEXING: - if (oldFile.getLastSuccessfulStatus() != null) { - workflowStatus = oldFile.getLastSuccessfulStatus() - .equals(Status.UNASSIGNED) ? WorkflowStatus.NEW : WorkflowStatus.valueOf(oldFile.getLastSuccessfulStatus() - .name()); - processingStatus = ProcessingStatus.INDEXING; - } else { - workflowStatus = WorkflowStatus.NEW; - processingStatus = ProcessingStatus.INDEXING; - } - break; - } - - DossierEntity dossierEntity = dossierRepository.getOne(oldFile.getDossierId()); - - FileEntity file = FileEntity.builder() - .id(oldFile.getFileId()) - .filename(oldFile.getFilename()) - .processingStatus(processingStatus) - .workflowStatus(workflowStatus) - .numberOfPages(oldFile.getNumberOfPages()) - .added(oldFile.getAdded()) - .lastUpdated(oldFile.getLastUpdated()) - .deleted(oldFile.getDeleted()) - .lastProcessed(oldFile.getLastProcessed()) - // Some files at Syngenta have had this value reset to 0. - // Since Migration implies analysis of all files we can safely set this to 1 ( because approved files won't get reanalysed - .numberOfAnalyses(Math.max(1, oldFile.getNumberOfAnalyses())) - .assignee(oldFile.getCurrentReviewer()) - .lastApprover(workflowStatus == WorkflowStatus.APPROVED ? oldFile.getCurrentReviewer() : null) - .lastReviewer(oldFile.getLastReviewer()) - .lastManualRedaction(oldFile.getLastManualRedaction()) - .hasRedactions(oldFile.isHasRedactions()) - .hasHints(oldFile.isHasHints()) - .hasSuggestions(oldFile.isHasSuggestions()) - .hasImages(oldFile.isHasImages()) - .hasUpdates(oldFile.isHasUpdates()) - .uploader(oldFile.getUploader()) - .dictionaryVersion(oldFile.getDictionaryVersion()) - .rulesVersion(oldFile.getRulesVersion()) - .dossierDictionaryVersion(oldFile.getDossierDictionaryVersion()) - .legalBasisVersion(oldFile.getLegalBasisVersion()) - .approvalDate(oldFile.getApprovalDate()) - .lastUploaded(oldFile.getLastUploaded()) - .analysisDuration(oldFile.getAnalysisDuration()) - .lastOCRTime(oldFile.getLastOCRTime()) - .hasAnnotationComments(oldFile.isHasAnnotationComments()) - .excluded(oldFile.isExcluded()) - .hardDeletedTime(oldFile.getHardDeletedTime()) - .lastFileAttributeChange(oldFile.getLastFileAttributeChange()) - .analysisVersion(oldFile.getAnalysisVersion()) - .excludedPages(oldFile.getExcludedPages()) - .dossierId(dossierEntity.getId()) - .dossierId(oldFile.getDossierId()) - .build(); - - List convertedFileAttributes = new ArrayList<>(); - List configuration = fileAttributeConfigPersistenceService.getFileAttributes(dossierEntity.getDossierTemplateId()); - - if (oldFile.getFileAttributes() != null) { - oldFile.getFileAttributes().getAttributeIdToValue().entrySet().forEach(entry -> { - - Optional newId = fileAttributesOldIdToNewId.get(entry.getKey()) - .stream() - .filter(nId -> nId.getDossierTemplateId().equals(dossierEntity.getDossierTemplateId())) - .findFirst(); - if (newId.isEmpty()) { - return; - } - - var fa = new FileAttributeEntity(); - fa.setFileAttributeId(new FileAttributeEntity.FileAttributeEntityId()); - fa.getFileAttributeId().setFileId(file.getId()); - fa.getFileAttributeId().setFileAttributeConfigId(configuration.stream() - .filter(c -> c.getId().equals(newId.get().getNewId())) - .findAny().map(FileAttributeConfigEntity::getId) - .orElseThrow(() -> new BadRequestException("Invalid File Attribute Id"))); - fa.setValue(entry.getValue()); - convertedFileAttributes.add(fa); - }); - - file.setFileAttributes(convertedFileAttributes); - - } - - fileRepository.save(file); - }); - } - - - @SneakyThrows - private void migrateDossiersAttributes(Map> dossierAttributesOldIdToNewId) { - - byte[] dossierAttributesBytes = fileManagementStorageService.getStoredObjectBytes(getMigrationId("dossier_attributes_v1")); - List oldDossierAttributes = objectMapper.readValue(dossierAttributesBytes, new TypeReference>() { - }); - - oldDossierAttributes.forEach(oldDossierAttribute -> { - - var dossier = dossierRepository.getOne(oldDossierAttribute.getDossierId()); - var newConfigId = dossierAttributesOldIdToNewId.get(oldDossierAttribute.getDossierAttributeId()) - .stream() - .filter(d -> d.getDossierTemplateId().equals(dossier.getDossierTemplateId())) - .findFirst(); - - if (newConfigId.isPresent()) { - DossierAttributeEntity dossierAttribute = new DossierAttributeEntity(); - dossierAttribute.setId(new DossierAttributeEntity.DossierAttributeEntityId(dossier.getId(), newConfigId.get() - .getNewId())); - dossierAttribute.setValue(oldDossierAttribute.getValue()); - dossierAttributeRepository.save(dossierAttribute); - } - }); - } - - - @SneakyThrows - private void migrateDictionaryTypes(List versions) { - - byte[] typesBytes = fileManagementStorageService.getStoredObjectBytes(getMigrationId("dictionary_table_v6")); - List types = objectMapper.readValue(typesBytes, new TypeReference>() { - }); - - types.stream().forEach(typeEntity -> { - - if (typeEntity.getDossierId().equals(GLOBAL)) { - var version = versions.stream() - .filter(versionRow -> versionRow.getDossierId() - .equals(GLOBAL) && versionRow.getDossierTemplateId() - .equals(typeEntity.getDossierTemplateId()) && versionRow.getVersionType() == VersionType.DICTIONARY - .ordinal()) - .findFirst() - .get() - .getVersion(); - - typeEntity.setId(toTypeId(typeEntity.getType(), typeEntity.getDossierTemplateId(), null)); - typeEntity.setDossierTemplate(dossierTemplateRepository.getOne(typeEntity.getDossierTemplateId())); - typeEntity.setVersion(version); - typeRepository.save(typeEntity); - } else { - var version = versions.stream() - .filter(versionRow -> versionRow.getDossierId() - .equals(typeEntity.getDossierId()) && versionRow.getDossierTemplateId() - .equals(typeEntity.getDossierTemplateId()) && versionRow.getVersionType() == VersionType.DICTIONARY - .ordinal()) - .findFirst() - .get() - .getVersion(); - - typeEntity.setId(toTypeId(typeEntity.getType(), typeEntity.getDossierTemplateId(), typeEntity.getDossierId())); - typeEntity.setDossier(typeEntity.getDossierId() == null ? null : dossierRepository.getOne(typeEntity.getDossierId())); - typeEntity.setDossierTemplate(dossierTemplateRepository.getOne(typeEntity.getDossierTemplateId())); - typeEntity.setVersion(version); - typeRepository.save(typeEntity); - } - }); - } - - - @SneakyThrows - private void migrateDictionaryEntries() { - - AtomicInteger counter = new AtomicInteger(); - byte[] typesBytes = fileManagementStorageService.getStoredObjectBytes(getMigrationId("entry_table_v6")); - List entries = objectMapper.readValue(typesBytes, new TypeReference>() { - }); - - Map typeForTypeId = new HashMap<>(); - - var converted = entries.stream().map(entry -> { - - String typeId = toTypeId(entry.getType(), entry.getDossierTemplateId(), entry.getDossierId() - .equals(GLOBAL) ? null : entry.getDossierId()); - if (!typeForTypeId.containsKey(typeId)) { - typeForTypeId.put(typeId, typeRepository.getOne(typeId)); - } - - DictionaryEntryEntity newEntry = new DictionaryEntryEntity(); - newEntry.setVersion(entry.getVersion()); - newEntry.setValue(entry.getValue()); - newEntry.setType(typeForTypeId.get(typeId)); - newEntry.setDeleted(entry.isDeleted()); - - if (counter.getAndIncrement() % 1000 == 0) { - log.info("Converted {} of entries {}", counter.get(), entries.size()); - } - return newEntry; - }).collect(toList()); - - entryRepository.saveAll(converted); - } - - - @SneakyThrows - private void migrateReportTemplates() { - - byte[] reportTemplateBytes = fileManagementStorageService.getStoredObjectBytes(getMigrationId("report_template_table_v4")); - List reportTemplates = objectMapper.readValue(reportTemplateBytes, new TypeReference>() { - }); - - reportTemplates.forEach(reportTemplateEntity -> { - var dossierTemplate = dossierTemplateRepository.getOne(reportTemplateEntity.getDossierTemplateId()); - reportTemplateEntity.setDossierTemplate(dossierTemplate); - reportTemplateEntity.setDossierTemplateId(null); - reportTemplateRepository.save(reportTemplateEntity); - dossierTemplateRepository.save(dossierTemplate); - }); - } - - - private void migrateDefaultColors(String dossierTemplateId, List configurationRows) { - - configurationRows.stream() - .filter(r -> r.getDossierTemplateId().equals(dossierTemplateId) && r.getKey().equals("colors")) - .forEach(configurationRow -> { - try { - var colors = objectMapper.readValue(configurationRow.getValue(), ColorsEntity.class); - - colors.setDossierTemplateId(dossierTemplateId); - colorsRepository.save(colors); - - } catch (JsonProcessingException e) { - throw new MigrationException("Could not migrate default colors"); - } - }); - } - - - @SneakyThrows - private void migrateDigitalSignature() { - - byte[] confTableBytes = fileManagementStorageService.getStoredObjectBytes(getMigrationId("configuration_table_v1")); - Map configMap = objectMapper.readValue(confTableBytes, new TypeReference>() { - }); - - 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 configurationRows) { - - configurationRows.stream() - .filter(r -> r.getDossierTemplateId().equals(dossierTemplateId) && r.getKey().equals("PDF_WATERMARK")) - .forEach(configurationRow -> { - try { - var watermark = objectMapper.readValue(configurationRow.getValue(), WatermarkEntity.class); - - watermark.setDossierTemplateId(dossierTemplateId); - watermarkRepository.save(watermark); - - } catch (JsonProcessingException e) { - throw new MigrationException("Could not migrate watermark"); - } - }); - } - - - private void migrateLegalBasis(String dossierTemplateId, List configurationRows, - List versions) { - - configurationRows.stream() - .filter(r -> r.getDossierTemplateId().equals(dossierTemplateId) && r.getKey().equals("legalBasis")) - .forEach(configurationRow -> { - try { - List legalBasisEntities = objectMapper.readValue(configurationRow.getValue(), new TypeReference>() { - }); - - LegalBasisMappingEntity legalBasisMappingEntity = LegalBasisMappingEntity.builder() - .dossierTemplateId(dossierTemplateId) - .version(versions.stream() - .filter(versionRow -> versionRow.getDossierTemplateId() - .equals(dossierTemplateId) && versionRow.getVersionType() == VersionType.LEGAL_BASIS - .ordinal()) - .findFirst() - .get() - .getVersion()) - .legalBasis(legalBasisEntities) - .build(); - - legalBasisMappingRepository.save(legalBasisMappingEntity); - - } catch (JsonProcessingException e) { - throw new MigrationException("Could not migrate dossier attributes config"); - } - }); - } - - - private Map> migrateDossierAttributeConfiguration(String dossierTemplateId, - List configurationRows) { - - Map> oldIdToNewId = new HashMap<>(); - - configurationRows.stream() - .filter(r -> r.getDossierTemplateId().equals(dossierTemplateId) && r.getKey() - .equals("dossierAttributes")) - .forEach(configurationRow -> { - try { - var dossierAttributeConfig = objectMapper.readValue(configurationRow.getValue(), DossierAttributesConfig.class); - dossierAttributeConfig.getDossierAttributeConfigs().forEach(dossierAttributeConfigEntity -> { - - String newId = UUID.randomUUID().toString(); - oldIdToNewId.computeIfAbsent(dossierAttributeConfigEntity.getId(), x -> new ArrayList<>()) - .add(new NewIdForDossierTemplate(newId, dossierTemplateId)); - - dossierAttributeConfigEntity.setId(newId); - var dossierTemplate = dossierTemplateRepository.getOne(dossierTemplateId); - dossierAttributeConfigEntity.setDossierTemplate(dossierTemplate); - dossierAttributeConfigRepository.save(dossierAttributeConfigEntity); - dossierTemplateRepository.save(dossierTemplate); - }); - - } catch (JsonProcessingException e) { - throw new MigrationException("Could not migrate dossier attributes config"); - } - }); - return oldIdToNewId; - } - - - private Map> migrateFileAttributeConfiguration(String dossierTemplateId, - List configurationRows) { - - Map> oldIdToNewId = new HashMap<>(); - - configurationRows.stream() - .filter(r -> r.getDossierTemplateId().equals(dossierTemplateId) && r.getKey().equals("fileAttributes")) - .forEach(configurationRow -> { - try { - var dossierTemplate = dossierTemplateRepository.getOne(dossierTemplateId); - var fileAttributesConfig = objectMapper.readValue(configurationRow.getValue(), FileAttributesConfig.class); - FileAttributesGeneralConfigurationEntity fileAttributesGeneralConfigurationEntity = FileAttributesGeneralConfigurationEntity - .builder() - .dossierTemplateId(dossierTemplateId) - .filenameMappingColumnHeaderName(fileAttributesConfig.getFilenameMappingColumnHeaderName()) - .delimiter(fileAttributesConfig.getDelimiter()) - .dossierTemplate(dossierTemplate) - .build(); - fileAttributesGeneralConfigurationRepository.save(fileAttributesGeneralConfigurationEntity); - - fileAttributesConfig.getFileAttributeConfigs().forEach(fileAttributeConfigEntity -> { - - String newId = UUID.randomUUID().toString(); - oldIdToNewId.computeIfAbsent(fileAttributeConfigEntity.getId(), x -> new ArrayList<>()) - .add(new NewIdForDossierTemplate(newId, dossierTemplateId)); - - fileAttributeConfigEntity.setId(newId); - fileAttributeConfigEntity.setDossierTemplate(dossierTemplate); - fileAttributeConfigRepository.save(fileAttributeConfigEntity); - }); - - dossierTemplateRepository.save(dossierTemplate); - - } catch (JsonProcessingException e) { - throw new MigrationException("Could not migrate file attributes config"); - } - }); - - return oldIdToNewId; - } - - - private String getMigrationId(String tableName) { - - return "migration/" + tableName + ".json"; - } - -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/MigrationStarterService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/MigrationStarterService.java deleted file mode 100644 index 5348ebc52..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/MigrationStarterService.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.iqser.red.service.peristence.v1.server.migration; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.context.event.ApplicationReadyEvent; -import org.springframework.context.ApplicationContext; -import org.springframework.context.event.EventListener; -import org.springframework.stereotype.Service; - -import com.iqser.red.service.peristence.v1.server.settings.FileManagementServiceSettings; - -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; - -@Slf4j -@Service -@RequiredArgsConstructor -public class MigrationStarterService { - - // This is a seperate class because exit 0 causes rollback if the method is @Transactional. - - private final MigrationService migrationService; - private final FileManagementServiceSettings settings; - private final ApplicationContext ctx; - - - @EventListener(ApplicationReadyEvent.class) - public void runMigration() { - - if (settings.isMigrateOnly()) { - migrationService.migrate(); - System.exit(SpringApplication.exit(ctx, () -> 0)); - } - } - -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/image/MigrateImageService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/image/MigrateImageService.java index ab1dcce0a..6d9676338 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/image/MigrateImageService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/image/MigrateImageService.java @@ -14,6 +14,8 @@ import org.springframework.stereotype.Service; import java.util.List; +import javax.transaction.Transactional; + @Slf4j @Service @RequiredArgsConstructor @@ -25,6 +27,7 @@ public class MigrateImageService { @SneakyThrows + @Transactional public void migrateImagesFiles() { List files = fileRepository.findAll(); @@ -50,7 +53,7 @@ public class MigrateImageService { ImageMetadata imageMetadata = new ImageMetadata(); Classification classification = new Classification(); - classification.setLabel(entry.getType()); + classification.setLabel(entry.getType().equals("ocr") || entry.getType().equals("image") ? "other" : entry.getType()); imageMetadata.setClassification(classification); Position position = new Position(); @@ -65,7 +68,7 @@ public class MigrateImageService { imageMetadata.setGeometry(geometry); Filters filters = new Filters(); - filters.setAllPassed(!entry.getType().equals("image")); + filters.setAllPassed(!entry.getType().equals("ocr") && !entry.getType().equals("image")); imageMetadata.setFilters(filters); imageServiceResponse.getImageMetadata().add(imageMetadata); diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/CommentRow.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/CommentRow.java deleted file mode 100644 index a211f3075..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/CommentRow.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.iqser.red.service.peristence.v1.server.migration.model; - -import java.time.OffsetDateTime; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@Builder -@AllArgsConstructor -@NoArgsConstructor -public class CommentRow { - - private String id; - private OffsetDateTime date; - private String text; - private String user; - - private OffsetDateTime softDeletedTime; - private String fileId; - private String annotationId; -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/ConfigurationRow.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/ConfigurationRow.java deleted file mode 100644 index 3bb6894d7..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/ConfigurationRow.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.iqser.red.service.peristence.v1.server.migration.model; - -import java.io.Serializable; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@Builder -@AllArgsConstructor -@NoArgsConstructor -public class ConfigurationRow implements Serializable { - - private String dossierTemplateId; - public String key; - public String value; - -} \ No newline at end of file diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/DigitalSignatureModel.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/DigitalSignatureModel.java deleted file mode 100644 index e79357ae7..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/DigitalSignatureModel.java +++ /dev/null @@ -1,22 +0,0 @@ -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; - -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/DossierAttributeRow.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/DossierAttributeRow.java deleted file mode 100644 index 75c844911..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/DossierAttributeRow.java +++ /dev/null @@ -1,19 +0,0 @@ -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 -@Builder -@AllArgsConstructor -@NoArgsConstructor(access = AccessLevel.PRIVATE) -public class DossierAttributeRow { - - private String dossierAttributeId; - private String value; - private String dossierId; - -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/DossierAttributesConfig.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/DossierAttributesConfig.java deleted file mode 100644 index fa8e92829..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/DossierAttributesConfig.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.iqser.red.service.peristence.v1.server.migration.model; - -import java.util.ArrayList; -import java.util.List; - -import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierAttributeConfigEntity; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@NoArgsConstructor -@AllArgsConstructor -public class DossierAttributesConfig { - - private List dossierAttributeConfigs = new ArrayList<>(); - -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/EntryRow.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/EntryRow.java deleted file mode 100644 index 56170f190..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/EntryRow.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.iqser.red.service.peristence.v1.server.migration.model; - -import java.io.Serializable; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@Builder -@AllArgsConstructor -@NoArgsConstructor -public class EntryRow implements Serializable { - - private String dossierTemplateId; - private String dossierId; - private String type; - private String value; - private long version; - private boolean deleted; - -} \ No newline at end of file diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/FileAttributesConfig.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/FileAttributesConfig.java deleted file mode 100644 index 32f6e9fb8..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/FileAttributesConfig.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.iqser.red.service.peristence.v1.server.migration.model; - -import java.util.ArrayList; -import java.util.List; - -import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileAttributeConfigEntity; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@NoArgsConstructor -@AllArgsConstructor -public class FileAttributesConfig { - - private String filenameMappingColumnHeaderName; - private String delimiter; - private List fileAttributeConfigs = new ArrayList<>(); - -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/IdRemovalRow.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/IdRemovalRow.java deleted file mode 100644 index f7eedcada..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/IdRemovalRow.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.iqser.red.service.peristence.v1.server.migration.model; - -import java.time.OffsetDateTime; - -import com.iqser.red.service.persistence.service.v1.api.model.annotations.AnnotationStatus; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@Builder -@AllArgsConstructor -@NoArgsConstructor -public class IdRemovalRow { - - private String id; - private String user; - private AnnotationStatus status; - private boolean removeFromDictionary; - private OffsetDateTime requestDate; - private OffsetDateTime processedDate; - private OffsetDateTime softDeletedTime; - private String fileId; - -} \ No newline at end of file diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/ManualForceRedactionRow.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/ManualForceRedactionRow.java deleted file mode 100644 index 3444bbc05..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/ManualForceRedactionRow.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.iqser.red.service.peristence.v1.server.migration.model; - -import java.time.OffsetDateTime; - -import com.iqser.red.service.persistence.service.v1.api.model.annotations.AnnotationStatus; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@Builder -@AllArgsConstructor -@NoArgsConstructor -public class ManualForceRedactionRow { - - private String id; - private String user; - private AnnotationStatus status; - private String legalBasis; - private OffsetDateTime requestDate; - private OffsetDateTime processedDate; - private OffsetDateTime softDeletedTime; - private String fileId; - -} \ No newline at end of file diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/ManualImageRecategorizationRow.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/ManualImageRecategorizationRow.java deleted file mode 100644 index 3f8e2d72a..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/ManualImageRecategorizationRow.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.iqser.red.service.peristence.v1.server.migration.model; - -import java.time.OffsetDateTime; - -import com.iqser.red.service.persistence.service.v1.api.model.annotations.AnnotationStatus; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@Builder -@AllArgsConstructor -@NoArgsConstructor -public class ManualImageRecategorizationRow { - - private String id; - private String user; - private AnnotationStatus status; - private String type; - private OffsetDateTime requestDate; - private OffsetDateTime processedDate; - private OffsetDateTime softDeletedTime; - private String fileId; - -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/ManualLegalBasisChangeRow.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/ManualLegalBasisChangeRow.java deleted file mode 100644 index 1b4d25948..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/ManualLegalBasisChangeRow.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.iqser.red.service.peristence.v1.server.migration.model; - -import java.time.OffsetDateTime; - -import com.iqser.red.service.persistence.service.v1.api.model.annotations.AnnotationStatus; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@Builder -@AllArgsConstructor -@NoArgsConstructor -public class ManualLegalBasisChangeRow { - - private String id; - private String user; - private AnnotationStatus status; - private String legalBasis; - private String section; - private String value; - private OffsetDateTime requestDate; - private OffsetDateTime processedDate; - private OffsetDateTime softDeletedTime; - private String fileId; - -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/ManualRedactionEntryRow.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/ManualRedactionEntryRow.java deleted file mode 100644 index 72e0f0911..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/ManualRedactionEntryRow.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.iqser.red.service.peristence.v1.server.migration.model; - -import java.time.OffsetDateTime; -import java.util.ArrayList; -import java.util.List; - -import com.iqser.red.service.persistence.service.v1.api.model.annotations.AnnotationStatus; -import com.iqser.red.service.redaction.v1.model.Rectangle; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@Builder -@AllArgsConstructor -@NoArgsConstructor -public class ManualRedactionEntryRow { - - private String id; - private String user; - private String type; - private String value; - private String reason; - private String legalBasis; - - private String section; - private boolean rectangle; - - @Builder.Default - private List positions = new ArrayList<>(); - private AnnotationStatus status; - private boolean addToDictionary; - private boolean addToDossierDictionary; - - private OffsetDateTime requestDate; - private OffsetDateTime processedDate; - private OffsetDateTime softDeletedTime; - private String fileId; - -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationAuditModel.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationAuditModel.java deleted file mode 100644 index 7450a975b..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationAuditModel.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.iqser.red.service.peristence.v1.server.migration.model; - -import java.time.OffsetDateTime; -import java.util.Map; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class MigrationAuditModel { - - private String recordId; - private OffsetDateTime recordDate; - - private String objectId; - private String category; - private String userId; - private String message; - - private Map details; - -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationComment.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationComment.java deleted file mode 100644 index 2889998b1..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationComment.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.iqser.red.service.peristence.v1.server.migration.model; - -import java.time.OffsetDateTime; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@Builder -@AllArgsConstructor -@NoArgsConstructor -public class MigrationComment { - - private String id; - private OffsetDateTime date; - private String text; - private String user; - -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationDossier.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationDossier.java deleted file mode 100644 index aecf7a01a..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationDossier.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.iqser.red.service.peristence.v1.server.migration.model; - -import java.time.OffsetDateTime; -import java.util.HashSet; -import java.util.Set; - -import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DownloadFileType; -import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatus; -import com.iqser.red.service.redaction.report.v1.api.model.ReportType; - -import lombok.Builder; -import lombok.Data; -import lombok.NonNull; - -@Data -@Builder -public class MigrationDossier { - - private String dossierId; - - private String dossierTemplateId; - - @NonNull - private String dossierName; - - private OffsetDateTime date; - - private String description; - - private DossierStatus status; - - private String ownerId; - - @Builder.Default - private Set memberIds = new HashSet<>(); - - @Builder.Default - private Set approverIds = new HashSet<>(); - - @Builder.Default - private Set downloadFileTypes = new HashSet<>(); - - @Builder.Default - private Set reportTypes = new HashSet<>(); - - private OffsetDateTime dueDate; - - @Builder.Default - private Set reportTemplateIds = new HashSet<>(); - - private boolean watermarkEnabled; - - private boolean watermarkPreviewEnabled; - - private OffsetDateTime softDeletedTime; - - private OffsetDateTime hardDeletedTime; - -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationDossierTemplate.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationDossierTemplate.java deleted file mode 100644 index b8a9fd0ba..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationDossierTemplate.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.iqser.red.service.peristence.v1.server.migration.model; - -import java.time.OffsetDateTime; -import java.util.HashSet; -import java.util.Set; - -import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DownloadFileType; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@Builder -@AllArgsConstructor -@NoArgsConstructor -public class MigrationDossierTemplate { - - private String dossierTemplateId; - - private String name; - - private String description; - - private OffsetDateTime dateAdded; - - private OffsetDateTime dateModified; - - private String createdBy; - - private String modifiedBy; - - private OffsetDateTime validFrom; - - private OffsetDateTime validTo; - - @Builder.Default - private Set downloadFileTypes = new HashSet<>(); - - private boolean deleted; - -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationDownloadDetails.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationDownloadDetails.java deleted file mode 100644 index 82d29618c..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationDownloadDetails.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.iqser.red.service.peristence.v1.server.migration.model; - -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DownloadFileType; -import com.iqser.red.service.redaction.report.v1.api.model.ReportType; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@Builder -@AllArgsConstructor -@NoArgsConstructor -public class MigrationDownloadDetails { - - @Builder.Default - private List fileIds = new ArrayList<>(); - - @Builder.Default - private Set reportTypes = new HashSet<>(); - - @Builder.Default - private Set downloadFileTypes = new HashSet<>(); - - @Builder.Default - private Set reportTemplateIds = new HashSet<>(); - - -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationDownloadStatus.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationDownloadStatus.java deleted file mode 100644 index 623dce1bf..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationDownloadStatus.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.iqser.red.service.peristence.v1.server.migration.model; - -import java.time.OffsetDateTime; - -import com.iqser.red.service.persistence.service.v1.api.model.download.DownloadStatusValue; - -import lombok.AccessLevel; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@Builder -@AllArgsConstructor -@NoArgsConstructor(access = AccessLevel.PRIVATE) -public class MigrationDownloadStatus { - - private String userId; - private String storageId; - private String dossierId; - private String filename; - private String mimeType; - private DownloadStatusValue status; - private OffsetDateTime creationDate; - private OffsetDateTime lastDownload; - private MigrationDownloadDetails downloadDetails; - private long fileSize; - -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationFileAttributes.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationFileAttributes.java deleted file mode 100644 index ee90a45dd..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationFileAttributes.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.iqser.red.service.peristence.v1.server.migration.model; - -import java.util.HashMap; -import java.util.Map; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@NoArgsConstructor -@AllArgsConstructor -public class MigrationFileAttributes { - - Map attributeIdToValue = new HashMap<>(); -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationFileStatus.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationFileStatus.java deleted file mode 100644 index 2fcd00c02..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationFileStatus.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.iqser.red.service.peristence.v1.server.migration.model; - -import java.time.OffsetDateTime; -import java.util.Set; - -import lombok.AccessLevel; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@Builder -@AllArgsConstructor -@NoArgsConstructor(access = AccessLevel.PRIVATE) -public class MigrationFileStatus { - - private String dossierId; - - private String fileId; - - private String filename; - - private Status status; - - private Status lastSuccessfulStatus; - - private int numberOfPages; - - private OffsetDateTime added; - - private OffsetDateTime lastUpdated; - - private OffsetDateTime deleted; - - private OffsetDateTime lastProcessed; - - private int numberOfAnalyses; - - private String currentReviewer; - - private String lastReviewer; - - private OffsetDateTime lastManualRedaction; - - private boolean hasRedactions; - - private boolean hasHints; - - private boolean hasSuggestions; - - private boolean hasImages; - - private boolean hasUpdates; - - private String uploader; - - private long dictionaryVersion; - - private long rulesVersion; - - private long dossierDictionaryVersion; - - private long legalBasisVersion; - - private OffsetDateTime approvalDate; - - private OffsetDateTime lastUploaded; - - private long analysisDuration; - - private MigrationFileAttributes fileAttributes; - - private OffsetDateTime lastOCRTime; - - private boolean hasAnnotationComments; - - private boolean excluded; - - private Set excludedPages; - - private OffsetDateTime hardDeletedTime; - - private OffsetDateTime lastFileAttributeChange; - - private int analysisVersion; - -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationNotification.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationNotification.java deleted file mode 100644 index b80ab7366..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationNotification.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.iqser.red.service.peristence.v1.server.migration.model; - -import java.time.OffsetDateTime; -import java.util.HashMap; -import java.util.Map; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@Builder -@AllArgsConstructor -@NoArgsConstructor -public class MigrationNotification { - - private String userId; - private String notificationId; - - private String notificationType; - private String issuerId; - - @Builder.Default - private Map target = new HashMap<>(); - - private OffsetDateTime creationDate; - private OffsetDateTime seenDate; - private OffsetDateTime readDate; - - private OffsetDateTime softDeleted; -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationRedactionLog.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationRedactionLog.java deleted file mode 100644 index 04b7105f5..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationRedactionLog.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.iqser.red.service.peristence.v1.server.migration.model; - -import java.util.List; - -import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.legalbasis.LegalBasis; - -import lombok.AllArgsConstructor; -import lombok.Data; - -@Data -@AllArgsConstructor -public class MigrationRedactionLog { - - /** - * Version 0 Redaction Logs have manual redactions merged inside them - * Version 1 Redaction Logs only contain system ( rule/dictionary ) redactions. Manual Redactions are merged in at runtime. - */ - private long analysisVersion; - - private List redactionLogEntry; - private List legalBasis; - - private long dictionaryVersion = -1; - private long dossierDictionaryVersion = -1; - private long rulesVersion = -1; - private long legalBasisVersion = -1; - -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationRedactionLogEntry.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationRedactionLogEntry.java deleted file mode 100644 index 3c4c543c4..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationRedactionLogEntry.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.iqser.red.service.peristence.v1.server.migration.model; - -import java.util.ArrayList; -import java.util.List; - -import com.iqser.red.service.persistence.service.v1.api.model.annotations.AnnotationStatus; -import com.iqser.red.service.redaction.v1.model.ManualRedactionType; -import com.iqser.red.service.redaction.v1.model.Rectangle; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; - -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -@EqualsAndHashCode -public class MigrationRedactionLogEntry { - - private String id; - private String type; - private String value; - private String reason; - private int matchedRule; - private boolean rectangle; - private String legalBasis; - private boolean redacted; - private boolean isHint; - private boolean isRecommendation; - private String section; - private float[] color; - - @Builder.Default - private List positions = new ArrayList<>(); - private int sectionNumber; - private boolean manual; - private AnnotationStatus status; - private ManualRedactionType manualRedactionType; - private String manualRedactionUserId; - private boolean isDictionaryEntry; - - private String textBefore; - private String textAfter; - - @Builder.Default - private List comments = new ArrayList<>(); - - private int startOffset; - private int endOffset; - - private boolean isImage; - private boolean imageHasTransparency; - - private boolean isDossierDictionaryEntry; - - private boolean excluded; - - private String recategorizationType; - private String legalBasisChangeValue; - -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationViewedPage.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationViewedPage.java deleted file mode 100644 index d49e8e5dc..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/MigrationViewedPage.java +++ /dev/null @@ -1,19 +0,0 @@ -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 -@Builder -@AllArgsConstructor -@NoArgsConstructor(access = AccessLevel.PRIVATE) -public class MigrationViewedPage { - - private String fileId; - private String userId; - private int page; - -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/NewIdForDossierTemplate.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/NewIdForDossierTemplate.java deleted file mode 100644 index a901dc395..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/NewIdForDossierTemplate.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.iqser.red.service.peristence.v1.server.migration.model; - -import lombok.AllArgsConstructor; -import lombok.Data; - -@Data -@AllArgsConstructor -public class NewIdForDossierTemplate { - - private String newId; - private String dossierTemplateId; - -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/Status.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/Status.java deleted file mode 100644 index e12bde898..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/Status.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.iqser.red.service.peristence.v1.server.migration.model; - -public enum Status { - UNPROCESSED, REPROCESS, PROCESSING, ERROR, DELETED, UNASSIGNED, UNDER_REVIEW, UNDER_APPROVAL, APPROVED, FULLREPROCESS, OCR_PROCESSING, INDEXING; -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/VersionRow.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/VersionRow.java deleted file mode 100644 index 5bf2f8b48..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/VersionRow.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.iqser.red.service.peristence.v1.server.migration.model; - -import java.io.Serializable; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@Builder -@AllArgsConstructor -@NoArgsConstructor -public class VersionRow implements Serializable { - - private String dossierTemplateId; - private String dossierId; - private int versionType; - private long version; -} \ No newline at end of file diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/VersionType.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/VersionType.java deleted file mode 100644 index ab80c3628..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/model/VersionType.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.iqser.red.service.peristence.v1.server.migration.model; - -import lombok.Getter; - -public enum VersionType { - RULE(0), DICTIONARY(1), LEGAL_BASIS(2); - - @Getter - private int identifier; - - VersionType(int identifier){ - this.identifier = identifier; - } - - public static VersionType forIdentifier(int identifier){ - switch(identifier){ - case 0: - return RULE; - case 1: - return DICTIONARY; - case 2: - return LEGAL_BASIS; - } - return null; - } - -} diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/MigrationTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/MigrationTest.java deleted file mode 100644 index 83b775601..000000000 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/MigrationTest.java +++ /dev/null @@ -1,336 +0,0 @@ -package com.iqser.red.service.peristence.v1.server.integration.tests; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Mockito.when; - -import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.List; - -import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileModel; -import org.junit.Ignore; -import org.junit.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.mock.mockito.MockBean; -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; -import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemplateClient; -import com.iqser.red.service.peristence.v1.server.integration.client.DownloadClient; -import com.iqser.red.service.peristence.v1.server.integration.client.FileAttributeConfigClient; -import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; -import com.iqser.red.service.peristence.v1.server.integration.client.LegalBasisClient; -import com.iqser.red.service.peristence.v1.server.integration.client.ManualRedactionClient; -import com.iqser.red.service.peristence.v1.server.integration.client.NotificationClient; -import com.iqser.red.service.peristence.v1.server.integration.client.RedactionLogClient; -import com.iqser.red.service.peristence.v1.server.integration.client.ReportTemplateClient; -import com.iqser.red.service.peristence.v1.server.integration.client.RulesClient; -import com.iqser.red.service.peristence.v1.server.integration.client.ViewedPagesClient; -import com.iqser.red.service.peristence.v1.server.integration.client.WatermarkClient; -import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; -import com.iqser.red.service.peristence.v1.server.migration.MigrationService; -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.service.v1.api.model.audit.AuditSearchRequest; -import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileType; - -import lombok.SneakyThrows; - -@Ignore -public class MigrationTest extends AbstractPersistenceServerServiceTest { - - @Autowired - private MigrationService migrationService; - - @MockBean - private FileManagementStorageService fileManagementStorageService; - - @Autowired - private DossierTemplateClient dossierTemplateClient; - - @Autowired - private ReportTemplateClient reportTemplateClient; - - @Autowired - private DossierAttributeConfigClient dossierAttributeConfigClient; - - @Autowired - private FileAttributeConfigClient fileAttributeConfigClient; - - @Autowired - private LegalBasisClient legalBasisClient; - - @Autowired - private WatermarkClient watermarkClient; - - @Autowired - private DictionaryClient dictionaryClient; - - @Autowired - private DossierClient dossierClient; - - @Autowired - private FileClient fileClient; - - @Autowired - private AuditClient auditClient; - - @Autowired - private NotificationClient notificationClient; - - @Autowired - private DownloadClient downloadClient; - - @Autowired - private RulesClient rulesClient; - - @Autowired - private ViewedPagesClient viewedPagesClient; - - @Autowired - private DossierAttributeClient dossierAttributeClient; - - @Autowired - private ManualRedactionClient manualRedactionClient; - - @Autowired - private RedactionLogClient redactionLogClient; - - @Autowired - private DigitalSignatureClient digitalSignatureClient; - - - @Test - @SneakyThrows - public void testMigration() { - - ClassPathResource dossierTemplatesJson = new ClassPathResource("files/migration/dossier_template_v2.json"); - when(fileManagementStorageService.getStoredObjectBytes(getMigrationId("dossier_template_v2"))).thenReturn(dossierTemplatesJson - .getInputStream() - .readAllBytes()); - - ClassPathResource reportTemplatesJson = new ClassPathResource("files/migration/report_template_table_v4.json"); - when(fileManagementStorageService.getStoredObjectBytes(getMigrationId("report_template_table_v4"))).thenReturn(reportTemplatesJson - .getInputStream() - .readAllBytes()); - - ClassPathResource configurationJson = new ClassPathResource("files/migration/configuration_table_v3.json"); - when(fileManagementStorageService.getStoredObjectBytes(getMigrationId("configuration_table_v3"))).thenReturn(configurationJson - .getInputStream() - .readAllBytes()); - - ClassPathResource typesJson = new ClassPathResource("files/migration/dictionary_table_v6.json"); - when(fileManagementStorageService.getStoredObjectBytes(getMigrationId("dictionary_table_v6"))).thenReturn(typesJson - .getInputStream() - .readAllBytes()); - - ClassPathResource entriesJson = new ClassPathResource("files/migration/entry_table_v6.json"); - when(fileManagementStorageService.getStoredObjectBytes(getMigrationId("entry_table_v6"))).thenReturn(entriesJson - .getInputStream() - .readAllBytes()); - - ClassPathResource dossiersJson = new ClassPathResource("files/migration/dossier_v4.json"); - when(fileManagementStorageService.getStoredObjectBytes(getMigrationId("dossier_v4"))).thenReturn(dossiersJson.getInputStream() - .readAllBytes()); - - ClassPathResource fileStatusJson = new ClassPathResource("files/migration/file_status_v13.json"); - when(fileManagementStorageService.getStoredObjectBytes(getMigrationId("file_status_v13"))).thenReturn(fileStatusJson - .getInputStream() - .readAllBytes()); - - ClassPathResource auditJson = new ClassPathResource("files/migration/audit_record_v2.json"); - when(fileManagementStorageService.getStoredObjectBytes(getMigrationId("audit_record_v2"))).thenReturn(auditJson.getInputStream() - .readAllBytes()); - - ClassPathResource notificationJson = new ClassPathResource("files/migration/notification_v1.json"); - when(fileManagementStorageService.getStoredObjectBytes(getMigrationId("notification_v1"))).thenReturn(notificationJson - .getInputStream() - .readAllBytes()); - - ClassPathResource downloadJson = new ClassPathResource("files/migration/download_status_v3.json"); - when(fileManagementStorageService.getStoredObjectBytes(getMigrationId("download_status_v3"))).thenReturn(downloadJson - .getInputStream() - .readAllBytes()); - - ClassPathResource versionsJson = new ClassPathResource("files/migration/version_table_v4.json"); - when(fileManagementStorageService.getStoredObjectBytes(getMigrationId("version_table_v4"))).thenReturn(versionsJson - .getInputStream() - .readAllBytes()); - - ClassPathResource viewedPagesJson = new ClassPathResource("files/migration/viewed_pages_v2.json"); - when(fileManagementStorageService.getStoredObjectBytes(getMigrationId("viewed_pages_v2"))).thenReturn(viewedPagesJson - .getInputStream() - .readAllBytes()); - - ClassPathResource dossierAttributesJson = new ClassPathResource("files/migration/dossier_attributes_v1.json"); - when(fileManagementStorageService.getStoredObjectBytes(getMigrationId("dossier_attributes_v1"))).thenReturn(dossierAttributesJson - .getInputStream() - .readAllBytes()); - - ClassPathResource manualAddJson = new ClassPathResource("files/migration/manual_redaction_annotations_v5.json"); - when(fileManagementStorageService.getStoredObjectBytes(getMigrationId("manual_redaction_annotations_v5"))).thenReturn(manualAddJson - .getInputStream() - .readAllBytes()); - - ClassPathResource forceJson = new ClassPathResource("files/migration/manual_force_redaction_v3.json"); - when(fileManagementStorageService.getStoredObjectBytes(getMigrationId("manual_force_redaction_v3"))).thenReturn(forceJson - .getInputStream() - .readAllBytes()); - - ClassPathResource imageRecategorizationJson = new ClassPathResource("files/migration/manual_image_recategorization_v3.json"); - when(fileManagementStorageService.getStoredObjectBytes(getMigrationId("manual_image_recategorization_v3"))).thenReturn(imageRecategorizationJson - .getInputStream() - .readAllBytes()); - - ClassPathResource manualLegalBasisChangeJson = new ClassPathResource("files/migration/manual_legal_basis_change_v3.json"); - when(fileManagementStorageService.getStoredObjectBytes(getMigrationId("manual_legal_basis_change_v3"))).thenReturn(manualLegalBasisChangeJson - .getInputStream() - .readAllBytes()); - - ClassPathResource removeRedactionsJson = new ClassPathResource("files/migration/manual_redaction_remove_v2.json"); - when(fileManagementStorageService.getStoredObjectBytes(getMigrationId("manual_redaction_remove_v2"))).thenReturn(removeRedactionsJson - .getInputStream() - .readAllBytes()); - - ClassPathResource commentsJson = new ClassPathResource("files/migration/manual_redaction_comments_v3.json"); - when(fileManagementStorageService.getStoredObjectBytes(getMigrationId("manual_redaction_comments_v3"))).thenReturn(commentsJson - .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"))) - .thenReturn("Rules".getBytes(StandardCharsets.UTF_8)); - when(fileManagementStorageService.getStoredObjectBytes(String.format("rules/%s-rules.drl", "9b7bd575-4566-4408-984f-b26da1d2616e"))) - .thenReturn("Rules".getBytes(StandardCharsets.UTF_8)); - - ClassPathResource redactionLog = new ClassPathResource("files/migration/220ab22e443c8e32d3778b0937b03170.REDACTION_LOG.json"); - when(fileManagementStorageService.getStoredObjectBytes(StorageIdUtils.getStorageId("b2c9c4e5-5382-4862-9402-5b619c41a68c", "220ab22e443c8e32d3778b0937b03170", FileType.REDACTION_LOG))) - .thenReturn(redactionLog.getInputStream().readAllBytes()); - - migrationService.migrate(); - - var allTemplates = dossierTemplateClient.getAllDossierTemplates(); - assertThat(allTemplates.size()).isEqualTo(2); - - allTemplates.forEach(dossierTemplate -> { - var reportTemplates = reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId()); - assertThat(reportTemplates.size()).isEqualTo(4); - - var dossierAttributesConfig = dossierAttributeConfigClient.getDossierAttributes(dossierTemplate.getId()); - if (dossierTemplate.getId().equals("9b7bd575-4566-4408-984f-b26da1d2616e")) { - assertThat(dossierAttributesConfig.size()).isEqualTo(1); - } - - var fileAtrributesConfig = fileAttributeConfigClient.getFileAttributeConfigs(dossierTemplate.getId()); - assertThat(fileAtrributesConfig.size()).isEqualTo(5); - - var legalBasis = legalBasisClient.getLegalBasisMapping(dossierTemplate.getId()); - if (dossierTemplate.getId().equals("9b7bd575-4566-4408-984f-b26da1d2616e")) { - assertThat(legalBasis.size()).isEqualTo(7); - } else { - assertThat(legalBasis.size()).isEqualTo(9); - } - var legalBasisVersion = legalBasisClient.getVersion(dossierTemplate.getId()); - assertThat(legalBasisVersion).isEqualTo(1); - - var watermark = watermarkClient.getWatermark(dossierTemplate.getId()); - assertThat(watermark).isNotNull(); - - var colors = dictionaryClient.getColors(dossierTemplate.getId()); - assertThat(colors).isNotNull(); - - var types = dictionaryClient.getAllTypesForDossierTemplate(dossierTemplate.getId()); - types.forEach(type -> { - var entries = dictionaryClient.getEntriesForType(type.getTypeId()); - if (dossierTemplate.getId().equals("49156a1f-30cc-412f-8778-eb5bd842d709") && type.getType() - .equals("CBI_address")) { - assertThat(entries.size()).isEqualTo(30); - } - }); - var dictionaryVersion = dictionaryClient.getVersion(dossierTemplate.getId()); - assertThat(dictionaryVersion).isGreaterThan(0); - - if (dossierTemplate.getId().equals("6d945ebb-604b-4781-a72b-0f07e8ceb3e6")) { - assertThat(types.size()).isEqualTo(6); - } else if (dossierTemplate.getId().equals("9b7bd575-4566-4408-984f-b26da1d2616e")) { - assertThat(types.size()).isEqualTo(19); - } else { - assertThat(types.size()).isEqualTo(14); - } - - var rules = rulesClient.getRules(dossierTemplate.getId()); - assertThat(rules.getValue()).isEqualTo("Rules"); - var rulesVersion = rulesClient.getVersion(dossierTemplate.getId()); - assertThat(rulesVersion).isGreaterThan(0); - }); - - var dossiers = dossierClient.getAllDossiers(false, false); - assertThat(dossiers.size()).isEqualTo(3); - dossiers.forEach(dossier -> { - var dossierTypes = dictionaryClient.getAllTypesForDossier(dossier.getId()); - assertThat(dossierTypes.size()).isEqualTo(1); - var dossierAttributes = dossierAttributeClient.getDossierAttributes(dossier.getId()); - if (dossier.getId().equals("d46267c1-bb19-44ca-8c0c-60fb5d5309c5")) { - assertThat(dossierAttributes.size()).isEqualTo(1); - } - }); - - List allFiles = new ArrayList<>(); - dossiers.forEach(dossier ->{ - var files = fileClient.getDossierStatus(dossier.getId()); - files.forEach(file -> { - var manualRedactions = manualRedactionClient.getManualRedactions(file.getDossierId(), file.getId()); - if (file.getId().equals("a7985c094cac62118c9b350461902f95")) { - assertThat(manualRedactions.getEntriesToAdd().size()).isEqualTo(1); - assertThat(manualRedactions.getForceRedactions().size()).isEqualTo(1); - assertThat(manualRedactions.getImageRecategorization().size()).isEqualTo(0); - assertThat(manualRedactions.getLegalBasisChanges().size()).isEqualTo(1); - assertThat(manualRedactions.getIdsToRemove().size()).isEqualTo(1); - assertThat(manualRedactions.getComments().size()).isEqualTo(1); - } - }); - allFiles.addAll(files); - }); - assertThat(allFiles.size()).isEqualTo(33); - - - var digitalSignature = digitalSignatureClient.getDigitalSignature(); - assertThat(digitalSignature.getCertificateName()).isNotEmpty(); - - var auditCategories = auditClient.getCategories(); - assertThat(auditCategories.size()).isEqualTo(7); - - var auditRecords = auditClient.search(AuditSearchRequest.builder().build()); - assertThat(auditRecords.getTotalHits()).isEqualTo(128); - - var notifications = notificationClient.getNotifications("abc", true); - assertThat(notifications).isEmpty(); - - var downloads = downloadClient.getDownloadStatus("f8960240-9973-42e9-9b0f-ed096ff5a018"); - assertThat(downloads.size()).isEqualTo(0); - - var viewedPages = viewedPagesClient.getViewedPages("a7985c094cac62118c9b350461902f95", "f8960240-9973-42e9-9b0f-ed096ff5a018"); - assertThat(viewedPages.size()).isEqualTo(3); - - } - - - private String getMigrationId(String tableName) { - - return "migration/" + tableName + ".json"; - } - -}