Merge branch 'RED-6864' into 'master'

RED-6864 - Update ocr-service to new storage

Closes RED-6864

See merge request redactmanager/ocr-service!16
This commit is contained in:
Andrei Isvoran 2023-08-16 11:43:53 +02:00
commit f5f1f70ffd
3 changed files with 21 additions and 5 deletions

View File

@ -16,6 +16,7 @@
<tennat-commons.version>0.10.0</tennat-commons.version>
<persistence-service.version>2.118.0</persistence-service.version>
<pdftron-logic-commons.version>2.19.0</pdftron-logic-commons.version>
<storage-commons.version>2.33.0</storage-commons.version>
</properties>
<dependencies>
@ -38,6 +39,7 @@
<dependency>
<groupId>com.iqser.red.commons</groupId>
<artifactId>storage-commons</artifactId>
<version>${storage-commons.version}</version>
</dependency>
<dependency>
<groupId>com.iqser.red.commons</groupId>

View File

@ -1,7 +1,11 @@
package com.iqser.red.service.ocr.v1.server.service;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import org.apache.commons.io.IOUtils;
import org.springframework.stereotype.Service;
@ -32,14 +36,17 @@ public class FileStorageService {
@SneakyThrows
public byte[] getOriginalFile(String dossierId, String fileId) {
return IOUtils.toByteArray(storageService.getObject(TenantContext.getTenantId(), getStorageId(dossierId, fileId, FileType.ORIGIN)).getInputStream());
InputStream inputStream = getInputStream(TenantContext.getTenantId(), getStorageId(dossierId, fileId, FileType.ORIGIN));
byte[] bytes = IOUtils.toByteArray(inputStream);
inputStream.close();
return bytes;
}
@SneakyThrows
public InputStream getOriginalFileAsStream(String dossierId, String fileId) {
return storageService.getObject(TenantContext.getTenantId(), getStorageId(dossierId, fileId, FileType.ORIGIN)).getInputStream();
return getInputStream(TenantContext.getTenantId(), getStorageId(dossierId, fileId, FileType.ORIGIN));
}
@ -67,4 +74,12 @@ public class FileStorageService {
return storageService.readJSONObject(TenantContext.getTenantId(), getStorageId(dossierId, fileId, FileType.IMAGE_INFO), ImageServiceResponse.class);
}
@SneakyThrows
private InputStream getInputStream(String dossierId, String fileId) {
File tempFile = File.createTempFile("temp", ".data");
storageService.downloadTo(TenantContext.getTenantId(), getStorageId(dossierId, fileId, FileType.ORIGIN), tempFile);
return Files.newInputStream(Paths.get(tempFile.getPath()), StandardOpenOption.DELETE_ON_CLOSE);
}
}

View File

@ -11,7 +11,6 @@ import java.util.Map;
import java.util.stream.Collectors;
import org.apache.commons.io.IOUtils;
import org.springframework.core.io.InputStreamResource;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.iqser.red.commons.jackson.ObjectMapperFactory;
@ -32,14 +31,14 @@ public class FileSystemBackedStorageService implements StorageService {
@SneakyThrows
@Override
public InputStreamResource getObject(String tenantId, String objectId) {
public void downloadTo(String tenantId, String objectId, File destinationFile) {
var res = dataMap.get(objectId);
if (res == null) {
throw new StorageObjectDoesNotExist(new RuntimeException());
}
return new InputStreamResource(new FileInputStream(res));
IOUtils.copy(new FileInputStream(res), new FileOutputStream(destinationFile));
}