This commit is contained in:
Kilian Schuettler 2024-07-26 13:22:45 +02:00
parent ee8d8abd76
commit 6ed97dcf90
166 changed files with 620 additions and 505 deletions

View File

@ -381,7 +381,6 @@ public class DossierController implements DossierResource {
throw new AccessDeniedException("Can not delete dossier that is owned by a different user"); throw new AccessDeniedException("Can not delete dossier that is owned by a different user");
} }
dossierManagementService.softDeleteDossier(dossierId); dossierManagementService.softDeleteDossier(dossierId);
auditPersistenceService.audit(AuditRequest.builder() auditPersistenceService.audit(AuditRequest.builder()
@ -450,7 +449,7 @@ public class DossierController implements DossierResource {
@PostFilter("hasPermission(filterObject.id, 'Dossier', 'VIEW_OBJECT')") @PostFilter("hasPermission(filterObject.id, 'Dossier', 'VIEW_OBJECT')")
public List<Dossier> getSoftDeletedDossiers() { public List<Dossier> getSoftDeletedDossiers() {
var dossiers = dossierManagementService.getSoftDeletedDossiers() var dossiers = dossierManagementService.getSoftDeletedDossiers()
.stream() .stream()
.map(dossierACLService::enhanceDossierWithACLData) .map(dossierACLService::enhanceDossierWithACLData)
.collect(Collectors.toList()); .collect(Collectors.toList());
@ -463,7 +462,7 @@ public class DossierController implements DossierResource {
@PostFilter("hasPermission(filterObject.id, 'Dossier', 'VIEW_OBJECT')") @PostFilter("hasPermission(filterObject.id, 'Dossier', 'VIEW_OBJECT')")
public List<Dossier> getArchivedDossiers() { public List<Dossier> getArchivedDossiers() {
var dossiers = dossierManagementService.getArchivedDossiers() var dossiers = dossierManagementService.getArchivedDossiers()
.stream() .stream()
.map(dossierACLService::enhanceDossierWithACLData) .map(dossierACLService::enhanceDossierWithACLData)
.collect(Collectors.toList()); .collect(Collectors.toList());

View File

@ -37,7 +37,10 @@ public class EntityLogController implements EntityLogResource {
accessControlService.checkViewPermissionsToDossier(dossierId); accessControlService.checkViewPermissionsToDossier(dossierId);
accessControlService.validateFileResourceExistence(fileId); accessControlService.validateFileResourceExistence(fileId);
return entityLogResponseMapper.toLogResponse(entityLogService.getEntityLog(dossierId, fileId, excludedTypes == null ? new ArrayList<>() : excludedTypes, includeUnprocessed)); return entityLogResponseMapper.toLogResponse(entityLogService.getEntityLog(dossierId,
fileId,
excludedTypes == null ? new ArrayList<>() : excludedTypes,
includeUnprocessed));
} }

View File

@ -276,11 +276,7 @@ public class ManualRedactionController implements ManualRedactionResource {
accessControlService.verifyFileIsNotApproved(dossierId, fileId); accessControlService.verifyFileIsNotApproved(dossierId, fileId);
accessControlService.verifyUserIsMemberOrApprover(dossierId); accessControlService.verifyUserIsMemberOrApprover(dossierId);
List<ManualAddResponse> responseList = manualRedactionService.addRecategorization(dossierId, List<ManualAddResponse> responseList = manualRedactionService.addRecategorization(dossierId, fileId, dossier, recategorizationRequests, includeUnprocessed);
fileId,
dossier,
recategorizationRequests,
includeUnprocessed);
responseList.forEach(response -> auditPersistenceService.audit(AuditRequest.builder() responseList.forEach(response -> auditPersistenceService.audit(AuditRequest.builder()
.userId(KeycloakSecurity.getUserId()) .userId(KeycloakSecurity.getUserId())

View File

@ -27,34 +27,37 @@ public class DownloadControllerV2 implements DownloadResource {
private final DownloadController downloadController; private final DownloadController downloadController;
private final DownloadStatusPersistenceService downloadStatusPersistenceService; private final DownloadStatusPersistenceService downloadStatusPersistenceService;
@Transactional @Transactional
public DownloadStatusList getDownloadStatusList() { public DownloadStatusList getDownloadStatusList() {
var downloads = downloadStatusPersistenceService.getStatusesByUser(KeycloakSecurity.getUserId()); var downloads = downloadStatusPersistenceService.getStatusesByUser(KeycloakSecurity.getUserId());
return new DownloadStatusList(downloads.stream().map( return new DownloadStatusList(downloads.stream()
status -> .map(status -> DownloadStatus.builder()
DownloadStatus.builder() .id(status.getUuid()) // This is a workaround the real id is the storageId.
.id(status.getUuid()) // This is a workaround the real id is the storageId. .userId(status.getUserId())
.userId(status.getUserId()) .filename(status.getFilename())
.filename(status.getFilename()) .mimeType(status.getMimeType())
.mimeType(status.getMimeType()) .errorCause(status.getErrorCause())
.errorCause(status.getErrorCause()) .status(status.getStatus())
.status(status.getStatus()) .creationDate(status.getCreationDate())
.creationDate(status.getCreationDate()) .lastDownload(status.getLastDownload())
.lastDownload(status.getLastDownload()) .fileSize(status.getFileSize())
.fileSize(status.getFileSize()) .dossierId(status.getDossier() != null ? status.getDossier().getId() : null)
.dossierId(status.getDossier() != null ? status.getDossier().getId() : null) .fileIds(status.getFiles()
.fileIds(status.getFiles() .stream()
.stream() .map(FileEntity::getId)
.map(FileEntity::getId) .toList())
.toList()) .downloadFileTypes(status.getDownloadFileTypes()
.downloadFileTypes(status.getDownloadFileTypes() .stream()
.stream() .toList())
.toList()) .reportTemplateIds(status.getReports()
.reportTemplateIds(status.getReports().stream().map(ReportTemplateEntity::getTemplateId).toList()) .stream()
.build()).toList() .map(ReportTemplateEntity::getTemplateId)
); .toList())
.build())
.toList());
} }
@ -81,7 +84,10 @@ public class DownloadControllerV2 implements DownloadResource {
.downloadFileTypes(status.getDownloadFileTypes() .downloadFileTypes(status.getDownloadFileTypes()
.stream() .stream()
.toList()) .toList())
.reportTemplateIds(status.getReports().stream().map(ReportTemplateEntity::getTemplateId).toList()) .reportTemplateIds(status.getReports()
.stream()
.map(ReportTemplateEntity::getTemplateId)
.toList())
.build(); .build();
} }

View File

@ -34,11 +34,13 @@ public interface ComponentMapper {
List<ComponentLogEntryValue> toComponentLogEntries(List<ComponentValue> values); List<ComponentLogEntryValue> toComponentLogEntries(List<ComponentValue> values);
Component toComponent(ComponentLogEntry entry); Component toComponent(ComponentLogEntry entry);
List<Component> toComponents(List<ComponentLogEntry> entries); List<Component> toComponents(List<ComponentLogEntry> entries);
ComponentLogEntry toComponentLogEntry(Component component); ComponentLogEntry toComponentLogEntry(Component component);

View File

@ -49,9 +49,7 @@ public interface ComponentLogResource {
@PostMapping(value = COMPONENT_LOG_PATH + OVERRIDE_PATH + DOSSIER_ID_PATH_VARIABLE + FILE_ID_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE) @PostMapping(value = COMPONENT_LOG_PATH + OVERRIDE_PATH + DOSSIER_ID_PATH_VARIABLE + FILE_ID_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE)
@Operation(summary = "Adds overrides for components", description = "None") @Operation(summary = "Adds overrides for components", description = "None")
@ApiResponses(value = {@ApiResponse(responseCode = "204", description = "OK"), @ApiResponse(responseCode = "404", description = "Not found"), @ApiResponse(responseCode = "403", description = "Forbidden")}) @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "OK"), @ApiResponse(responseCode = "404", description = "Not found"), @ApiResponse(responseCode = "403", description = "Forbidden")})
void addOverride(@PathVariable(DOSSIER_ID) String dossierId, void addOverride(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId, @RequestBody ComponentsOverrides componentsOverrides);
@PathVariable(FILE_ID) String fileId,
@RequestBody ComponentsOverrides componentsOverrides);
@ResponseBody @ResponseBody
@ -59,8 +57,7 @@ public interface ComponentLogResource {
@GetMapping(value = COMPONENT_LOG_PATH + OVERRIDE_PATH + DOSSIER_ID_PATH_VARIABLE + FILE_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE) @GetMapping(value = COMPONENT_LOG_PATH + OVERRIDE_PATH + DOSSIER_ID_PATH_VARIABLE + FILE_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE)
@Operation(summary = "Gets overrides for components", description = "None") @Operation(summary = "Gets overrides for components", description = "None")
@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "404", description = "Not found")}) @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "404", description = "Not found")})
ComponentsOverrides getOverrides(@PathVariable(DOSSIER_ID) String dossierId, ComponentsOverrides getOverrides(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId);
@PathVariable(FILE_ID) String fileId);
@ResponseBody @ResponseBody
@ -68,8 +65,6 @@ public interface ComponentLogResource {
@PostMapping(value = COMPONENT_LOG_PATH + OVERRIDE_PATH + "/revert" + DOSSIER_ID_PATH_VARIABLE + FILE_ID_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE) @PostMapping(value = COMPONENT_LOG_PATH + OVERRIDE_PATH + "/revert" + DOSSIER_ID_PATH_VARIABLE + FILE_ID_PATH_VARIABLE, consumes = MediaType.APPLICATION_JSON_VALUE)
@Operation(summary = "Reverts overrides for components", description = "None") @Operation(summary = "Reverts overrides for components", description = "None")
@ApiResponses(value = {@ApiResponse(responseCode = "204", description = "OK"), @ApiResponse(responseCode = "404", description = "Not found"), @ApiResponse(responseCode = "403", description = "Forbidden")}) @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "OK"), @ApiResponse(responseCode = "404", description = "Not found"), @ApiResponse(responseCode = "403", description = "Forbidden")})
void revertOverrides(@PathVariable(DOSSIER_ID) String dossierId, void revertOverrides(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId, @RequestBody RevertOverrideRequest revertOverrideRequest);
@PathVariable(FILE_ID) String fileId,
@RequestBody RevertOverrideRequest revertOverrideRequest);
} }

View File

@ -55,7 +55,9 @@ public interface EntityLogResource {
@GetMapping(value = ENTITY_LOG_PATH + DOSSIER_ID_PATH_VARIABLE + FILE_ID_PATH_VARIABLE + "/pages", produces = MediaType.APPLICATION_JSON_VALUE) @GetMapping(value = ENTITY_LOG_PATH + DOSSIER_ID_PATH_VARIABLE + FILE_ID_PATH_VARIABLE + "/pages", produces = MediaType.APPLICATION_JSON_VALUE)
@Operation(summary = "Gets the entity log for a fileId with all entities found on the given page numbers", description = "None") @Operation(summary = "Gets the entity log for a fileId with all entities found on the given page numbers", description = "None")
@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "400", description = "Request contains error."), @ApiResponse(responseCode = "404", description = "The dossier / file / entity log is not found.")}) @ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK"), @ApiResponse(responseCode = "400", description = "Request contains error."), @ApiResponse(responseCode = "404", description = "The dossier / file / entity log is not found.")})
EntityLogResponse getEntityLogWithEntriesOnPages(@PathVariable(DOSSIER_ID) String dossierId, @PathVariable(FILE_ID) String fileId, @RequestParam(value = "pageNumbers", defaultValue = "") List<Integer> pageNumbers); EntityLogResponse getEntityLogWithEntriesOnPages(@PathVariable(DOSSIER_ID) String dossierId,
@PathVariable(FILE_ID) String fileId,
@RequestParam(value = "pageNumbers", defaultValue = "") List<Integer> pageNumbers);
@GetMapping(value = ENTITY_LOG_PATH + DOSSIER_ID_PATH_VARIABLE + FILE_ID_PATH_VARIABLE + ANALYSIS_NUMBER_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE) @GetMapping(value = ENTITY_LOG_PATH + DOSSIER_ID_PATH_VARIABLE + FILE_ID_PATH_VARIABLE + ANALYSIS_NUMBER_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE)

