RED-3452: Code to create IMAGE_INFO.json from redactionLog

This commit is contained in:
deiflaender 2022-02-18 15:38:14 +01:00
parent 400c602868
commit 9a48f57603
11 changed files with 197 additions and 0 deletions

View File

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

View File

@ -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<String, Float> probabilities = new HashMap<>();
private String label;
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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> imageMetadata = new ArrayList<>();
}

View File

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

View File

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

View File

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