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 new file mode 100644 index 000000000..1c24c26fa --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/image/MigrateImageService.java @@ -0,0 +1,80 @@ +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.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; + +// @Service Dont know if it will be integrated as service +@RequiredArgsConstructor +public class MigrateImageService { + + private final FileManagementStorageService fileManagementStorageService; + private final FileRepository fileRepository; + private final ObjectMapper objectMapper; + + + @SneakyThrows + public void migrateImagesFiles() { + + List files = fileRepository.findAll(); + + 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()); + + for (var entry : redactionLog.getRedactionLogEntry()) { + if (entry.isImage() || entry.getType().equals("image")) { + ImageMetadata imageMetadata = new ImageMetadata(); + + Classification classification = new Classification(); + classification.setLabel(entry.getType()); + imageMetadata.setClassification(classification); + + 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); + + 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") ? false : true); + imageMetadata.setFilters(filters); + + imageServiceResponse.getImageMetadata().add(imageMetadata); + } + } + + 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/model/Classification.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/image/model/Classification.java new file mode 100644 index 000000000..17692cf52 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/image/model/Classification.java @@ -0,0 +1,14 @@ +package com.iqser.red.service.peristence.v1.server.migration.image.model; + +import java.util.HashMap; +import java.util.Map; + +import lombok.Data; + +@Data +public class Classification { + + private Map probabilities = new HashMap<>(); + private String label; + +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/image/model/FilterGeometry.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/image/model/FilterGeometry.java new file mode 100644 index 000000000..716affbed --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/image/model/FilterGeometry.java @@ -0,0 +1,10 @@ +package com.iqser.red.service.peristence.v1.server.migration.image.model; + +import lombok.Data; + +@Data +public class FilterGeometry { + + private ImageSize imageSize; + private ImageFormat imageFormat; +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/image/model/Filters.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/image/model/Filters.java new file mode 100644 index 000000000..6141d93fb --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/image/model/Filters.java @@ -0,0 +1,11 @@ +package com.iqser.red.service.peristence.v1.server.migration.image.model; + +import lombok.Data; + +@Data +public class Filters { + + private FilterGeometry geometry; + private Probability probability; + private boolean allPassed; +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/image/model/Geometry.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/image/model/Geometry.java new file mode 100644 index 000000000..9b023c44e --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/image/model/Geometry.java @@ -0,0 +1,9 @@ +package com.iqser.red.service.peristence.v1.server.migration.image.model; + +import lombok.Data; + +@Data +public class Geometry { + private float width; + private float height; +} \ 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/model/ImageFormat.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/image/model/ImageFormat.java new file mode 100644 index 000000000..59a91027f --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/image/model/ImageFormat.java @@ -0,0 +1,12 @@ +package com.iqser.red.service.peristence.v1.server.migration.image.model; + +import lombok.Data; + +@Data +public class ImageFormat { + + private float quotient; + private boolean tooTall; + private boolean tooWide; + +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/image/model/ImageMetadata.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/image/model/ImageMetadata.java new file mode 100644 index 000000000..3844ee81c --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/image/model/ImageMetadata.java @@ -0,0 +1,12 @@ +package com.iqser.red.service.peristence.v1.server.migration.image.model; + +import lombok.Data; + +@Data +public class ImageMetadata { + + private Classification classification; + private Position position; + private Geometry geometry; + private Filters filters; +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/image/model/ImageServiceResponse.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/image/model/ImageServiceResponse.java new file mode 100644 index 000000000..1f4dd2006 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/image/model/ImageServiceResponse.java @@ -0,0 +1,15 @@ +package com.iqser.red.service.peristence.v1.server.migration.image.model; + +import java.util.ArrayList; +import java.util.List; + +import lombok.Data; + +@Data +public class ImageServiceResponse { + + private String dossierId; + private String fileId; + private List imageMetadata = new ArrayList<>(); + +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/image/model/ImageSize.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/image/model/ImageSize.java new file mode 100644 index 000000000..e8f0621e5 --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/image/model/ImageSize.java @@ -0,0 +1,12 @@ +package com.iqser.red.service.peristence.v1.server.migration.image.model; + +import lombok.Data; + +@Data +public class ImageSize { + + private float quotient; + private boolean tooLarge; + private boolean tooSmall; + +} diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/image/model/Position.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/image/model/Position.java new file mode 100644 index 000000000..30d46a21e --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/image/model/Position.java @@ -0,0 +1,12 @@ +package com.iqser.red.service.peristence.v1.server.migration.image.model; + +import lombok.Data; + +@Data +public class Position { + private float x1; + private float x2; + private float y1; + private float y2; + private int pageNumber; +} \ 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/model/Probability.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/image/model/Probability.java new file mode 100644 index 000000000..834768a2e --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/migration/image/model/Probability.java @@ -0,0 +1,10 @@ +package com.iqser.red.service.peristence.v1.server.migration.image.model; + +import lombok.Data; + +@Data +public class Probability { + + private boolean unconfident; + +}