View File

@ -22,4 +22,5 @@ public class BulkDownloadRequest {
private Set<DownloadFileType> downloadFileTypes = new HashSet<>(); private Set<DownloadFileType> downloadFileTypes = new HashSet<>();
private String redactionPreviewColor; private String redactionPreviewColor;
private List<String> fileIds = new ArrayList<>(); private List<String> fileIds = new ArrayList<>();
} }

View File

@ -19,4 +19,5 @@ public class ComponentOverrideList {
String fileId; String fileId;
List<Component> componentOverrides = new ArrayList<>(); List<Component> componentOverrides = new ArrayList<>();
} }

View File

@ -14,5 +14,6 @@ import lombok.NoArgsConstructor;
@AllArgsConstructor @AllArgsConstructor
public class DossierAttributeDefinitionList { public class DossierAttributeDefinitionList {
private List<DossierAttributeDefinition> dossierAttributeDefinitions= new ArrayList<>(); private List<DossierAttributeDefinition> dossierAttributeDefinitions = new ArrayList<>();
} }

View File

@ -15,4 +15,5 @@ import lombok.NoArgsConstructor;
public class DossierStatusDefinitionList { public class DossierStatusDefinitionList {
private List<DossierStatusDefinition> dossierStatusDefinitions = new ArrayList<>(); private List<DossierStatusDefinition> dossierStatusDefinitions = new ArrayList<>();
} }

View File

@ -89,8 +89,8 @@ public interface DossierResource {
@Operation(summary = "Update or set attributes for a specific dossier.", description = "None") @Operation(summary = "Update or set attributes for a specific dossier.", description = "None")
@ApiResponses(value = {@ApiResponse(responseCode = "204", description = "Dossier attributes successfully updated."), @ApiResponse(responseCode = "404", description = "Not found")}) @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "Dossier attributes successfully updated."), @ApiResponse(responseCode = "404", description = "Not found")})
void setDossierAttributes(@Parameter(name = DOSSIER_TEMPLATE_ID_PARAM, description = "The identifier of a dossier template", required = true) @PathVariable(DOSSIER_TEMPLATE_ID_PARAM) String dossierTemplateId, void setDossierAttributes(@Parameter(name = DOSSIER_TEMPLATE_ID_PARAM, description = "The identifier of a dossier template", required = true) @PathVariable(DOSSIER_TEMPLATE_ID_PARAM) String dossierTemplateId,
@Parameter(name = DOSSIER_ID_PARAM, description = "The identifier of a dossier", required = true) @PathVariable(DOSSIER_ID_PARAM) String dossierId, @Parameter(name = DOSSIER_ID_PARAM, description = "The identifier of a dossier", required = true) @PathVariable(DOSSIER_ID_PARAM) String dossierId,
@RequestBody DossierAttributes dossierAttributes); @RequestBody DossierAttributes dossierAttributes);
@ResponseBody @ResponseBody

View File

@ -595,9 +595,9 @@ paths:
- Component Definitions - Component Definitions
summary: Create new component definitions summary: Create new component definitions
description: | description: |
Create new component definitions for a given dossier template. The component will have a technical name which is automatically converted to snake case Create new component definitions for a given dossier template. The component will have a technical name which is automatically converted to snake case
that can't be updated after the creation. The rank is used to determine the order in which the components are displayed. The component's rank will that can't be updated after the creation. The rank is used to determine the order in which the components are displayed. The component's rank will
automatically be appended at the end based on the current number of components of this dossier template. automatically be appended at the end based on the current number of components of this dossier template.
parameters: parameters:
- $ref: '#/components/parameters/dossierTemplateId' - $ref: '#/components/parameters/dossierTemplateId'
requestBody: requestBody:
@ -3324,7 +3324,7 @@ components:
- a0044ae9-ddca-4f97-b0a1-3cb2517dbf39 - a0044ae9-ddca-4f97-b0a1-3cb2517dbf39
- c2e33246-e50a-4c43-831c-6789a5637db8 - c2e33246-e50a-4c43-831c-6789a5637db8
- 6123fa16-6943-4b74-8524-54b0046a0ce6 - 6123fa16-6943-4b74-8524-54b0046a0ce6
approverIds: [] approverIds: [ ]
reportTemplateIds: reportTemplateIds:
- daadea5f-917b-482a-b7d2-e65afe8f80ca - daadea5f-917b-482a-b7d2-e65afe8f80ca
- 8130acf6-4910-4123-827c-caacd8111402 - 8130acf6-4910-4123-827c-caacd8111402
@ -4627,10 +4627,10 @@ components:
authorizationCode: authorizationCode:
authorizationUrl: /auth/realms/{workspaceId}/protocol/openid-connect/auth authorizationUrl: /auth/realms/{workspaceId}/protocol/openid-connect/auth
tokenUrl: /auth/realms/{workspaceId}/protocol/openid-connect/token tokenUrl: /auth/realms/{workspaceId}/protocol/openid-connect/token
scopes: {} scopes: { }
password: password:
tokenUrl: /auth/realms/{workspaceId}/protocol/openid-connect/token tokenUrl: /auth/realms/{workspaceId}/protocol/openid-connect/token
scopes: {} scopes: { }
clientCredentials: clientCredentials:
tokenUrl: /auth/realms/{workspaceId}/protocol/openid-connect/token tokenUrl: /auth/realms/{workspaceId}/protocol/openid-connect/token
scopes: {} scopes: { }

View File

@ -31,7 +31,7 @@ servers:
- url: https://app.redactmanager.com - url: https://app.redactmanager.com
description: RedactManager Cloud Service description: RedactManager Cloud Service
security: security:
- FF-OAUTH: [] - FF-OAUTH: [ ]
tags: tags:
- name: 1. Dossier Templates - name: 1. Dossier Templates
description: Operations related to dossier templates. description: Operations related to dossier templates.
@ -3171,10 +3171,10 @@ components:
authorizationCode: authorizationCode:
authorizationUrl: /auth/realms/{workspaceId}/protocol/openid-connect/auth authorizationUrl: /auth/realms/{workspaceId}/protocol/openid-connect/auth
tokenUrl: /auth/realms/{workspaceId}/protocol/openid-connect/token tokenUrl: /auth/realms/{workspaceId}/protocol/openid-connect/token
scopes: {} scopes: { }
password: password:
tokenUrl: /auth/realms/{workspaceId}/protocol/openid-connect/token tokenUrl: /auth/realms/{workspaceId}/protocol/openid-connect/token
scopes: {} scopes: { }
clientCredentials: clientCredentials:
tokenUrl: /auth/realms/{workspaceId}/protocol/openid-connect/token tokenUrl: /auth/realms/{workspaceId}/protocol/openid-connect/token
scopes: {} scopes: { }

View File

@ -1,6 +1,5 @@
package com.iqser.red.service.persistence.management.v1.processor.acl.custom.dossier; package com.iqser.red.service.persistence.management.v1.processor.acl.custom.dossier;
import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;

View File

