DM-285: add filename to component result #176

Merged
kilian.schuettler1 merged 2 commits from DM-285 into master 2023-10-13 11:25:33 +02:00
5 changed files with 42 additions and 4 deletions

View File

@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.RestController;
import com.iqser.red.persistence.service.v1.external.api.impl.controller.DossierTemplateController;
import com.iqser.red.persistence.service.v1.external.api.impl.controller.StatusController;
import com.iqser.red.service.persistence.management.v1.processor.service.ComponentLogService;
import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusService;
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.componentlog.ComponentLogEntityReference;
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.componentlog.ComponentLogEntry;
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.componentlog.ComponentLogEntryValue;
@ -27,16 +28,20 @@ import com.iqser.red.service.persistence.service.v2.api.external.model.FileCompo
import com.iqser.red.service.persistence.service.v2.api.external.resource.ComponentResource;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.experimental.FieldDefaults;
@RestController
@RequiredArgsConstructor
@Tag(name = "4. Component endpoints", description = "Provides operations related to components")
@FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE)
public class ComponentControllerV2 implements ComponentResource {
private final DossierTemplateController dossierTemplateController;
private final ComponentLogService componentLogService;
private final StatusController statusController;
DossierTemplateController dossierTemplateController;
ComponentLogService componentLogService;
StatusController statusController;
FileStatusService fileStatusService;
@Override
@ -46,7 +51,6 @@ public class ComponentControllerV2 implements ComponentResource {
@RequestParam(name = INCLUDE_DETAILS_PARAM, defaultValue = "false", required = false) boolean includeDetails) {
dossierTemplateController.getDossierTemplate(dossierTemplateId);
var componentLog = componentLogService.getComponentLog(dossierId, fileId, true);
Map<String, List<String>> basicComponent = componentLog.getComponentLogEntries()
@ -65,6 +69,7 @@ public class ComponentControllerV2 implements ComponentResource {
return FileComponents.builder()
.dossierTemplateId(dossierTemplateId)
.dossierId(dossierId)
.filename(fileStatusService.getFileName(fileId))
.fileId(fileId)
.components(basicComponent)
.componentDetails(componentsDetails)

View File

@ -741,4 +741,10 @@ public class FileStatusService {
fileStatusPersistenceService.updateOCRStatus(response);
}
public String getFileName(String fileId) {
return fileStatusPersistenceService.getFilenameById(fileId);
}
}

View File

@ -554,4 +554,10 @@ public class FileStatusPersistenceService {
fileRepository.updateLayoutProcessedTime(fileId, OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
}
public String getFilenameById(String fileId) {
return fileRepository.getFilenameById(fileId).orElseThrow();
}
}

View File

@ -2,6 +2,7 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persis
import java.time.OffsetDateTime;
import java.util.List;
import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
@ -225,6 +226,10 @@ public interface FileRepository extends JpaRepository<FileEntity, String> {
@Query(value = "update FileEntity f set f.lastLayoutProcessed = :offsetDateTime where f.id = :fileId")
void updateLayoutProcessedTime(String fileId, OffsetDateTime offsetDateTime);
@Query("select f.filename from FileEntity f where f.id = :fileId")
Optional<String> getFilenameById(String fileId);
}

View File

@ -38,6 +38,7 @@ import com.iqser.red.service.peristence.v1.server.integration.service.TypeProvid
import com.iqser.red.service.peristence.v1.server.integration.service.UserProvider;
import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest;
import com.iqser.red.service.persistence.management.v1.processor.service.FileManagementStorageService;
import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusService;
import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierTemplateModel;
import com.iqser.red.service.persistence.service.v1.api.shared.model.FileAttributes;
import com.iqser.red.service.persistence.service.v1.api.shared.model.FileAttributesConfig;
@ -118,6 +119,9 @@ public class FileTest extends AbstractPersistenceServerServiceTest {
@Autowired
private FileManagementStorageService fileManagementStorageService;
@Autowired
private FileStatusService fileStatusService;
@Test
public void testFileSoftDeleteReupload() {
@ -612,4 +616,16 @@ public class FileTest extends AbstractPersistenceServerServiceTest {
assertThat(file.getProcessingStatus()).isEqualTo(ProcessingStatus.OCR_PROCESSING_QUEUED);
}
@Test
public void testGetFileNameQuery() {
var filename = "test";
var dossier = dossierTesterAndProvider.provideTestDossier();
var file = fileTesterAndProvider.testAndProvideFile(dossier, filename);
assertThat(fileStatusService.getFileName(file.getId())).isEqualTo(filename + ".pdf");
}
}