only create image info if it doesnt already exist

This commit is contained in:
Timo Bejan 2022-02-18 17:41:49 +02:00
parent 9a48f57603
commit e6f1ce3d1b
3 changed files with 79 additions and 39 deletions

View File

@ -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
}
}
}
}
}

View File

@ -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));
}
}
}

View File

@ -0,0 +1,7 @@
databaseChangeLog:
- changeSet:
id: migrate-images
author: timo
changes:
- customChange:
class: com.iqser.red.service.peristence.v1.server.liquibase.task.MigrateImagesChange