@ -253,12 +253,12 @@ public class MessagingConfiguration {
.build(); .build();
} }
@Bean @Bean
@ConditionalOnProperty(prefix = "persistence-service", name = "migrateOnly", havingValue = "false") @ConditionalOnProperty(prefix = "persistence-service", name = "migrateOnly", havingValue = "false")
public Queue ocrResponseQueue() { public Queue ocrResponseQueue() {
return QueueBuilder.durable(OCR_RESPONSE_QUEUE) return QueueBuilder.durable(OCR_RESPONSE_QUEUE).build();
.build();
} }
@ -266,8 +266,7 @@ public class MessagingConfiguration {
@ConditionalOnProperty(prefix = "persistence-service", name = "migrateOnly", havingValue = "false") @ConditionalOnProperty(prefix = "persistence-service", name = "migrateOnly", havingValue = "false")
public Queue ocrDLQ() { public Queue ocrDLQ() {
return QueueBuilder.durable(OCR_DLQ) return QueueBuilder.durable(OCR_DLQ).build();
.build();
} }

View File

@ -73,6 +73,7 @@ public class WebSocketSecurityConfig extends AbstractSecurityWebSocketMessageBro
} }
private Optional<String> extractTenantId(Message<?> message) { private Optional<String> extractTenantId(Message<?> message) {
StompHeaderAccessor sha = StompHeaderAccessor.wrap(message); StompHeaderAccessor sha = StompHeaderAccessor.wrap(message);

View File

@ -123,6 +123,7 @@ public class DossierTemplateExportService {
}); });
} }
@Observed(name = "DossierTemplateExportService", contextualName = "export-dossier-template") @Observed(name = "DossierTemplateExportService", contextualName = "export-dossier-template")
public long createDownloadArchive(ExportDownloadMessage downloadJob) throws IOException { public long createDownloadArchive(ExportDownloadMessage downloadJob) throws IOException {
@ -142,6 +143,7 @@ public class DossierTemplateExportService {
} }
@Observed(name = "DossierTemplateExportService", contextualName = "write-dossier-template-to-archive") @Observed(name = "DossierTemplateExportService", contextualName = "write-dossier-template-to-archive")
public void addDossierTemplateToArchive(FileSystemBackedArchiver fileSystemBackedArchiver, String folder, DossierTemplateEntity dossierTemplate) throws IOException { public void addDossierTemplateToArchive(FileSystemBackedArchiver fileSystemBackedArchiver, String folder, DossierTemplateEntity dossierTemplate) throws IOException {

View File

@ -121,6 +121,7 @@ public class DossierTemplateImportService {
return dossierTemplateArchiveReader.buildResult(); return dossierTemplateArchiveReader.buildResult();
} }
@Observed(name = "DossierTemplateImportService", contextualName = "import-template") @Observed(name = "DossierTemplateImportService", contextualName = "import-template")
public TemplateImportInfo importDossierTemplate(ImportTemplateResult request) { public TemplateImportInfo importDossierTemplate(ImportTemplateResult request) {

View File

@ -41,6 +41,7 @@ public class EntityTypeExportService {
ObjectMapper mapper; ObjectMapper mapper;
EntryPersistenceService entryPersistenceService; EntryPersistenceService entryPersistenceService;
@Observed(name = "EntityTypeExportService", contextualName = "export-entity-type") @Observed(name = "EntityTypeExportService", contextualName = "export-entity-type")
public void addEntityTypeToArchive(FileSystemBackedArchiver fileSystemBackedArchiver, TypeEntity typeEntity, String folder) throws JsonProcessingException { public void addEntityTypeToArchive(FileSystemBackedArchiver fileSystemBackedArchiver, TypeEntity typeEntity, String folder) throws JsonProcessingException {

View File

@ -39,29 +39,29 @@ public class ManualChangesExportService {
ManualChangesExportModel exportModel = new ManualChangesExportModel(); ManualChangesExportModel exportModel = new ManualChangesExportModel();
exportModel.setManualAddExportModels(addRedactionPersistenceService.findEntriesByFileIdAndOptions(fileId, ManualChangesQueryOptions.all()) exportModel.setManualAddExportModels(addRedactionPersistenceService.findEntriesByFileIdAndOptions(fileId, ManualChangesQueryOptions.all())
.stream() .stream()
.map(mapper::toModel) .map(mapper::toModel)
.toList()); .toList());
exportModel.setManualRemoveExportModels(removeRedactionPersistenceService.findEntriesByFileIdAndOptions(fileId, ManualChangesQueryOptions.all()) exportModel.setManualRemoveExportModels(removeRedactionPersistenceService.findEntriesByFileIdAndOptions(fileId, ManualChangesQueryOptions.all())
.stream() .stream()
.map(mapper::toModel) .map(mapper::toModel)
.toList()); .toList());
exportModel.setManualForceExportModels(forceRedactionPersistenceService.findEntriesByFileIdAndOptions(fileId, ManualChangesQueryOptions.all()) exportModel.setManualForceExportModels(forceRedactionPersistenceService.findEntriesByFileIdAndOptions(fileId, ManualChangesQueryOptions.all())
.stream() .stream()
.map(mapper::toModel) .map(mapper::toModel)
.toList()); .toList());
exportModel.setManualLegalBasisChangeExportModels(legalBasisChangePersistenceService.findEntriesByFileIdAndOptions(fileId, ManualChangesQueryOptions.all()) exportModel.setManualLegalBasisChangeExportModels(legalBasisChangePersistenceService.findEntriesByFileIdAndOptions(fileId, ManualChangesQueryOptions.all())
.stream() .stream()
.map(mapper::toModel) .map(mapper::toModel)
.toList()); .toList());
exportModel.setManualRecategorizationExportModels(recategorizationPersistenceService.findEntriesByFileIdAndOptions(fileId, ManualChangesQueryOptions.all()) exportModel.setManualRecategorizationExportModels(recategorizationPersistenceService.findEntriesByFileIdAndOptions(fileId, ManualChangesQueryOptions.all())
.stream() .stream()
.map(mapper::toModel) .map(mapper::toModel)
.toList()); .toList());
exportModel.setManualResizeExportModels(resizeRedactionPersistenceService.findEntriesByFileIdAndOptions(fileId, ManualChangesQueryOptions.all()) exportModel.setManualResizeExportModels(resizeRedactionPersistenceService.findEntriesByFileIdAndOptions(fileId, ManualChangesQueryOptions.all())
.stream() .stream()
.map(mapper::toModel) .map(mapper::toModel)
.toList()); .toList());
return exportModel; return exportModel;
} }

View File

@ -70,7 +70,7 @@ public class ZipEntryIterator implements Iterator<ZipEntryData>, AutoCloseable {
double compressionRatio = (double) totalSizeEntry / nextEntry.getCompressedSize(); double compressionRatio = (double) totalSizeEntry / nextEntry.getCompressedSize();
if (compressionRatio > compressionThresholdRatio) { if (compressionRatio > compressionThresholdRatio) {
throw new BadRequestException("ZIP-Bomb detected (compressionRatio). " + compressionRatio + "/" + compressionThresholdRatio ); throw new BadRequestException("ZIP-Bomb detected (compressionRatio). " + compressionRatio + "/" + compressionThresholdRatio);
} }
} }

View File

@ -4,7 +4,6 @@ import java.time.OffsetDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.hibernate.annotations.Fetch;
import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.annotation.LastModifiedDate;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierTemplateEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierTemplateEntity;

View File

@ -4,7 +4,6 @@ import java.io.Serializable;
import jakarta.persistence.Column; import jakarta.persistence.Column;
import jakarta.persistence.Embeddable; import jakarta.persistence.Embeddable;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

View File

@ -2,6 +2,8 @@ package com.iqser.red.service.persistence.management.v1.processor.entity.annotat
import java.time.OffsetDateTime; import java.time.OffsetDateTime;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity;
import jakarta.persistence.Column; import jakarta.persistence.Column;
import jakarta.persistence.Entity; import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue; import jakarta.persistence.GeneratedValue;
@ -9,9 +11,6 @@ import jakarta.persistence.GenerationType;
import jakarta.persistence.Id; import jakarta.persistence.Id;
import jakarta.persistence.ManyToOne; import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

View File

@ -1,7 +1,6 @@
package com.iqser.red.service.persistence.management.v1.processor.entity.annotations; package com.iqser.red.service.persistence.management.v1.processor.entity.annotations;
import jakarta.persistence.Embeddable; import jakarta.persistence.Embeddable;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

View File

@ -3,6 +3,8 @@ package com.iqser.red.service.persistence.management.v1.processor.entity.annotat
import java.io.Serializable; import java.io.Serializable;
import java.time.OffsetDateTime; import java.time.OffsetDateTime;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity;
import jakarta.persistence.Column; import jakarta.persistence.Column;
import jakarta.persistence.Embeddable; import jakarta.persistence.Embeddable;
import jakarta.persistence.EmbeddedId; import jakarta.persistence.EmbeddedId;
@ -11,9 +13,6 @@ import jakarta.persistence.FetchType;
import jakarta.persistence.ManyToOne; import jakarta.persistence.ManyToOne;
import jakarta.persistence.MapsId; import jakarta.persistence.MapsId;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

View File

@ -4,6 +4,8 @@ import java.time.OffsetDateTime;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import com.iqser.red.service.persistence.management.v1.processor.utils.JSONMapConverter;
import jakarta.persistence.Basic; import jakarta.persistence.Basic;
import jakarta.persistence.Column; import jakarta.persistence.Column;
import jakarta.persistence.Convert; import jakarta.persistence.Convert;
@ -13,9 +15,6 @@ import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType; import jakarta.persistence.GenerationType;
import jakarta.persistence.Id; import jakarta.persistence.Id;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import com.iqser.red.service.persistence.management.v1.processor.utils.JSONMapConverter;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

View File

@ -4,7 +4,6 @@ import jakarta.persistence.Column;
import jakarta.persistence.Entity; import jakarta.persistence.Entity;
import jakarta.persistence.Id; import jakarta.persistence.Id;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

View File

@ -8,7 +8,6 @@ import jakarta.persistence.Id;
import jakarta.persistence.PrePersist; import jakarta.persistence.PrePersist;
import jakarta.persistence.PreUpdate; import jakarta.persistence.PreUpdate;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

View File

@ -6,7 +6,6 @@ import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType; import jakarta.persistence.GenerationType;
import jakarta.persistence.Id; import jakarta.persistence.Id;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

View File

@ -6,7 +6,6 @@ import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType; import jakarta.persistence.GenerationType;
import jakarta.persistence.Id; import jakarta.persistence.Id;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

View File

@ -1,13 +1,12 @@
package com.iqser.red.service.persistence.management.v1.processor.entity.configuration; package com.iqser.red.service.persistence.management.v1.processor.entity.configuration;
import com.iqser.red.service.persistence.service.v1.api.shared.model.utils.SuppressFBWarnings;
import jakarta.persistence.Column; import jakarta.persistence.Column;
import jakarta.persistence.Entity; import jakarta.persistence.Entity;
import jakarta.persistence.Id; import jakarta.persistence.Id;
import jakarta.persistence.Lob; import jakarta.persistence.Lob;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import com.iqser.red.service.persistence.service.v1.api.shared.model.utils.SuppressFBWarnings;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

View File

@ -1,5 +1,7 @@
package com.iqser.red.service.persistence.management.v1.processor.entity.configuration; package com.iqser.red.service.persistence.management.v1.processor.entity.configuration;
import com.iqser.red.service.persistence.service.v1.api.shared.model.utils.SuppressFBWarnings;
import jakarta.persistence.Basic; import jakarta.persistence.Basic;
import jakarta.persistence.Column; import jakarta.persistence.Column;
import jakarta.persistence.Entity; import jakarta.persistence.Entity;
@ -7,9 +9,6 @@ import jakarta.persistence.FetchType;
import jakarta.persistence.Id; import jakarta.persistence.Id;
import jakarta.persistence.Lob; import jakarta.persistence.Lob;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import com.iqser.red.service.persistence.service.v1.api.shared.model.utils.SuppressFBWarnings;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

View File

@ -1,15 +1,14 @@
package com.iqser.red.service.persistence.management.v1.processor.entity.configuration; package com.iqser.red.service.persistence.management.v1.processor.entity.configuration;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.configuration.DigitalSignatureType;
import com.iqser.red.service.persistence.service.v1.api.shared.model.utils.SuppressFBWarnings;
import jakarta.persistence.Column; import jakarta.persistence.Column;
import jakarta.persistence.Entity; import jakarta.persistence.Entity;
import jakarta.persistence.EnumType; import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated; import jakarta.persistence.Enumerated;
import jakarta.persistence.Id; import jakarta.persistence.Id;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.configuration.DigitalSignatureType;
import com.iqser.red.service.persistence.service.v1.api.shared.model.utils.SuppressFBWarnings;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

View File

@ -1,15 +1,14 @@
package com.iqser.red.service.persistence.management.v1.processor.entity.configuration; package com.iqser.red.service.persistence.management.v1.processor.entity.configuration;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierTemplateEntity;
import jakarta.persistence.Column; import jakarta.persistence.Column;
import jakarta.persistence.Entity; import jakarta.persistence.Entity;
import jakarta.persistence.Id; import jakarta.persistence.Id;
import jakarta.persistence.MapsId; import jakarta.persistence.MapsId;
import jakarta.persistence.OneToOne; import jakarta.persistence.OneToOne;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierTemplateEntity;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

View File

@ -2,7 +2,6 @@ package com.iqser.red.service.persistence.management.v1.processor.entity.configu
import jakarta.persistence.Column; import jakarta.persistence.Column;
import jakarta.persistence.Embeddable; import jakarta.persistence.Embeddable;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

View File

@ -3,11 +3,15 @@ package com.iqser.red.service.persistence.management.v1.processor.entity.configu
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import jakarta.persistence.*;
import org.hibernate.annotations.Fetch; import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode; import org.hibernate.annotations.FetchMode;
import jakarta.persistence.Column;
import jakarta.persistence.ElementCollection;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

View File

@ -2,6 +2,9 @@ package com.iqser.red.service.persistence.management.v1.processor.entity.configu
import java.time.OffsetDateTime; import java.time.OffsetDateTime;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierTemplateEntity;
import jakarta.persistence.Column; import jakarta.persistence.Column;
import jakarta.persistence.Entity; import jakarta.persistence.Entity;
import jakarta.persistence.FetchType; import jakarta.persistence.FetchType;
@ -9,10 +12,6 @@ import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn; import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne; import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierTemplateEntity;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

View File

@ -2,6 +2,11 @@ package com.iqser.red.service.persistence.management.v1.processor.entity.configu
import java.time.OffsetDateTime; import java.time.OffsetDateTime;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierTemplateEntity;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.configuration.HorizontalTextAlignment;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.configuration.VerticalTextAlignment;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.configuration.WatermarkOrientation;
import jakarta.persistence.Column; import jakarta.persistence.Column;
import jakarta.persistence.Entity; import jakarta.persistence.Entity;
import jakarta.persistence.EnumType; import jakarta.persistence.EnumType;
@ -13,12 +18,6 @@ import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn; import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne; import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierTemplateEntity;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.configuration.HorizontalTextAlignment;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.configuration.VerticalTextAlignment;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.configuration.WatermarkOrientation;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

View File

@ -4,8 +4,6 @@ import java.time.OffsetDateTime;
import jakarta.persistence.Column; import jakarta.persistence.Column;
import jakarta.persistence.Entity; import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id; import jakarta.persistence.Id;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import jakarta.persistence.UniqueConstraint; import jakarta.persistence.UniqueConstraint;

View File

@ -1,5 +1,7 @@
package com.iqser.red.service.persistence.management.v1.processor.entity.dossier; package com.iqser.red.service.persistence.management.v1.processor.entity.dossier;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.DossierAttributeType;
import jakarta.persistence.Column; import jakarta.persistence.Column;
import jakarta.persistence.Entity; import jakarta.persistence.Entity;
import jakarta.persistence.EnumType; import jakarta.persistence.EnumType;
@ -7,9 +9,6 @@ import jakarta.persistence.Enumerated;
import jakarta.persistence.Id; import jakarta.persistence.Id;
import jakarta.persistence.ManyToOne; import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.DossierAttributeType;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

View File

@ -7,7 +7,6 @@ import jakarta.persistence.Embeddable;
import jakarta.persistence.EmbeddedId; import jakarta.persistence.EmbeddedId;
import jakarta.persistence.Entity; import jakarta.persistence.Entity;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

View File

@ -6,6 +6,17 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.TypeEntity;
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.WatermarkEntity;
import com.iqser.red.service.persistence.management.v1.processor.utils.JSONDownloadFileTypeConverter;
import com.iqser.red.service.persistence.management.v1.processor.utils.JSONStringSetConverter;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DownloadFileType;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.DossierVisibility;
import jakarta.persistence.CascadeType; import jakarta.persistence.CascadeType;
import jakarta.persistence.Column; import jakarta.persistence.Column;
import jakarta.persistence.Convert; import jakarta.persistence.Convert;
@ -19,18 +30,6 @@ import jakarta.persistence.ManyToMany;
import jakarta.persistence.ManyToOne; import jakarta.persistence.ManyToOne;
import jakarta.persistence.OneToMany; import jakarta.persistence.OneToMany;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.TypeEntity;
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.WatermarkEntity;
import com.iqser.red.service.persistence.management.v1.processor.utils.JSONDownloadFileTypeConverter;
import com.iqser.red.service.persistence.management.v1.processor.utils.JSONStringSetConverter;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DownloadFileType;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.DossierVisibility;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

View File

@ -3,6 +3,9 @@ package com.iqser.red.service.persistence.management.v1.processor.entity.dossier
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
import jakarta.persistence.Column; import jakarta.persistence.Column;
import jakarta.persistence.Entity; import jakarta.persistence.Entity;
import jakarta.persistence.FetchType; import jakarta.persistence.FetchType;
@ -11,10 +14,6 @@ import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne; import jakarta.persistence.ManyToOne;
import jakarta.persistence.OneToMany; import jakarta.persistence.OneToMany;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

View File

@ -1,5 +1,8 @@
package com.iqser.red.service.persistence.management.v1.processor.entity.dossier; package com.iqser.red.service.persistence.management.v1.processor.entity.dossier;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileAttributeType;
import jakarta.persistence.Column; import jakarta.persistence.Column;
import jakarta.persistence.Entity; import jakarta.persistence.Entity;
import jakarta.persistence.EnumType; import jakarta.persistence.EnumType;
@ -7,10 +10,6 @@ import jakarta.persistence.Enumerated;
import jakarta.persistence.Id; import jakarta.persistence.Id;
import jakarta.persistence.ManyToOne; import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileAttributeType;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

View File

@ -7,7 +7,6 @@ import jakarta.persistence.Embeddable;
import jakarta.persistence.EmbeddedId; import jakarta.persistence.EmbeddedId;
import jakarta.persistence.Entity; import jakarta.persistence.Entity;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;

View File

@ -4,6 +4,8 @@ import java.time.OffsetDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnore;
import jakarta.persistence.Column; import jakarta.persistence.Column;
import jakarta.persistence.Entity; import jakarta.persistence.Entity;
import jakarta.persistence.FetchType; import jakarta.persistence.FetchType;
@ -11,9 +13,6 @@ import jakarta.persistence.Id;
import jakarta.persistence.ManyToMany; import jakarta.persistence.ManyToMany;
import jakarta.persistence.ManyToOne; import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

View File

@ -1,17 +1,21 @@
package com.iqser.red.service.persistence.management.v1.processor.entity.download; package com.iqser.red.service.persistence.management.v1.processor.entity.download;
import java.util.ArrayList;
import java.util.List;
import com.iqser.red.service.pdftron.redaction.v1.api.model.RedactionResultDetail; import com.iqser.red.service.pdftron.redaction.v1.api.model.RedactionResultDetail;
import com.iqser.red.service.persistence.management.v1.processor.utils.JSONDownloadRedactionFileDetailsConverter; import com.iqser.red.service.persistence.management.v1.processor.utils.JSONDownloadRedactionFileDetailsConverter;
import jakarta.persistence.*; import jakarta.persistence.Column;
import jakarta.persistence.Convert;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.util.ArrayList;
import java.util.List;
@Data @Data
@Entity @Entity
@Builder @Builder

View File

@ -2,13 +2,12 @@ package com.iqser.red.service.persistence.management.v1.processor.entity.index;
import java.time.OffsetDateTime; import java.time.OffsetDateTime;
import com.iqser.red.service.persistence.service.v1.api.shared.model.utils.SuppressFBWarnings;
import jakarta.persistence.Column; import jakarta.persistence.Column;
import jakarta.persistence.Entity; import jakarta.persistence.Entity;
import jakarta.persistence.Id; import jakarta.persistence.Id;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import com.iqser.red.service.persistence.service.v1.api.shared.model.utils.SuppressFBWarnings;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

View File

@ -6,7 +6,6 @@ import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType; import jakarta.persistence.GenerationType;
import jakarta.persistence.Id; import jakarta.persistence.Id;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

View File

@ -2,7 +2,12 @@ package com.iqser.red.service.persistence.management.v1.processor.entity.migrati
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.SaasMigrationStatus; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.SaasMigrationStatus;
import jakarta.persistence.*; import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

View File

@ -4,6 +4,8 @@ import java.time.OffsetDateTime;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import com.iqser.red.service.persistence.management.v1.processor.utils.JSONMapConverter;
import jakarta.persistence.Basic; import jakarta.persistence.Basic;
import jakarta.persistence.Column; import jakarta.persistence.Column;
import jakarta.persistence.Convert; import jakarta.persistence.Convert;
@ -12,11 +14,7 @@ import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue; import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType; import jakarta.persistence.GenerationType;
import jakarta.persistence.Id; import jakarta.persistence.Id;
import jakarta.persistence.SequenceGenerator;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import com.iqser.red.service.persistence.management.v1.processor.utils.JSONMapConverter;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

View File

@ -3,18 +3,17 @@ package com.iqser.red.service.persistence.management.v1.processor.entity.notific
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
import com.iqser.red.service.persistence.service.v1.api.shared.model.notification.EmailNotificationType;
import jakarta.persistence.Column; import jakarta.persistence.Column;
import jakarta.persistence.ElementCollection; import jakarta.persistence.ElementCollection;
import jakarta.persistence.Entity; import jakarta.persistence.Entity;
import jakarta.persistence.FetchType; import jakarta.persistence.FetchType;
import jakarta.persistence.Id; import jakarta.persistence.Id;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
import com.iqser.red.service.persistence.service.v1.api.shared.model.notification.EmailNotificationType;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;

View File

@ -7,7 +7,6 @@ import jakarta.persistence.Entity;
import jakarta.persistence.Id; import jakarta.persistence.Id;
import jakarta.persistence.IdClass; import jakarta.persistence.IdClass;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;

View File

@ -2,8 +2,6 @@ package com.iqser.red.service.persistence.management.v1.processor.jobs;
import java.text.ParseException; import java.text.ParseException;
import com.iqser.red.service.persistence.management.v1.processor.service.job.*;
import org.quartz.CronExpression; import org.quartz.CronExpression;
import org.quartz.CronScheduleBuilder; import org.quartz.CronScheduleBuilder;
import org.quartz.JobBuilder; import org.quartz.JobBuilder;
@ -13,6 +11,15 @@ import org.quartz.TriggerBuilder;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import com.iqser.red.service.persistence.management.v1.processor.service.job.AnalysisFlagCalculationSchedulerJob;
import com.iqser.red.service.persistence.management.v1.processor.service.job.AutomaticAnalysisJob;
import com.iqser.red.service.persistence.management.v1.processor.service.job.DeletedFilesCleanupJob;
import com.iqser.red.service.persistence.management.v1.processor.service.job.DownloadCleanupJob;
import com.iqser.red.service.persistence.management.v1.processor.service.job.DownloadReadyJob;
import com.iqser.red.service.persistence.management.v1.processor.service.job.KeyCloakUserSyncJob;
import com.iqser.red.service.persistence.management.v1.processor.service.job.SendNotificationEmailJob;
import com.iqser.red.service.persistence.management.v1.processor.service.job.SyncUserPermissionsJob;
@Configuration @Configuration
public class CreateJobsConfiguration { public class CreateJobsConfiguration {

View File

@ -13,4 +13,5 @@ import lombok.NoArgsConstructor;
public class LifecycleProperties { public class LifecycleProperties {
private String basePackage; private String basePackage;
} }

View File

@ -8,6 +8,12 @@ import org.mapstruct.MappingTarget;
import org.mapstruct.Mappings; import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers; import org.mapstruct.factory.Mappers;
import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.manualchanges.ManualAddExportModel;
import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.manualchanges.ManualForceExportModel;
import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.manualchanges.ManualLegalBasisChangeExportModel;
import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.manualchanges.ManualRecategorizationExportModel;
import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.manualchanges.ManualRemoveExportModel;
import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.manualchanges.ManualResizeExportModel;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.IdRemovalEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.IdRemovalEntity;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualForceRedactionEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualForceRedactionEntity;
@ -16,12 +22,6 @@ import com.iqser.red.service.persistence.management.v1.processor.entity.annotati
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualRedactionEntryEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualRedactionEntryEntity;
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualResizeRedactionEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualResizeRedactionEntity;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity;
import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.manualchanges.ManualAddExportModel;
import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.manualchanges.ManualForceExportModel;
import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.manualchanges.ManualLegalBasisChangeExportModel;
import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.manualchanges.ManualRecategorizationExportModel;
import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.manualchanges.ManualRemoveExportModel;
import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.manualchanges.ManualResizeExportModel;
@Mapper @Mapper
public interface ManualChangesExportMapper { public interface ManualChangesExportMapper {
@ -74,7 +74,8 @@ public interface ManualChangesExportMapper {
@AfterMapping @AfterMapping
default void setFileStatusAndId(ManualLegalBasisChangeExportModel model, default void setFileStatusAndId(ManualLegalBasisChangeExportModel model,
@MappingTarget ManualLegalBasisChangeEntity.ManualLegalBasisChangeEntityBuilder entity, @MappingTarget ManualLegalBasisChangeEntity.ManualLegalBasisChangeEntityBuilder entity,
@Context FileEntity file, @Context String userId) { @Context FileEntity file,
@Context String userId) {
AnnotationEntityId annotationEntityId = new AnnotationEntityId(model.getAnnotationId(), file.getId()); AnnotationEntityId annotationEntityId = new AnnotationEntityId(model.getAnnotationId(), file.getId());
entity.id(annotationEntityId); entity.id(annotationEntityId);
@ -86,7 +87,8 @@ public interface ManualChangesExportMapper {
@AfterMapping @AfterMapping
default void setFileStatusAndId(ManualRecategorizationExportModel model, default void setFileStatusAndId(ManualRecategorizationExportModel model,
@MappingTarget ManualRecategorizationEntity.ManualRecategorizationEntityBuilder entity, @MappingTarget ManualRecategorizationEntity.ManualRecategorizationEntityBuilder entity,
@Context FileEntity file, @Context String userId) { @Context FileEntity file,
@Context String userId) {
AnnotationEntityId annotationEntityId = new AnnotationEntityId(model.getAnnotationId(), file.getId()); AnnotationEntityId annotationEntityId = new AnnotationEntityId(model.getAnnotationId(), file.getId());
entity.id(annotationEntityId); entity.id(annotationEntityId);
@ -96,7 +98,10 @@ public interface ManualChangesExportMapper {
@AfterMapping @AfterMapping
default void setFileStatusAndId(ManualAddExportModel model, @MappingTarget ManualRedactionEntryEntity.ManualRedactionEntryEntityBuilder entity, @Context FileEntity file, @Context String userId) { default void setFileStatusAndId(ManualAddExportModel model,
@MappingTarget ManualRedactionEntryEntity.ManualRedactionEntryEntityBuilder entity,
@Context FileEntity file,
@Context String userId) {
AnnotationEntityId annotationEntityId = new AnnotationEntityId(model.getAnnotationId(), file.getId()); AnnotationEntityId annotationEntityId = new AnnotationEntityId(model.getAnnotationId(), file.getId());
entity.id(annotationEntityId); entity.id(annotationEntityId);
@ -106,7 +111,10 @@ public interface ManualChangesExportMapper {
@AfterMapping @AfterMapping
default void setFileStatusAndId(ManualResizeExportModel model, @MappingTarget ManualResizeRedactionEntity.ManualResizeRedactionEntityBuilder entity, @Context FileEntity file, @Context String userId) { default void setFileStatusAndId(ManualResizeExportModel model,
@MappingTarget ManualResizeRedactionEntity.ManualResizeRedactionEntityBuilder entity,
@Context FileEntity file,
@Context String userId) {
AnnotationEntityId annotationEntityId = new AnnotationEntityId(model.getAnnotationId(), file.getId()); AnnotationEntityId annotationEntityId = new AnnotationEntityId(model.getAnnotationId(), file.getId());
entity.id(annotationEntityId); entity.id(annotationEntityId);
@ -116,7 +124,10 @@ public interface ManualChangesExportMapper {
@AfterMapping @AfterMapping
default void setFileStatusAndId(ManualForceExportModel model, @MappingTarget ManualForceRedactionEntity.ManualForceRedactionEntityBuilder entity, @Context FileEntity file, @Context String userId) { default void setFileStatusAndId(ManualForceExportModel model,
@MappingTarget ManualForceRedactionEntity.ManualForceRedactionEntityBuilder entity,
@Context FileEntity file,
@Context String userId) {
AnnotationEntityId annotationEntityId = new AnnotationEntityId(model.getAnnotationId(), file.getId()); AnnotationEntityId annotationEntityId = new AnnotationEntityId(model.getAnnotationId(), file.getId());
entity.id(annotationEntityId); entity.id(annotationEntityId);

View File

@ -18,4 +18,5 @@ public class ComponentOverride {
String name; String name;
List<ComponentLogEntryValue> componentOverrideValues = new ArrayList<>(); List<ComponentLogEntryValue> componentOverrideValues = new ArrayList<>();
} }

View File

@ -1,11 +1,9 @@
package com.iqser.red.service.persistence.management.v1.processor.model; package com.iqser.red.service.persistence.management.v1.processor.model;
import java.util.Collections; import java.util.Collections;
import java.util.List;
import java.util.Set; import java.util.Set;
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.BaseAnnotation; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.BaseAnnotation;
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualRedactionEntry;
import lombok.Builder; import lombok.Builder;
import lombok.Getter; import lombok.Getter;

View File

@ -21,7 +21,9 @@ public class AnalyseEvent {
private int numberOfPagesToOCR; private int numberOfPagesToOCR;
private int numberOfOCRedPages; private int numberOfOCRedPages;
public AnalyseEvent(String dossierId, String fileId, AnalyseStatus analyseStatus, Integer analysisNumber, OffsetDateTime timestamp) { public AnalyseEvent(String dossierId, String fileId, AnalyseStatus analyseStatus, Integer analysisNumber, OffsetDateTime timestamp) {
this.dossierId = dossierId; this.dossierId = dossierId;
this.fileId = fileId; this.fileId = fileId;
this.analyseStatus = analyseStatus; this.analyseStatus = analyseStatus;

View File

@ -10,6 +10,8 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class DossierEvent { public class DossierEvent {
private String dossierId; private String dossierId;
private DossierEventType dossierEventType; private DossierEventType dossierEventType;
} }

View File

@ -1,5 +1,11 @@
package com.iqser.red.service.persistence.management.v1.processor.model.websocket; package com.iqser.red.service.persistence.management.v1.processor.model.websocket;
public enum DossierEventType { public enum DossierEventType {
CREATE, UPDATE, SOFT_DELETE, HARD_DELETE, UNDELETE, ARCHIVE, UNARCHIVE CREATE,
UPDATE,
SOFT_DELETE,
HARD_DELETE,
UNDELETE,
ARCHIVE,
UNARCHIVE
} }

View File

@ -16,4 +16,5 @@ public class DownloadEvent {
private String downloadId; private String downloadId;
private String userId; private String userId;
private DownloadStatusValue status; private DownloadStatusValue status;
} }

View File

@ -15,5 +15,4 @@ public class FileEvent {
private String fileId; private String fileId;
private FileEventType fileEventType; private FileEventType fileEventType;
} }

View File

@ -1,5 +1,9 @@
package com.iqser.red.service.persistence.management.v1.processor.model.websocket; package com.iqser.red.service.persistence.management.v1.processor.model.websocket;
public enum FileEventType { public enum FileEventType {
CREATE, UPDATE, SOFT_DELETE, HARD_DELETE, UNDELETE CREATE,
UPDATE,
SOFT_DELETE,
HARD_DELETE,
UNDELETE
} }

View File

@ -12,4 +12,5 @@ import lombok.NoArgsConstructor;
public class NotificationEvent { public class NotificationEvent {
private String userId; private String userId;
} }

View File

@ -237,6 +237,7 @@ public class DictionaryManagementService {
@Transactional @Transactional
public void addEntries(String typeId, List<String> entries, boolean removeCurrent, boolean ignoreInvalidEntries, DictionaryEntryType dictionaryEntryType) { public void addEntries(String typeId, List<String> entries, boolean removeCurrent, boolean ignoreInvalidEntries, DictionaryEntryType dictionaryEntryType) {
addEntries(typeId, entries, removeCurrent, ignoreInvalidEntries, dictionaryEntryType, false); addEntries(typeId, entries, removeCurrent, ignoreInvalidEntries, dictionaryEntryType, false);
} }

View File

@ -132,7 +132,8 @@ public class DictionaryService {
if (entriesToDelete != null && !entriesToDelete.isEmpty()) { if (entriesToDelete != null && !entriesToDelete.isEmpty()) {
deleteGlobalEntries(type, dossierTemplateId, entriesToDelete, dictionaryEntryType); deleteGlobalEntries(type, dossierTemplateId, entriesToDelete, dictionaryEntryType);
} }
if (entriesToAdd != null && !entriesToAdd.isEmpty() && !entriesToAdd.stream().allMatch(String::isEmpty)) { if (entriesToAdd != null && !entriesToAdd.isEmpty() && !entriesToAdd.stream()
.allMatch(String::isEmpty)) {
addGlobalEntries(type, dossierTemplateId, entriesToAdd, false, dictionaryEntryType); addGlobalEntries(type, dossierTemplateId, entriesToAdd, false, dictionaryEntryType);
} }
} }
@ -150,7 +151,8 @@ public class DictionaryService {
if (entriesToDelete != null && !entriesToDelete.isEmpty()) { if (entriesToDelete != null && !entriesToDelete.isEmpty()) {
deleteDossierEntries(type, dossierTemplateId, entriesToDelete, dossierId, dictionaryEntryType); deleteDossierEntries(type, dossierTemplateId, entriesToDelete, dossierId, dictionaryEntryType);
} }
if (entriesToAdd != null && !entriesToAdd.isEmpty() && !entriesToAdd.stream().allMatch(String::isEmpty)) { if (entriesToAdd != null && !entriesToAdd.isEmpty() && !entriesToAdd.stream()
.allMatch(String::isEmpty)) {
addDossierEntries(type, dossierTemplateId, entriesToAdd, false, dossierId, dictionaryEntryType); addDossierEntries(type, dossierTemplateId, entriesToAdd, false, dossierId, dictionaryEntryType);
} }
} }
@ -487,6 +489,7 @@ public class DictionaryService {
return MagicConverter.convert(colorsService.getColors(dossierTemplateId), Colors.class); return MagicConverter.convert(colorsService.getColors(dossierTemplateId), Colors.class);
} }
@PreAuthorize("hasAuthority('" + ADD_UPDATE_DICTIONARY_TYPE + "')") @PreAuthorize("hasAuthority('" + ADD_UPDATE_DICTIONARY_TYPE + "')")
public void changeAddToDictionary(String type, String dossierTemplateId, String dossierId, boolean addToDictionary) { public void changeAddToDictionary(String type, String dossierTemplateId, String dossierId, boolean addToDictionary) {

View File

@ -23,6 +23,7 @@ public class DossierIdFileIdRequestValidator {
DossierManagementService dossierManagementService; DossierManagementService dossierManagementService;
FileStatusManagementService fileStatusManagementService; FileStatusManagementService fileStatusManagementService;
@Observed(name = "DossierIdFileIdRequestValidator", contextualName = "validate-request") @Observed(name = "DossierIdFileIdRequestValidator", contextualName = "validate-request")
public void validateRequestOrThrow404(String dossierTemplateId, Set<String> dossierIds, Set<String> fileIds) { public void validateRequestOrThrow404(String dossierTemplateId, Set<String> dossierIds, Set<String> fileIds) {

View File

@ -64,8 +64,9 @@ public class DossierManagementService {
List<FileModel> fileStatuses = fileStatusService.getDossierStatus(dossierId); List<FileModel> fileStatuses = fileStatusService.getDossierStatus(dossierId);
var relevantFileIds = fileStatuses.stream() var relevantFileIds = fileStatuses.stream()
.filter(fileStatus -> fileStatus.getDeleted() == null).map(FileModel::getId).toList(); .filter(fileStatus -> fileStatus.getDeleted() == null)
.map(FileModel::getId)
.toList();
dossierDeletionService.softDeleteDossier(dossierId, relevantFileIds, now); dossierDeletionService.softDeleteDossier(dossierId, relevantFileIds, now);
fileDeletionService.reindexDeletedFiles(dossierId, relevantFileIds); fileDeletionService.reindexDeletedFiles(dossierId, relevantFileIds);
@ -119,6 +120,7 @@ public class DossierManagementService {
} }
@Transactional @Transactional
public Set<String> getAllDossierIdsForDossierTemplateId(String dossierTemplateId) { public Set<String> getAllDossierIdsForDossierTemplateId(String dossierTemplateId) {
@ -208,7 +210,10 @@ public class DossierManagementService {
for (String dossierId : dossierIds) { for (String dossierId : dossierIds) {
List<String> fileIds = fileStatusService.getDossierStatus(dossierId).stream().map(FileModel::getId).collect(Collectors.toList()); List<String> fileIds = fileStatusService.getDossierStatus(dossierId)
.stream()
.map(FileModel::getId)
.collect(Collectors.toList());
dossierDeletionService.hardDeleteDossier(dossierId, fileIds); dossierDeletionService.hardDeleteDossier(dossierId, fileIds);
dossierDeletionService.hardDeleteFileDataAndIndexUpdates(dossierId, fileIds); dossierDeletionService.hardDeleteFileDataAndIndexUpdates(dossierId, fileIds);
} }
@ -221,10 +226,13 @@ public class DossierManagementService {
for (String dossierId : dossierIds) { for (String dossierId : dossierIds) {
var dossier = dossierService.getDossierById(dossierId); var dossier = dossierService.getDossierById(dossierId);
List<FileModel> fileStatuses = fileStatusService.getDossierStatus(dossierId); List<FileModel> fileStatuses = fileStatusService.getDossierStatus(dossierId);
var relevantFileIds = fileStatuses.stream().filter(fileStatus -> fileStatus.getDeleted() != null && (fileStatus.getDeleted().equals(dossier.getSoftDeletedTime()) || fileStatus.getDeleted() var relevantFileIds = fileStatuses.stream()
.isAfter(dossier.getSoftDeletedTime()))).map(FileModel::getId).collect(Collectors.toList()); .filter(fileStatus -> fileStatus.getDeleted() != null && (fileStatus.getDeleted().equals(dossier.getSoftDeletedTime()) || fileStatus.getDeleted()
.isAfter(dossier.getSoftDeletedTime())))
.map(FileModel::getId)
.collect(Collectors.toList());
dossierDeletionService.undeleteDossier(dossierId,relevantFileIds,dossier.getSoftDeletedTime()); dossierDeletionService.undeleteDossier(dossierId, relevantFileIds, dossier.getSoftDeletedTime());
dossierDeletionService.reindexUndeletedFiles(dossier.getDossierTemplateId(), dossierId, relevantFileIds); dossierDeletionService.reindexUndeletedFiles(dossier.getDossierTemplateId(), dossierId, relevantFileIds);
} }

View File

@ -153,6 +153,7 @@ public class DossierService {
return dossierPersistenceService.findAllDossiersForDossierTemplateId(dossierTemplateId); return dossierPersistenceService.findAllDossiersForDossierTemplateId(dossierTemplateId);
} }
public Set<String> getAllDossierIdsForDossierTemplateId(String dossierTemplateId) { public Set<String> getAllDossierIdsForDossierTemplateId(String dossierTemplateId) {
return dossierPersistenceService.findAllDossierIdsForDossierTemplateId(dossierTemplateId); return dossierPersistenceService.findAllDossierIdsForDossierTemplateId(dossierTemplateId);

View File

@ -66,7 +66,6 @@ public class DossierTemplateManagementService {
} }
public DossierTemplate importDossierTemplate(ImportDossierTemplateRequest request) { public DossierTemplate importDossierTemplate(ImportDossierTemplateRequest request) {
String dossierTemplateId = dossierTemplateImportService.importDossierTemplate(request); String dossierTemplateId = dossierTemplateImportService.importDossierTemplate(request);

View File

@ -37,7 +37,12 @@ public class EntityLogMongoWrapperService {
if (includeUnprocessed) { if (includeUnprocessed) {
DossierEntity dossier = dossierService.getDossierById(dossierId); DossierEntity dossier = dossierService.getDossierById(dossierId);
ManualRedactions unprocessedManualRedactions = manualRedactionProviderService.getManualRedactions(fileId, ManualChangesQueryOptions.unprocessedOnly(), ids); ManualRedactions unprocessedManualRedactions = manualRedactionProviderService.getManualRedactions(fileId, ManualChangesQueryOptions.unprocessedOnly(), ids);
entityLogEntries = entityLogMergeService.mergeEntityLogEntries(unprocessedManualRedactions, entityLogEntries.stream().map(EntityLogEntry::getId).toList(), dossier, fileId); entityLogEntries = entityLogMergeService.mergeEntityLogEntries(unprocessedManualRedactions,
entityLogEntries.stream()
.map(EntityLogEntry::getId)
.toList(),
dossier,
fileId);
} }
return entityLogEntries; return entityLogEntries;
} }
@ -47,4 +52,5 @@ public class EntityLogMongoWrapperService {
return String.format("EntityLogEntry does not exist for annotationId ID \"%s\"!", annotationId); return String.format("EntityLogEntry does not exist for annotationId ID \"%s\"!", annotationId);
} }
} }

View File

@ -45,6 +45,7 @@ public class EntityLogService {
return entityLog; return entityLog;
} }
@Observed(name = "EntityLogService", contextualName = "get-entity-log") @Observed(name = "EntityLogService", contextualName = "get-entity-log")
public EntityLog getEntityLog(String dossierId, String fileId, boolean includeUnProcessed) { public EntityLog getEntityLog(String dossierId, String fileId, boolean includeUnProcessed) {
@ -52,6 +53,8 @@ public class EntityLogService {
postProcessEntityLog(dossierId, fileId, entityLog, includeUnProcessed); postProcessEntityLog(dossierId, fileId, entityLog, includeUnProcessed);
return entityLog; return entityLog;
} }
@Observed(name = "EntityLogService", contextualName = "get-entity-log") @Observed(name = "EntityLogService", contextualName = "get-entity-log")
public EntityLog getEntityLog(String dossierId, String fileId, List<String> excludedTypes, boolean includeUnProcessed) { public EntityLog getEntityLog(String dossierId, String fileId, List<String> excludedTypes, boolean includeUnProcessed) {

View File

@ -18,6 +18,7 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.ResizeRedactionPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.ResizeRedactionPersistenceService;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileType; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileType;
import com.iqser.red.service.search.v1.model.IndexMessageType; import com.iqser.red.service.search.v1.model.IndexMessageType;
import jakarta.transaction.Transactional; import jakarta.transaction.Transactional;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;

View File

@ -145,6 +145,7 @@ public class FileManagementStorageService {
entityLogMongoService.saveEntityLog(dossierId, fileId, entityLog); entityLogMongoService.saveEntityLog(dossierId, fileId, entityLog);
} }
@SneakyThrows @SneakyThrows
public void insertEntityLog(String dossierId, String fileId, EntityLog entityLog) { public void insertEntityLog(String dossierId, String fileId, EntityLog entityLog) {

View File

@ -38,11 +38,13 @@ public class FileStatusManagementService {
return fileStatusService.getAllFiles(); return fileStatusService.getAllFiles();
} }
public List<FileModel> getAllDossierTemplateStatus(String dossierTemplateId) { public List<FileModel> getAllDossierTemplateStatus(String dossierTemplateId) {
return fileStatusService.getDossierTemplateStatus(dossierTemplateId); return fileStatusService.getDossierTemplateStatus(dossierTemplateId);
} }
public List<FileModel> getDossierStatus(String dossierId) { public List<FileModel> getDossierStatus(String dossierId) {
return fileStatusService.getDossierStatus(dossierId) return fileStatusService.getDossierStatus(dossierId)
@ -52,7 +54,6 @@ public class FileStatusManagementService {
} }
public List<FileModel> getAllDossierStatus(String dossierId) { public List<FileModel> getAllDossierStatus(String dossierId) {
return fileStatusService.getDossierStatus(dossierId); return fileStatusService.getDossierStatus(dossierId);

View File

@ -95,6 +95,7 @@ public class FileStatusService {
WebsocketService websocketService; WebsocketService websocketService;
@Transactional @Transactional
public List<FileModel> getAllRelevantStatusesForReanalysisScheduler() { public List<FileModel> getAllRelevantStatusesForReanalysisScheduler() {
@ -125,6 +126,7 @@ public class FileStatusService {
return reanalysisRequiredStatusService.enhanceFileStatusWithAnalysisRequirements(convertedList); return reanalysisRequiredStatusService.enhanceFileStatusWithAnalysisRequirements(convertedList);
} }
@Transactional @Transactional
public List<FileModel> getDossierTemplateStatus(String dossierTemplateId) { public List<FileModel> getDossierTemplateStatus(String dossierTemplateId) {
@ -133,6 +135,7 @@ public class FileStatusService {
return reanalysisRequiredStatusService.enhanceFileStatusWithAnalysisRequirements(convertedList); return reanalysisRequiredStatusService.enhanceFileStatusWithAnalysisRequirements(convertedList);
} }
@Transactional @Transactional
public List<FileModel> getAllFiles() { public List<FileModel> getAllFiles() {
@ -141,6 +144,7 @@ public class FileStatusService {
return reanalysisRequiredStatusService.enhanceFileStatusWithAnalysisRequirements(convertedList); return reanalysisRequiredStatusService.enhanceFileStatusWithAnalysisRequirements(convertedList);
} }
@Transactional @Transactional
public List<FileModel> getAllErrorFiles() { public List<FileModel> getAllErrorFiles() {
@ -202,7 +206,6 @@ public class FileStatusService {
var dossier = dossierPersistenceService.getAndValidateDossier(dossierId); var dossier = dossierPersistenceService.getAndValidateDossier(dossierId);
var fileEntity = fileStatusPersistenceService.getStatus(fileId); var fileEntity = fileStatusPersistenceService.getStatus(fileId);
if (!fileManagementStorageService.objectExists(dossierId, fileId, FileType.ORIGIN)) { if (!fileManagementStorageService.objectExists(dossierId, fileId, FileType.ORIGIN)) {
addToPreprocessingQueue(dossierId, fileId, fileEntity.getFilename()); addToPreprocessingQueue(dossierId, fileId, fileEntity.getFilename());
sendReadOnlyAnalysisEvent(dossierId, fileId, fileEntity); sendReadOnlyAnalysisEvent(dossierId, fileId, fileEntity);
@ -302,14 +305,24 @@ public class FileStatusService {
} }
private void sendAnalysisEvent(String dossierId, String fileId, FileEntity fileEntity){ private void sendAnalysisEvent(String dossierId, String fileId, FileEntity fileEntity) {
if(fileEntity.getProcessingStatus().equals(ProcessingStatus.UNPROCESSED) || fileEntity.getProcessingStatus().equals(ProcessingStatus.ERROR) || fileEntity.getProcessingStatus().equals(ProcessingStatus.REPROCESS) || fileEntity.getProcessingStatus().equals(ProcessingStatus.PROCESSED)){
if (fileEntity.getProcessingStatus().equals(ProcessingStatus.UNPROCESSED)
|| fileEntity.getProcessingStatus().equals(ProcessingStatus.ERROR)
|| fileEntity.getProcessingStatus().equals(ProcessingStatus.REPROCESS)
|| fileEntity.getProcessingStatus().equals(ProcessingStatus.PROCESSED)) {
websocketService.sendAnalysisEvent(dossierId, fileId, AnalyseStatus.PROCESSING, fileEntity.getNumberOfAnalyses() + 1); websocketService.sendAnalysisEvent(dossierId, fileId, AnalyseStatus.PROCESSING, fileEntity.getNumberOfAnalyses() + 1);
} }
} }
private void sendReadOnlyAnalysisEvent(String dossierId, String fileId, FileEntity fileEntity){
if(fileEntity.getProcessingStatus().equals(ProcessingStatus.UNPROCESSED) || fileEntity.getProcessingStatus().equals(ProcessingStatus.ERROR) || fileEntity.getProcessingStatus().equals(ProcessingStatus.REPROCESS) || fileEntity.getProcessingStatus().equals(ProcessingStatus.PROCESSED) || fileEntity.getProcessingStatus().equals(ProcessingStatus.OCR_PROCESSING)){ private void sendReadOnlyAnalysisEvent(String dossierId, String fileId, FileEntity fileEntity) {
if (fileEntity.getProcessingStatus().equals(ProcessingStatus.UNPROCESSED)
|| fileEntity.getProcessingStatus().equals(ProcessingStatus.ERROR)
|| fileEntity.getProcessingStatus().equals(ProcessingStatus.REPROCESS)
|| fileEntity.getProcessingStatus().equals(ProcessingStatus.PROCESSED)
|| fileEntity.getProcessingStatus().equals(ProcessingStatus.OCR_PROCESSING)) {
websocketService.sendAnalysisEvent(dossierId, fileId, AnalyseStatus.READ_ONLY_PROCESSING, fileEntity.getNumberOfAnalyses() + 1); websocketService.sendAnalysisEvent(dossierId, fileId, AnalyseStatus.READ_ONLY_PROCESSING, fileEntity.getNumberOfAnalyses() + 1);
} }
} }
@ -536,7 +549,8 @@ public class FileStatusService {
public void setStatusSuccessful(String dossierId, String fileId, AnalyzeResult analyzeResult) { public void setStatusSuccessful(String dossierId, String fileId, AnalyzeResult analyzeResult) {
fileStatusPersistenceService.updateProcessingStatus(dossierId, fileId, fileStatusPersistenceService.updateProcessingStatus(dossierId,
fileId,
analyzeResult.getNumberOfPages(), analyzeResult.getNumberOfPages(),
analyzeResult.getDictionaryVersion(), analyzeResult.getDictionaryVersion(),
analyzeResult.getRulesVersion(), analyzeResult.getRulesVersion(),
@ -621,6 +635,7 @@ public class FileStatusService {
public void setStatusIndexingSuccessful(String fileId) { public void setStatusIndexingSuccessful(String fileId) {
fileStatusPersistenceService.setUpdateStatusIndexingSuccessful(fileId); fileStatusPersistenceService.setUpdateStatusIndexingSuccessful(fileId);
FileEntity fileStatus = fileStatusPersistenceService.getStatus(fileId); FileEntity fileStatus = fileStatusPersistenceService.getStatus(fileId);
websocketService.sendFileEvent(fileStatus.getDossierId(), fileId, FileEventType.UPDATE); websocketService.sendFileEvent(fileStatus.getDossierId(), fileId, FileEventType.UPDATE);
@ -642,6 +657,7 @@ public class FileStatusService {
public void updateFileModificationDate(String fileId, OffsetDateTime fileManipulationDate) { public void updateFileModificationDate(String fileId, OffsetDateTime fileManipulationDate) {
fileStatusPersistenceService.updateFileModificationDate(fileId, fileManipulationDate); fileStatusPersistenceService.updateFileModificationDate(fileId, fileManipulationDate);
FileEntity fileStatus = fileStatusPersistenceService.getStatus(fileId); FileEntity fileStatus = fileStatusPersistenceService.getStatus(fileId);
websocketService.sendFileEvent(fileStatus.getDossierId(), fileId, FileEventType.UPDATE); websocketService.sendFileEvent(fileStatus.getDossierId(), fileId, FileEventType.UPDATE);

View File

@ -30,33 +30,44 @@ public class WebsocketService {
public void sendAnalysisEvent(String dossierId, String fileId, AnalyseStatus analyseStatus, int analysisNumber) { public void sendAnalysisEvent(String dossierId, String fileId, AnalyseStatus analyseStatus, int analysisNumber) {
template.convertAndSend("/topic/" + TenantContext.getTenantId() + "/analysis-events", new AnalyseEvent(dossierId, fileId, analyseStatus, analysisNumber, OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS))); template.convertAndSend("/topic/" + TenantContext.getTenantId() + "/analysis-events",
new AnalyseEvent(dossierId, fileId, analyseStatus, analysisNumber, OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)));
} }
public void sendOcrUpdateAnalysisEvent(String dossierId, String fileId, AnalyseStatus analyseStatus, int analysisNumber, int numberOfPagesToOCR, int numberOfOCRedPages) { public void sendOcrUpdateAnalysisEvent(String dossierId, String fileId, AnalyseStatus analyseStatus, int analysisNumber, int numberOfPagesToOCR, int numberOfOCRedPages) {
template.convertAndSend("/topic/" + TenantContext.getTenantId() + "/analysis-events", new AnalyseEvent(dossierId, fileId, analyseStatus, analysisNumber, OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS), numberOfPagesToOCR, numberOfOCRedPages)); template.convertAndSend("/topic/" + TenantContext.getTenantId() + "/analysis-events",
new AnalyseEvent(dossierId,
fileId,
analyseStatus,
analysisNumber,
OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS),
numberOfPagesToOCR,
numberOfOCRedPages));
} }
public void sendDownloadEvent(String downloadId, String userId, DownloadStatusValue downloadStatusValue){ public void sendDownloadEvent(String downloadId, String userId, DownloadStatusValue downloadStatusValue) {
template.convertAndSend("/topic/" + TenantContext.getTenantId() + "/download-events", new DownloadEvent(downloadId, userId, downloadStatusValue)); template.convertAndSend("/topic/" + TenantContext.getTenantId() + "/download-events", new DownloadEvent(downloadId, userId, downloadStatusValue));
} }
public void sendFileEvent(String dossierId, String fileId, FileEventType fileEventType){ public void sendFileEvent(String dossierId, String fileId, FileEventType fileEventType) {
template.convertAndSend("/topic/" + TenantContext.getTenantId() + "/file-events", new FileEvent(dossierId, fileId, fileEventType)); template.convertAndSend("/topic/" + TenantContext.getTenantId() + "/file-events", new FileEvent(dossierId, fileId, fileEventType));
} }
public void sendDossierEvent(String dossierId, DossierEventType dossierEventType){ public void sendDossierEvent(String dossierId, DossierEventType dossierEventType) {
template.convertAndSend("/topic/" + TenantContext.getTenantId() + "/dossier-events", new DossierEvent(dossierId, dossierEventType)); template.convertAndSend("/topic/" + TenantContext.getTenantId() + "/dossier-events", new DossierEvent(dossierId, dossierEventType));
} }
public void sendNotificationEvent(String userId){
public void sendNotificationEvent(String userId) {
template.convertAndSend("/topic/" + TenantContext.getTenantId() + "/notification-events", new NotificationEvent(userId)); template.convertAndSend("/topic/" + TenantContext.getTenantId() + "/notification-events", new NotificationEvent(userId));
} }

View File

@ -1,6 +1,5 @@
package com.iqser.red.service.persistence.management.v1.processor.service.download; package com.iqser.red.service.persistence.management.v1.processor.service.download;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitHandler; import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;

View File

@ -47,10 +47,8 @@ import com.iqser.red.service.redaction.report.v1.api.model.StoredFileInformation
import com.knecon.fforesight.tenantcommons.TenantContext; import com.knecon.fforesight.tenantcommons.TenantContext;
import jakarta.transaction.Transactional; import jakarta.transaction.Transactional;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import lombok.experimental.FieldDefaults;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@Slf4j @Slf4j

View File

@ -7,7 +7,6 @@ import java.util.stream.Collectors;
import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.iqser.red.service.persistence.management.v1.processor.configuration.MessagingConfiguration; import com.iqser.red.service.persistence.management.v1.processor.configuration.MessagingConfiguration;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.ReportTemplateEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.ReportTemplateEntity;
@ -39,7 +38,6 @@ public class DownloadProcessorService {
downloadStatusPersistenceService.updateStatus(downloadJob.getStorageId(), DownloadStatusValue.GENERATING); downloadStatusPersistenceService.updateStatus(downloadJob.getStorageId(), DownloadStatusValue.GENERATING);
websocketService.sendDownloadEvent(downloadJob.getStorageId(), downloadJob.getUserId(), DownloadStatusValue.GENERATING); websocketService.sendDownloadEvent(downloadJob.getStorageId(), downloadJob.getUserId(), DownloadStatusValue.GENERATING);
var dossier = dossierService.getDossierById(downloadStatus.getFiles() var dossier = dossierService.getDossierById(downloadStatus.getFiles()
.iterator().next().getDossierId()); .iterator().next().getDossierId());

View File

@ -2,18 +2,7 @@ package com.iqser.red.service.persistence.management.v1.processor.service.downlo
import static com.iqser.red.service.persistence.management.v1.processor.configuration.MessagingConfiguration.X_ERROR_INFO_HEADER; import static com.iqser.red.service.persistence.management.v1.processor.configuration.MessagingConfiguration.X_ERROR_INFO_HEADER;
import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException;
import com.iqser.red.service.pdftron.redaction.v1.api.model.RedactionMessage;
import com.iqser.red.service.persistence.management.v1.processor.configuration.MessagingConfiguration;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DownloadStatusPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.settings.FileManagementServiceSettings;
import com.iqser.red.service.persistence.service.v1.api.shared.model.download.DownloadStatusValue;
import com.iqser.red.service.redaction.report.v1.api.model.ReportRequestMessage;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.experimental.FieldDefaults;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message; import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitHandler; import org.springframework.amqp.rabbit.annotation.RabbitHandler;
@ -22,7 +11,17 @@ import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.retry.support.RetryTemplate; import org.springframework.retry.support.RetryTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.io.IOException; import com.fasterxml.jackson.databind.ObjectMapper;
import com.iqser.red.service.pdftron.redaction.v1.api.model.RedactionMessage;
import com.iqser.red.service.persistence.management.v1.processor.configuration.MessagingConfiguration;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DownloadStatusPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.settings.FileManagementServiceSettings;
import com.iqser.red.service.persistence.service.v1.api.shared.model.download.DownloadStatusValue;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.experimental.FieldDefaults;
import lombok.extern.slf4j.Slf4j;
@Slf4j @Slf4j
@Service @Service

View File

@ -1,5 +1,11 @@
package com.iqser.red.service.persistence.management.v1.processor.service.download; package com.iqser.red.service.persistence.management.v1.processor.service.download;
import org.springframework.amqp.AmqpRejectAndDontRequeueException;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Service;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.iqser.red.service.pdftron.redaction.v1.api.model.RedactionResultMessage; import com.iqser.red.service.pdftron.redaction.v1.api.model.RedactionResultMessage;
@ -11,12 +17,6 @@ import lombok.SneakyThrows;
import lombok.experimental.FieldDefaults; import lombok.experimental.FieldDefaults;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.AmqpRejectAndDontRequeueException;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Service;
@Slf4j @Slf4j
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor

View File

@ -2,7 +2,6 @@ package com.iqser.red.service.persistence.management.v1.processor.service.job;
import static com.iqser.red.service.persistence.management.v1.processor.utils.TenantUtils.isTenantReadyForPersistence; import static com.iqser.red.service.persistence.management.v1.processor.utils.TenantUtils.isTenantReadyForPersistence;
import java.time.OffsetDateTime;
import java.util.Set; import java.util.Set;
import org.quartz.DisallowConcurrentExecution; import org.quartz.DisallowConcurrentExecution;

View File

@ -3,7 +3,6 @@ package com.iqser.red.service.persistence.management.v1.processor.service.job;
import java.time.OffsetDateTime; import java.time.OffsetDateTime;
import java.util.List; import java.util.List;
import com.iqser.red.service.persistence.management.v1.processor.service.FileDeletionService;
import org.quartz.DisallowConcurrentExecution; import org.quartz.DisallowConcurrentExecution;
import org.quartz.Job; import org.quartz.Job;
import org.quartz.JobExecutionContext; import org.quartz.JobExecutionContext;
@ -12,6 +11,7 @@ import org.springframework.stereotype.Service;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity;
import com.iqser.red.service.persistence.management.v1.processor.service.ApplicationConfigService; import com.iqser.red.service.persistence.management.v1.processor.service.ApplicationConfigService;
import com.iqser.red.service.persistence.management.v1.processor.service.DossierService; import com.iqser.red.service.persistence.management.v1.processor.service.DossierService;
import com.iqser.red.service.persistence.management.v1.processor.service.FileDeletionService;
import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusService; import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusService;
import com.iqser.red.service.persistence.management.v1.processor.utils.TenantUtils; import com.iqser.red.service.persistence.management.v1.processor.utils.TenantUtils;
import com.knecon.fforesight.tenantcommons.TenantContext; import com.knecon.fforesight.tenantcommons.TenantContext;
@ -62,7 +62,7 @@ public class DeletedFilesCleanupJob implements Job {
.isBefore(now.minusHours(applicationConfigurationEntity.getSoftDeleteCleanupTime()))) { .isBefore(now.minusHours(applicationConfigurationEntity.getSoftDeleteCleanupTime()))) {
fileDeletionService.hardDeleteFile(file.getId()); fileDeletionService.hardDeleteFile(file.getId());
fileDeletionService.hardDeleteFileDataAndIndexUpdates(dossierEntity.getId(),file.getId()); fileDeletionService.hardDeleteFileDataAndIndexUpdates(dossierEntity.getId(), file.getId());
log.info("Hard deleted file with dossier id {} and file id {}", dossierEntity.getId(), file.getId()); log.info("Hard deleted file with dossier id {} and file id {}", dossierEntity.getId(), file.getId());
} }
} }

View File

@ -1,7 +1,11 @@
package com.iqser.red.service.persistence.management.v1.processor.service.job; package com.iqser.red.service.persistence.management.v1.processor.service.job;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.springframework.stereotype.Service;
import com.iqser.red.service.persistence.management.v1.processor.service.download.DownloadCompressingService; import com.iqser.red.service.persistence.management.v1.processor.service.download.DownloadCompressingService;
import com.iqser.red.service.persistence.management.v1.processor.service.download.DownloadPreparationService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DownloadStatusPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DownloadStatusPersistenceService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DownloadRedactionFileStatusRepository; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DownloadRedactionFileStatusRepository;
import com.iqser.red.service.persistence.management.v1.processor.utils.TenantUtils; import com.iqser.red.service.persistence.management.v1.processor.utils.TenantUtils;
@ -12,11 +16,6 @@ import com.knecon.fforesight.tenantcommons.TenantProvider;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.springframework.stereotype.Service;
@Slf4j @Slf4j
@RequiredArgsConstructor @RequiredArgsConstructor
@Service @Service

View File

@ -69,17 +69,17 @@ public class ManualRedactionDictionaryUpdateHandler {
Set<String> typeIdsOfModifiedDictionaries) { Set<String> typeIdsOfModifiedDictionaries) {
List<DictionaryEntry> dictionaryEntriesToUnDelete = dictionaryManagementService.getAllEntriesInDossierTemplate(manualRequestWithAddToDictionary.getDictionaryTypeId(), List<DictionaryEntry> dictionaryEntriesToUnDelete = dictionaryManagementService.getAllEntriesInDossierTemplate(manualRequestWithAddToDictionary.getDictionaryTypeId(),
value, value,
manualRequestWithAddToDictionary.getDictionaryEntryType()); manualRequestWithAddToDictionary.getDictionaryEntryType());
dictionaryEntriesToUnDelete.forEach(entry -> { dictionaryEntriesToUnDelete.forEach(entry -> {
typeIdsOfModifiedDictionaries.add(entry.getTypeId()); typeIdsOfModifiedDictionaries.add(entry.getTypeId());
addToDictionary(entry.getTypeId(), value, manualRequestWithAddToDictionary.getDossierId(), fileId, manualRequestWithAddToDictionary.getDictionaryEntryType()); addToDictionary(entry.getTypeId(), value, manualRequestWithAddToDictionary.getDossierId(), fileId, manualRequestWithAddToDictionary.getDictionaryEntryType());
}); });
addToDictionary(manualRequestWithAddToDictionary.getDictionaryTypeId(), addToDictionary(manualRequestWithAddToDictionary.getDictionaryTypeId(),
value, value,
manualRequestWithAddToDictionary.getDossierId(), manualRequestWithAddToDictionary.getDossierId(),
fileId, fileId,
manualRequestWithAddToDictionary.getDictionaryEntryType()); manualRequestWithAddToDictionary.getDictionaryEntryType());
typeIdsOfModifiedDictionaries.add(manualRequestWithAddToDictionary.getDictionaryTypeId()); typeIdsOfModifiedDictionaries.add(manualRequestWithAddToDictionary.getDictionaryTypeId());
return typeIdsOfModifiedDictionaries; return typeIdsOfModifiedDictionaries;
} }
@ -300,7 +300,8 @@ public class ManualRedactionDictionaryUpdateHandler {
resizeRedactionsWithSameValue.forEach(resizeRedaction -> { resizeRedactionsWithSameValue.forEach(resizeRedaction -> {
var file = fileStatusPersistenceService.getStatus(resizeRedaction.getId().getFileId()); var file = fileStatusPersistenceService.getStatus(resizeRedaction.getId().getFileId());
var dossierForResizeRedaction = dossierPersistenceService.findByDossierId(file.getDossierId()); var dossierForResizeRedaction = dossierPersistenceService.findByDossierId(file.getDossierId());
if (!file.getWorkflowStatus().equals(WorkflowStatus.APPROVED) && dossierTemplateId.equals(dossierForResizeRedaction.getDossierTemplateId()) if (!file.getWorkflowStatus().equals(WorkflowStatus.APPROVED)
&& dossierTemplateId.equals(dossierForResizeRedaction.getDossierTemplateId())
&& (resizeRedaction.isAddToAllDossiers() || resizeRedaction.getUpdateDictionary())) { && (resizeRedaction.isAddToAllDossiers() || resizeRedaction.getUpdateDictionary())) {
resizeRedactionPersistenceService.hardDelete(resizeRedaction.getId().getFileId(), resizeRedaction.getId().getAnnotationId()); resizeRedactionPersistenceService.hardDelete(resizeRedaction.getId().getFileId(), resizeRedaction.getId().getAnnotationId());
} }

View File

@ -49,11 +49,11 @@ public class ManualRedactionProviderService {
private final ResizeRedactionPersistenceService resizeRedactionPersistenceService; private final ResizeRedactionPersistenceService resizeRedactionPersistenceService;
public void convertUnprocessedAddToDictionariesToLocalChanges(String fileId) {
public void convertUnprocessedAddToDictionariesToLocalChanges(String fileId){
var unprocessedManualAdds = addRedactionPersistenceService.findEntriesByFileIdAndOptions(fileId, ManualChangesQueryOptions.unprocessedOnly()); var unprocessedManualAdds = addRedactionPersistenceService.findEntriesByFileIdAndOptions(fileId, ManualChangesQueryOptions.unprocessedOnly());
for (var unprocessedManualAdd : unprocessedManualAdds){ for (var unprocessedManualAdd : unprocessedManualAdds) {
if (unprocessedManualAdd.isAddToDictionary() || unprocessedManualAdd.isAddToAllDossiers()){ if (unprocessedManualAdd.isAddToDictionary() || unprocessedManualAdd.isAddToAllDossiers()) {
unprocessedManualAdd.setAddToDictionary(false); unprocessedManualAdd.setAddToDictionary(false);
unprocessedManualAdd.setAddToAllDossiers(false); unprocessedManualAdd.setAddToAllDossiers(false);
unprocessedManualAdd.setLegalBasis(""); unprocessedManualAdd.setLegalBasis("");
@ -65,6 +65,7 @@ public class ManualRedactionProviderService {
@Transactional @Transactional
public ManualRedactions getManualRedactions(String fileId, ManualChangesQueryOptions options) { public ManualRedactions getManualRedactions(String fileId, ManualChangesQueryOptions options) {
return getManualRedactions(fileId, options, Collections.emptyList()); return getManualRedactions(fileId, options, Collections.emptyList());
} }
@ -121,13 +122,25 @@ public class ManualRedactionProviderService {
legalBasisChanges = Collections.emptySet(); legalBasisChanges = Collections.emptySet();
} }
if(!annotationIds.isEmpty()){ if (!annotationIds.isEmpty()) {
return new ManualRedactions(removals.stream().filter(r -> annotationIds.contains(r.getAnnotationId())).collect(Collectors.toSet()), return new ManualRedactions(removals.stream()
entriesToAdd.stream().filter(r -> annotationIds.contains(r.getAnnotationId())).collect(Collectors.toSet()), .filter(r -> annotationIds.contains(r.getAnnotationId()))
forceRedactions.stream().filter(r -> annotationIds.contains(r.getAnnotationId())).collect(Collectors.toSet()), .collect(Collectors.toSet()),
recategorizations.stream().filter(r -> annotationIds.contains(r.getAnnotationId())).collect(Collectors.toSet()), entriesToAdd.stream()
legalBasisChanges.stream().filter(r -> annotationIds.contains(r.getAnnotationId())).collect(Collectors.toSet()), .filter(r -> annotationIds.contains(r.getAnnotationId()))
resizeRedactions.stream().filter(r -> annotationIds.contains(r.getAnnotationId())).collect(Collectors.toSet())); .collect(Collectors.toSet()),
forceRedactions.stream()
.filter(r -> annotationIds.contains(r.getAnnotationId()))
.collect(Collectors.toSet()),
recategorizations.stream()
.filter(r -> annotationIds.contains(r.getAnnotationId()))
.collect(Collectors.toSet()),
legalBasisChanges.stream()
.filter(r -> annotationIds.contains(r.getAnnotationId()))
.collect(Collectors.toSet()),
resizeRedactions.stream()
.filter(r -> annotationIds.contains(r.getAnnotationId()))
.collect(Collectors.toSet()));
} }
return new ManualRedactions(removals, entriesToAdd, forceRedactions, recategorizations, legalBasisChanges, resizeRedactions); return new ManualRedactions(removals, entriesToAdd, forceRedactions, recategorizations, legalBasisChanges, resizeRedactions);

View File

@ -222,7 +222,6 @@ public class ManualRedactionService {
removeRedactionRequest.getDossierTemplateId()); removeRedactionRequest.getDossierTemplateId());
} }
log.info("add removeRedaction for file {} and annotation {}", fileId, removeRedactionRequest.getAnnotationId()); log.info("add removeRedaction for file {} and annotation {}", fileId, removeRedactionRequest.getAnnotationId());
IdRemovalEntity idRemoval = removeRedactionPersistenceService.insert(fileId, removeRedactionRequest); IdRemovalEntity idRemoval = removeRedactionPersistenceService.insert(fileId, removeRedactionRequest);

View File

@ -229,6 +229,7 @@ public class DictionaryPersistenceService {
typeRepository.updateByIdSetIncrementVersionByOne(typeId); typeRepository.updateByIdSetIncrementVersionByOne(typeId);
} }
@Transactional @Transactional
public void setVersion(String typeId, long version) { public void setVersion(String typeId, long version) {

View File

@ -114,7 +114,6 @@ public class DossierStatusPersistenceService {
} }
@Transactional @Transactional
public List<DossierStatusInfo> getAllDossierStatuses(List<String> dossierTemplateIds) { public List<DossierStatusInfo> getAllDossierStatuses(List<String> dossierTemplateIds) {

View File

@ -134,7 +134,8 @@ public class DownloadStatusPersistenceService {
@Transactional @Transactional
public DownloadStatusEntity getStatusesByUuid(String uuid) { public DownloadStatusEntity getStatusesByUuid(String uuid) {
return downloadStatusRepository.findByUuid(uuid).orElseThrow(() -> new NotFoundException(String.format("DownloadStatus not found for uuid: %s", uuid))); return downloadStatusRepository.findByUuid(uuid)
.orElseThrow(() -> new NotFoundException(String.format("DownloadStatus not found for uuid: %s", uuid)));
} }

View File

@ -403,7 +403,10 @@ public class FileStatusPersistenceService {
public List<FileEntity> getStatusesForDossierTemplate(String dossierTemplateId) { public List<FileEntity> getStatusesForDossierTemplate(String dossierTemplateId) {
return dossierService.findAllDossiersForDossierTemplateId(dossierTemplateId) return dossierService.findAllDossiersForDossierTemplateId(dossierTemplateId)
.stream().map(dossier -> fileRepository.findByDossierId(dossier.getId())).flatMap(List::stream).toList(); .stream()
.map(dossier -> fileRepository.findByDossierId(dossier.getId()))
.flatMap(List::stream)
.toList();
} }
@ -453,7 +456,7 @@ public class FileStatusPersistenceService {
@Transactional @Transactional
public void softDelete(String fileId, OffsetDateTime softDeletedTime) { public void softDelete(String fileId, OffsetDateTime softDeletedTime) {
fileRepository.setSoftDelete(fileId, ProcessingStatus.PROCESSED, OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS), softDeletedTime); fileRepository.setSoftDelete(fileId, ProcessingStatus.PROCESSED, OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS), softDeletedTime);
} }

View File

@ -139,6 +139,7 @@ public class RulesPersistenceService {
}); });
} }
@Transactional @Transactional
public void setRules(@NonNull String rules, String dossierTemplateId, RuleFileType ruleFileType, long version, boolean timeoutDetected) { public void setRules(@NonNull String rules, String dossierTemplateId, RuleFileType ruleFileType, long version, boolean timeoutDetected) {

View File

@ -42,6 +42,7 @@ public class SaasMigrationStatusPersistenceService {
return migrationStatusOptional.isPresent() && migrationStatusOptional.get().getStatus() != SaasMigrationStatus.FINISHED; return migrationStatusOptional.isPresent() && migrationStatusOptional.get().getStatus() != SaasMigrationStatus.FINISHED;
} }
public boolean migrationFinishedForTenant() { public boolean migrationFinishedForTenant() {
return saasMigrationStatusRepository.findAllWhereStatusNotFinishedAndNotError() == 0; return saasMigrationStatusRepository.findAllWhereStatusNotFinishedAndNotError() == 0;

View File

@ -56,6 +56,7 @@ public class ViewedPagesPersistenceService {
public void deleteForFiles(List<String> fileIds) { public void deleteForFiles(List<String> fileIds) {
viewedPagesRepository.deleteByFileIds(fileIds); viewedPagesRepository.deleteByFileIds(fileIds);
} }

View File

@ -55,17 +55,21 @@ public class CommentPersistenceService {
return commentRepository.existsByFileIdAndSoftDeletedTimeIsNull(fileId); return commentRepository.existsByFileIdAndSoftDeletedTimeIsNull(fileId);
} }
public void softDeleteCommentsForFiles(List<String> fileId, OffsetDateTime softDeletedTime) { public void softDeleteCommentsForFiles(List<String> fileId, OffsetDateTime softDeletedTime) {
// commentRepository.softDeleteCommentsByFilesAndAnnotationSoftDeletedTime(fileId, softDeletedTime); // commentRepository.softDeleteCommentsByFilesAndAnnotationSoftDeletedTime(fileId, softDeletedTime);
commentRepository.softDeleteCommentsByFiles(fileId, softDeletedTime); commentRepository.softDeleteCommentsByFiles(fileId, softDeletedTime);
} }
public void undeleteByFileId(String fileId, OffsetDateTime deletionTime) { public void undeleteByFileId(String fileId, OffsetDateTime deletionTime) {
commentRepository.undeleteByFileId(fileId, deletionTime); commentRepository.undeleteByFileId(fileId, deletionTime);
} }
public void deleteByFileIds(List<String> fileIds) { public void deleteByFileIds(List<String> fileIds) {
commentRepository.deleteCommentsByFiles(fileIds); commentRepository.deleteCommentsByFiles(fileIds);
} }

Some files were not shown because too many files have changed in this diff Show More