From e6f1ce3d1b685f5cb710cfec5a850aa67eb21b3b Mon Sep 17 00:00:00 2001 From: Timo Bejan Date: Fri, 18 Feb 2022 17:41:49 +0200 Subject: [PATCH] only create image info if it doesnt already exist --- .../migration/image/MigrateImageService.java | 80 ++++++++++--------- .../image/MigrateImageServiceStarter.java | 31 +++++++ .../changelog/9-migrate-images.changelog.yaml | 7 ++ 3 files changed, 79 insertions(+), 39 deletions(-) create mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/image/MigrateImageServiceStarter.java create mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/9-migrate-images.changelog.yaml 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 1c24c26fa..0447c07f8 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 @@ -1,26 +1,21 @@ package com.iqser.red.service.peristence.v1.server.migration.image; -import java.util.List; - -import org.springframework.stereotype.Service; - import com.fasterxml.jackson.databind.ObjectMapper; -import com.iqser.red.service.peristence.v1.server.migration.image.model.Classification; -import com.iqser.red.service.peristence.v1.server.migration.image.model.Filters; -import com.iqser.red.service.peristence.v1.server.migration.image.model.Geometry; -import com.iqser.red.service.peristence.v1.server.migration.image.model.ImageMetadata; -import com.iqser.red.service.peristence.v1.server.migration.image.model.ImageServiceResponse; -import com.iqser.red.service.peristence.v1.server.migration.image.model.Position; +import com.iqser.red.service.peristence.v1.server.migration.image.model.*; import com.iqser.red.service.peristence.v1.server.service.FileManagementStorageService; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileRepository; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileType; - import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; -// @Service Dont know if it will be integrated as service +import java.util.List; + +@Slf4j +@Service @RequiredArgsConstructor public class MigrateImageService { @@ -36,45 +31,52 @@ public class MigrateImageService { for (FileEntity file : files) { try { - var redactionLog = fileManagementStorageService.getRedactionLog(file.getDossierId(), file.getId()); - ImageServiceResponse imageServiceResponse = new ImageServiceResponse(); - imageServiceResponse.setFileId(file.getId()); - imageServiceResponse.setDossierId(file.getDossierId()); + try { + fileManagementStorageService.getStoredObjectBytes(file.getDossierId(), file.getId(), FileType.IMAGE_INFO); + } catch (Exception e) { + log.info("Migrating images for file: {}", file.getId()); + // images do not exist - for (var entry : redactionLog.getRedactionLogEntry()) { - if (entry.isImage() || entry.getType().equals("image")) { - ImageMetadata imageMetadata = new ImageMetadata(); + var redactionLog = fileManagementStorageService.getRedactionLog(file.getDossierId(), file.getId()); - Classification classification = new Classification(); - classification.setLabel(entry.getType()); - imageMetadata.setClassification(classification); + ImageServiceResponse imageServiceResponse = new ImageServiceResponse(); + imageServiceResponse.setFileId(file.getId()); + imageServiceResponse.setDossierId(file.getDossierId()); - Position position = new Position(); - position.setX1(entry.getPositions().get(0).getTopLeft().getX()); - position.setY1(entry.getPositions().get(0).getTopLeft().getY()); - position.setPageNumber(entry.getPositions().get(0).getPage()); - imageMetadata.setPosition(position); + for (var entry : redactionLog.getRedactionLogEntry()) { + if (entry.isImage() || entry.getType().equals("image")) { + ImageMetadata imageMetadata = new ImageMetadata(); - Geometry geometry = new Geometry(); - geometry.setWidth(entry.getPositions().get(0).getWidth()); - geometry.setHeight(entry.getPositions().get(0).getHeight()); - imageMetadata.setGeometry(geometry); + Classification classification = new Classification(); + classification.setLabel(entry.getType()); + imageMetadata.setClassification(classification); - Filters filters = new Filters(); - filters.setAllPassed(entry.getType().equals("image") ? false : true); - imageMetadata.setFilters(filters); + Position position = new Position(); + position.setX1(entry.getPositions().get(0).getTopLeft().getX()); + position.setY1(entry.getPositions().get(0).getTopLeft().getY()); + position.setPageNumber(entry.getPositions().get(0).getPage()); + imageMetadata.setPosition(position); - imageServiceResponse.getImageMetadata().add(imageMetadata); + Geometry geometry = new Geometry(); + geometry.setWidth(entry.getPositions().get(0).getWidth()); + geometry.setHeight(entry.getPositions().get(0).getHeight()); + imageMetadata.setGeometry(geometry); + + Filters filters = new Filters(); + filters.setAllPassed(!entry.getType().equals("image")); + imageMetadata.setFilters(filters); + + imageServiceResponse.getImageMetadata().add(imageMetadata); + } } + + fileManagementStorageService.storeObject(file.getDossierId(), file.getId(), FileType.IMAGE_INFO, objectMapper.writeValueAsBytes(imageServiceResponse)); } - - fileManagementStorageService.storeObject(file.getDossierId(), file.getId(), FileType.IMAGE_INFO, objectMapper.writeValueAsBytes(imageServiceResponse)); - } catch (NotFoundException e) { // Do nothing } } } -} \ 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/image/MigrateImageServiceStarter.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/image/MigrateImageServiceStarter.java new file mode 100644 index 000000000..9e0d51931 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/image/MigrateImageServiceStarter.java @@ -0,0 +1,31 @@ +package com.iqser.red.service.peristence.v1.server.migration.image; + +import com.iqser.red.service.peristence.v1.server.settings.FileManagementServiceSettings; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +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; + +@Slf4j +@Service +@RequiredArgsConstructor +public class MigrateImageServiceStarter { + + private final MigrateImageService migrateImageService; + private final FileManagementServiceSettings settings; + private final ApplicationContext ctx; + + + @EventListener(ApplicationReadyEvent.class) + public void runMigration() { + + if (settings.isMigrateOnly()) { + migrateImageService.migrateImagesFiles(); + System.exit(SpringApplication.exit(ctx, () -> 0)); + } + } + +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/9-migrate-images.changelog.yaml b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/9-migrate-images.changelog.yaml new file mode 100644 index 000000000..3c6efed95 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/9-migrate-images.changelog.yaml @@ -0,0 +1,7 @@ +databaseChangeLog: + - changeSet: + id: migrate-images + author: timo + changes: + - customChange: + class: com.iqser.red.service.peristence.v1.server.liquibase.task.MigrateImagesChange