RED-10196: Backend adaptions for RM/DM unification
This commit is contained in:
parent
b8710d57b3
commit
4d36a3d813
@ -7,7 +7,7 @@ plugins {
|
||||
}
|
||||
|
||||
val redactionServiceVersion by rootProject.extra { "4.290.0" }
|
||||
val pdftronRedactionServiceVersion by rootProject.extra { "4.87.0" }
|
||||
val pdftronRedactionServiceVersion by rootProject.extra { "4.89.0-RED10196.0" }
|
||||
val redactionReportServiceVersion by rootProject.extra { "4.81.0" }
|
||||
val searchServiceVersion by rootProject.extra { "2.90.0" }
|
||||
|
||||
|
||||
@ -21,6 +21,7 @@ import com.iqser.red.persistence.service.v2.external.api.impl.mapper.ComponentMa
|
||||
import com.iqser.red.service.persistence.management.v1.processor.exception.NotAllowedException;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.roles.ApplicationRoles;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.ComponentLogService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.CurrentApplicationTypeProvider;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierTemplatePersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.users.UserService;
|
||||
@ -34,6 +35,7 @@ import com.iqser.red.service.persistence.service.v2.api.external.model.FileCompo
|
||||
import com.iqser.red.service.persistence.service.v2.api.external.model.FileComponentsList;
|
||||
import com.iqser.red.service.persistence.service.v2.api.external.resource.ComponentResource;
|
||||
import com.knecon.fforesight.keycloakcommons.security.KeycloakSecurity;
|
||||
import com.knecon.fforesight.tenantcommons.TenantProvider;
|
||||
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.AccessLevel;
|
||||
@ -50,11 +52,9 @@ public class ComponentControllerV2 implements ComponentResource {
|
||||
private final StatusController statusController;
|
||||
private final FileStatusService fileStatusService;
|
||||
private final DossierTemplatePersistenceService dossierTemplatePersistenceService;
|
||||
private final CurrentApplicationTypeProvider currentApplicationTypeProvider;
|
||||
private final ComponentMapper componentMapper = ComponentMapper.INSTANCE;
|
||||
|
||||
@Value("${application.type}")
|
||||
private String applicationType;
|
||||
|
||||
|
||||
@Override
|
||||
public FileComponents getComponents(@PathVariable(DOSSIER_TEMPLATE_ID_PARAM) String dossierTemplateId,
|
||||
@ -154,7 +154,7 @@ public class ComponentControllerV2 implements ComponentResource {
|
||||
|
||||
private void checkApplicationType() {
|
||||
|
||||
if(!applicationType.equals("DocuMine")) {
|
||||
if (!currentApplicationTypeProvider.isDocuMine()) {
|
||||
throw new NotAllowedException("Components can only be accessed in DocuMine");
|
||||
}
|
||||
}
|
||||
|
||||
@ -21,6 +21,7 @@ import com.iqser.red.persistence.service.v1.external.api.impl.controller.Downloa
|
||||
import com.iqser.red.persistence.service.v1.external.api.impl.controller.StatusController;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.AccessControlService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.CurrentApplicationTypeProvider;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.DossierAttributesManagementService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.AuditPersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DownloadStatusPersistenceService;
|
||||
@ -42,24 +43,25 @@ import com.knecon.fforesight.keycloakcommons.security.KeycloakSecurity;
|
||||
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.experimental.FieldDefaults;
|
||||
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@Tag(name = "2. Dossier endpoints", description = "Provides operations related to dossiers")
|
||||
@FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE)
|
||||
public class DossierControllerV2 implements DossierResource {
|
||||
|
||||
private final DossierTemplateController dossierTemplateController;
|
||||
private final DossierController dossierController;
|
||||
private final AccessControlService accessControlService;
|
||||
private final DossierAttributesManagementService dossierAttributesManagementService;
|
||||
private final AuditPersistenceService auditPersistenceService;
|
||||
private final DownloadController downloadController;
|
||||
private final StatusController statusController;
|
||||
private final DownloadStatusPersistenceService downloadStatusPersistenceService;
|
||||
|
||||
@Value("${application.type}")
|
||||
private String applicationType;
|
||||
DossierTemplateController dossierTemplateController;
|
||||
DossierController dossierController;
|
||||
AccessControlService accessControlService;
|
||||
DossierAttributesManagementService dossierAttributesManagementService;
|
||||
AuditPersistenceService auditPersistenceService;
|
||||
DownloadController downloadController;
|
||||
StatusController statusController;
|
||||
DownloadStatusPersistenceService downloadStatusPersistenceService;
|
||||
CurrentApplicationTypeProvider currentApplicationTypeProvider;
|
||||
|
||||
|
||||
public DossierList getDossiers(@PathVariable(DOSSIER_TEMPLATE_ID_PARAM) String dossierTemplateId,
|
||||
@ -191,7 +193,7 @@ public class DossierControllerV2 implements DossierResource {
|
||||
.description(dossier.getDescription())
|
||||
.ownerId(dossier.getOwnerId())
|
||||
.memberIds(dossier.getMemberIds())
|
||||
.approverIds(applicationType.equals("DocuMine") ? dossier.getMemberIds() : dossier.getApproverIds()) // for DocuMine, the members are always set as approvers
|
||||
.approverIds(currentApplicationTypeProvider.isDocuMine() ? dossier.getMemberIds() : dossier.getApproverIds()) // for DocuMine, the members are always set as approvers
|
||||
.downloadFileTypes(Set.of(DownloadFileType.ORIGINAL))
|
||||
.reportTemplateIds(dossier.getReportTemplateIds())
|
||||
.watermarkId(null)
|
||||
|
||||
@ -30,10 +30,6 @@ dependencies {
|
||||
exclude(group = "com.iqser.red.service", module = "persistence-service-internal-api-v1")
|
||||
exclude(group = "com.iqser.red.service", module = "persistence-service-shared-api-v1")
|
||||
}
|
||||
api("com.knecon.fforesight:layoutparser-service-internal-api:0.181.0") {
|
||||
exclude(group = "com.iqser.red.service", module = "persistence-service-internal-api-v1")
|
||||
exclude(group = "com.iqser.red.service", module = "persistence-service-shared-api-v1")
|
||||
}
|
||||
api("com.iqser.red.service:search-service-api-v1:${rootProject.extra.get("searchServiceVersion")}") {
|
||||
exclude(group = "com.iqser.red.service", module = "persistence-service-internal-api-v1")
|
||||
exclude(group = "com.iqser.red.service", module = "persistence-service-shared-api-v1")
|
||||
@ -42,10 +38,10 @@ dependencies {
|
||||
implementation("com.knecon.fforesight:llm-service-api:1.20.0-RED10072.2")
|
||||
api("com.knecon.fforesight:jobs-commons:0.10.0")
|
||||
api("com.iqser.red.commons:storage-commons:2.50.0")
|
||||
api("com.knecon.fforesight:tenant-commons:0.31.0") {
|
||||
api("com.knecon.fforesight:tenant-commons:0.31.0-RED10196.0") {
|
||||
exclude(group = "com.iqser.red.commons", module = "storage-commons")
|
||||
}
|
||||
api("com.knecon.fforesight:database-tenant-commons:0.28.0") {
|
||||
api("com.knecon.fforesight:database-tenant-commons:0.28.0-RED10196.0") {
|
||||
exclude(group = "com.knecon.fforesight", module = "tenant-commons")
|
||||
}
|
||||
api("com.knecon.fforesight:keycloak-commons:0.30.0") {
|
||||
|
||||
@ -19,10 +19,14 @@ import java.util.stream.Collectors;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.ComponentMappingImportModel;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.EntityTypeImportModel;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.ImportTemplateResult;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.TemplateImportInfo;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.dataexchange.zipreaders.DossierTemplateArchiveReader;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.dataexchange.zipreaders.ZipEntryIterator;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.ColorsEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.FileAttributesGeneralConfigurationEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.WatermarkEntity;
|
||||
@ -33,14 +37,11 @@ import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileAttributeConfigEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.exception.ConflictException;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.ComponentMappingImportModel;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.ImportTemplateResult;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.TemplateImportInfo;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.dataexchange.zipreaders.DossierTemplateArchiveReader;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.dataexchange.zipreaders.ZipEntryIterator;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.ColorsService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.ComponentMappingService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.CurrentApplicationTypeProvider;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.DateFormatsValidationService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.LayoutParsingTypeProvider;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.DefaultDateFormatsProvider;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.ReportTemplateService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.RulesValidationService;
|
||||
@ -72,43 +73,44 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemp
|
||||
import com.iqser.red.service.redaction.v1.model.DroolsValidation;
|
||||
import com.iqser.red.storage.commons.service.StorageService;
|
||||
import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter;
|
||||
import com.knecon.fforesight.service.layoutparser.internal.api.queue.LayoutParsingType;
|
||||
import com.knecon.fforesight.tenantcommons.TenantContext;
|
||||
|
||||
import io.micrometer.observation.annotation.Observed;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.experimental.FieldDefaults;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE)
|
||||
public class DossierTemplateImportService {
|
||||
|
||||
@Value("${application.type}")
|
||||
private String applicationType;
|
||||
|
||||
private final DossierTemplateRepository dossierTemplateRepository;
|
||||
private final LegalBasisMappingPersistenceService legalBasisMappingPersistenceService;
|
||||
private final RulesPersistenceService rulesPersistenceService;
|
||||
private final DateFormatsPersistenceService dateFormatsPersistenceService;
|
||||
private final DossierTemplatePersistenceService dossierTemplatePersistenceService;
|
||||
private final DossierAttributeConfigPersistenceService dossierAttributeConfigPersistenceService;
|
||||
private final FileAttributeConfigPersistenceService fileAttributeConfigPersistenceService;
|
||||
private final ColorsService colorsService;
|
||||
private final DossierStatusPersistenceService dossierStatusPersistenceService;
|
||||
private final WatermarkService watermarkService;
|
||||
private final ReportTemplateService reportTemplateService;
|
||||
private final ReportTemplatePersistenceService reportTemplatePersistenceService;
|
||||
private final RulesValidationService rulesValidationService;
|
||||
private final DateFormatsValidationService dateFormatsValidationService;
|
||||
private final StorageService storageService;
|
||||
private final FileManagementServiceSettings settings;
|
||||
private final ComponentMappingService componentMappingService;
|
||||
private final ComponentDefinitionPersistenceService componentDefinitionPersistenceService;
|
||||
private final EntityTypeImportService entityTypeImportService;
|
||||
private final SystemManagedTypesImport systemManagedTypesImport;
|
||||
private final DefaultDateFormatsProvider defaultDateFormatsProvider;
|
||||
DossierTemplateRepository dossierTemplateRepository;
|
||||
LegalBasisMappingPersistenceService legalBasisMappingPersistenceService;
|
||||
RulesPersistenceService rulesPersistenceService;
|
||||
DateFormatsPersistenceService dateFormatsPersistenceService;
|
||||
DossierTemplatePersistenceService dossierTemplatePersistenceService;
|
||||
DossierAttributeConfigPersistenceService dossierAttributeConfigPersistenceService;
|
||||
FileAttributeConfigPersistenceService fileAttributeConfigPersistenceService;
|
||||
ColorsService colorsService;
|
||||
DossierStatusPersistenceService dossierStatusPersistenceService;
|
||||
WatermarkService watermarkService;
|
||||
ReportTemplateService reportTemplateService;
|
||||
ReportTemplatePersistenceService reportTemplatePersistenceService;
|
||||
RulesValidationService rulesValidationService;
|
||||
DateFormatsValidationService dateFormatsValidationService;
|
||||
StorageService storageService;
|
||||
FileManagementServiceSettings settings;
|
||||
ComponentMappingService componentMappingService;
|
||||
ComponentDefinitionPersistenceService componentDefinitionPersistenceService;
|
||||
EntityTypeImportService entityTypeImportService;
|
||||
SystemManagedTypesImport systemManagedTypesImport;
|
||||
LayoutParsingTypeProvider layoutParsingTypeProvider;
|
||||
CurrentApplicationTypeProvider currentApplicationTypeProvider;
|
||||
DefaultDateFormatsProvider defaultDateFormatsProvider;
|
||||
|
||||
|
||||
public String importDossierTemplate(ImportDossierTemplateRequest request) {
|
||||
@ -147,6 +149,10 @@ public class DossierTemplateImportService {
|
||||
int importStep = 1;
|
||||
var dossierTemplateMeta = request.getDossierTemplate();
|
||||
|
||||
if (dossierTemplateMeta.getLayoutParsingType() == null) {
|
||||
dossierTemplateMeta.setLayoutParsingType(layoutParsingTypeProvider.deferFromCurrentApplicationType());
|
||||
}
|
||||
|
||||
TemplateImportInfo templateImportInfo = TemplateImportInfo.builder().build();
|
||||
|
||||
DossierTemplateEntity existingDossierTemplate = null;
|
||||
@ -302,7 +308,6 @@ public class DossierTemplateImportService {
|
||||
dossierTemplateEntity.setId(UUID.randomUUID().toString());
|
||||
dossierTemplateEntity.setDateAdded(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
dossierTemplateEntity.setCreatedBy(request.getUserId());
|
||||
dossierTemplateEntity.setLayoutParsingType(deferFromApplicationType());
|
||||
|
||||
var loadedDossierTemplate = dossierTemplateRepository.save(dossierTemplateEntity);
|
||||
loadedDossierTemplate.setDossierTemplateStatus(dossierTemplatePersistenceService.computeDossierTemplateStatus(loadedDossierTemplate));
|
||||
@ -496,7 +501,7 @@ public class DossierTemplateImportService {
|
||||
private void setDataFormats(ImportTemplateResult request, String dossierTemplateId) {
|
||||
|
||||
String dateFormats = request.getDateFormats();
|
||||
if (dateFormats == null && applicationType.equals("DocuMine")) {
|
||||
if (dateFormats == null && currentApplicationTypeProvider.isDocuMine()) {
|
||||
dateFormats = defaultDateFormatsProvider.getDateFormats();
|
||||
}
|
||||
if (dateFormats != null) {
|
||||
@ -523,7 +528,7 @@ public class DossierTemplateImportService {
|
||||
dossierTemplateEntity.setModifiedBy(userId);
|
||||
dossierTemplateEntity.setValidFrom(dossierTemplate.getValidFrom() == null ? dossierTemplateEntity.getValidFrom() : dossierTemplate.getValidFrom());
|
||||
dossierTemplateEntity.setValidTo(dossierTemplate.getValidTo() == null ? dossierTemplateEntity.getValidTo() : dossierTemplate.getValidTo());
|
||||
dossierTemplateEntity.setLayoutParsingType(deferFromApplicationType());
|
||||
dossierTemplateEntity.setLayoutParsingType(layoutParsingTypeProvider.deferFromCurrentApplicationType());
|
||||
|
||||
dossierTemplateEntity.setDownloadFileTypes(dossierTemplate.getDownloadFileTypes() == null || dossierTemplate.getDownloadFileTypes()
|
||||
.isEmpty() ? dossierTemplateEntity.getDownloadFileTypes() : dossierTemplate.getDownloadFileTypes());
|
||||
@ -531,12 +536,6 @@ public class DossierTemplateImportService {
|
||||
}
|
||||
|
||||
|
||||
private LayoutParsingType deferFromApplicationType() {
|
||||
|
||||
return Objects.equals(applicationType, "DocuMine") ? LayoutParsingType.DOCUMINE_OLD : LayoutParsingType.REDACT_MANAGER_WITHOUT_DUPLICATE_PARAGRAPH;
|
||||
}
|
||||
|
||||
|
||||
private void setColors(String dossierTemplateId, Colors requestedColors) {
|
||||
// set colors
|
||||
if (requestedColors != null) {
|
||||
|
||||
@ -2,7 +2,6 @@ package com.iqser.red.service.persistence.management.v1.processor.migration;
|
||||
|
||||
import static com.iqser.red.service.persistence.management.v1.processor.configuration.MessagingConfiguration.MIGRATION_REQUEST_QUEUE;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
@ -27,7 +26,6 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist
|
||||
import com.iqser.red.service.persistence.management.v1.processor.settings.FileManagementServiceSettings;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.utils.StorageIdUtils;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.migration.MigratedIds;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualForceRedaction;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualRedactionEntry;
|
||||
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.SaasMigrationStatus;
|
||||
@ -123,7 +121,7 @@ public class SaasMigrationService implements TenantSyncService {
|
||||
// delete NER_ENTITIES since offsets depend on old document structure.
|
||||
storageService.deleteObject(TenantContext.getTenantId(), StorageIdUtils.getStorageId(file.getDossierId(), file.getFileId(), FileType.NER_ENTITIES));
|
||||
|
||||
var layoutParsingRequest = layoutParsingRequestFactory.build(file.getDossierId(), file.getFileId(), false);
|
||||
var layoutParsingRequest = layoutParsingRequestFactory.build(dossier.getDossierTemplate().getId(), file.getDossierId(), file.getFileId(), false);
|
||||
|
||||
rabbitTemplate.convertAndSend(LayoutParsingQueueNames.LAYOUT_PARSING_REQUEST_EXCHANGE, TenantContext.getTenantId(), layoutParsingRequest);
|
||||
|
||||
@ -159,7 +157,7 @@ public class SaasMigrationService implements TenantSyncService {
|
||||
|
||||
log.info("Starting Migration for dossierId {} and fileId {}", dossierId, fileId);
|
||||
saasMigrationStatusPersistenceService.createMigrationRequiredStatus(dossierId, fileId);
|
||||
var layoutParsingRequest = layoutParsingRequestFactory.build(dossierId, fileId, false);
|
||||
var layoutParsingRequest = layoutParsingRequestFactory.build(dossier.getDossierTemplate().getId(), dossierId, fileId, false);
|
||||
rabbitTemplate.convertAndSend(LayoutParsingQueueNames.LAYOUT_PARSING_REQUEST_EXCHANGE, TenantContext.getTenantId(), layoutParsingRequest);
|
||||
}
|
||||
|
||||
|
||||
@ -1,20 +1,14 @@
|
||||
package com.iqser.red.service.persistence.management.v1.processor.migration.migrations;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStreamReader;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierTemplateEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.migration.Migration;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.DefaultDateFormatsProvider;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.CurrentApplicationTypeProvider;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DateFormatsPersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierTemplatePersistenceService;
|
||||
|
||||
@ -31,14 +25,13 @@ public class AddDateFormatsToTemplatesMigration25 extends Migration {
|
||||
private static final long VERSION = 25;
|
||||
|
||||
@Autowired
|
||||
DateFormatsPersistenceService dateFormatsPersistenceService;
|
||||
private DateFormatsPersistenceService dateFormatsPersistenceService;
|
||||
@Autowired
|
||||
DossierTemplatePersistenceService dossierTemplatePersistenceService;
|
||||
private DossierTemplatePersistenceService dossierTemplatePersistenceService;
|
||||
@Autowired
|
||||
DefaultDateFormatsProvider defaultDateFormatsProvider;
|
||||
|
||||
@Value("${application.type}")
|
||||
private String applicationType;
|
||||
private DefaultDateFormatsProvider defaultDateFormatsProvider;
|
||||
@Autowired
|
||||
private CurrentApplicationTypeProvider currentApplicationTypeProvider;
|
||||
|
||||
|
||||
public AddDateFormatsToTemplatesMigration25() {
|
||||
@ -51,7 +44,7 @@ public class AddDateFormatsToTemplatesMigration25 extends Migration {
|
||||
@SneakyThrows
|
||||
protected void migrate() {
|
||||
|
||||
if (!applicationType.equalsIgnoreCase("DocuMine")) {
|
||||
if (!currentApplicationTypeProvider.isDocuMine()) {
|
||||
log.info("Skipping AddDateFormatsToTemplatesMigration25 as application type is not DocuMine!!!");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -3,18 +3,16 @@ package com.iqser.red.service.persistence.management.v1.processor.migration.migr
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.iqser.red.service.pdftron.redaction.v1.api.model.ApplicationType;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierTemplateEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.migration.Migration;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.migration.StorageToMongoCopyService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.ComponentDefinitionService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.CurrentApplicationTypeProvider;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierTemplatePersistenceService;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.component.ComponentDefinitionAddRequest;
|
||||
|
||||
import lombok.experimental.NonFinal;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
@ -116,16 +114,14 @@ public class ComponentOverridesMigration21 extends Migration {
|
||||
"Certificate of analysis batch identification",
|
||||
"Certificate of analysis batch identification"));
|
||||
|
||||
@NonFinal
|
||||
@Value("${application.type}")
|
||||
String applicationType;
|
||||
|
||||
@Autowired
|
||||
ComponentDefinitionService componentDefinitionService;
|
||||
@Autowired
|
||||
DossierTemplatePersistenceService dossierTemplatePersistenceService;
|
||||
@Autowired
|
||||
StorageToMongoCopyService storageToMongoCopyService;
|
||||
@Autowired
|
||||
private CurrentApplicationTypeProvider currentApplicationTypeProvider;
|
||||
|
||||
|
||||
public ComponentOverridesMigration21() {
|
||||
@ -137,7 +133,7 @@ public class ComponentOverridesMigration21 extends Migration {
|
||||
@Override
|
||||
protected void migrate() {
|
||||
|
||||
if (!applicationType.equals("DocuMine")) {
|
||||
if (!currentApplicationTypeProvider.isDocuMine()) {
|
||||
log.info("Skipping component migration, due to application type not being equal to DOCUMINE!");
|
||||
}
|
||||
|
||||
|
||||
@ -5,6 +5,7 @@ import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.iqser.red.service.persistence.management.v1.processor.migration.Migration;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.CurrentApplicationTypeProvider;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierPersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileStatusPersistenceService;
|
||||
@ -16,7 +17,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
@Slf4j
|
||||
@Setter
|
||||
@Service
|
||||
public class DocumineLayoutRewriteMigration20 extends Migration {
|
||||
public class DocumineLayoutRewriteMigration20 extends Migration {
|
||||
|
||||
private static final String NAME = "Reanalyse layout for not approved Documine files";
|
||||
private static final long VERSION = 20;
|
||||
@ -30,10 +31,8 @@ public class DocumineLayoutRewriteMigration20 extends Migration {
|
||||
@Autowired
|
||||
private FileStatusPersistenceService fileStatusPersistenceService;
|
||||
|
||||
|
||||
@Value("${application.type}")
|
||||
private String applicationType;
|
||||
|
||||
@Autowired
|
||||
private CurrentApplicationTypeProvider currentApplicationTypeProvider;
|
||||
|
||||
|
||||
public DocumineLayoutRewriteMigration20() {
|
||||
@ -45,7 +44,7 @@ public class DocumineLayoutRewriteMigration20 extends Migration {
|
||||
@Override
|
||||
protected void migrate() {
|
||||
|
||||
if(!applicationType.equalsIgnoreCase("DocuMine")){
|
||||
if (!currentApplicationTypeProvider.isDocuMine()) {
|
||||
log.info("Skipping DocumineLayoutRewriteMigration20 as application type is not DocuMine!!!");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -0,0 +1,44 @@
|
||||
package com.iqser.red.service.persistence.management.v1.processor.service;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.knecon.fforesight.tenantcommons.TenantApplicationType;
|
||||
import com.knecon.fforesight.tenantcommons.TenantContext;
|
||||
import com.knecon.fforesight.tenantcommons.TenantProvider;
|
||||
|
||||
import lombok.AccessLevel;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.experimental.FieldDefaults;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE)
|
||||
public class CurrentApplicationTypeProvider {
|
||||
|
||||
TenantProvider tenantProvider;
|
||||
|
||||
Map<String, TenantApplicationType> cache = new ConcurrentHashMap<>();
|
||||
|
||||
|
||||
public TenantApplicationType get() {
|
||||
|
||||
return cache.computeIfAbsent(TenantContext.getTenantId(), tenantProvider::getTenantApplicationType);
|
||||
}
|
||||
|
||||
|
||||
public boolean isDocuMine() {
|
||||
|
||||
return get().equals(TenantApplicationType.DocuMine);
|
||||
}
|
||||
|
||||
|
||||
public boolean isRedactManager() {
|
||||
|
||||
return get().equals(TenantApplicationType.RedactManager);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -14,11 +14,9 @@ import java.util.stream.Collectors;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.google.common.collect.Sets;
|
||||
import com.iqser.red.service.pdftron.redaction.v1.api.model.ApplicationType;
|
||||
import com.iqser.red.service.pdftron.redaction.v1.api.model.ProcessUntouchedDocumentRequest;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.configuration.MessagingConfiguration;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.TypeEntity;
|
||||
@ -89,7 +87,6 @@ import lombok.AccessLevel;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.experimental.FieldDefaults;
|
||||
import lombok.experimental.NonFinal;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
@ -98,10 +95,6 @@ import lombok.extern.slf4j.Slf4j;
|
||||
@FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE)
|
||||
public class FileStatusService {
|
||||
|
||||
@NonFinal
|
||||
@Value("${application.type}")
|
||||
String applicationType;
|
||||
|
||||
FileStatusPersistenceService fileStatusPersistenceService;
|
||||
DossierPersistenceService dossierPersistenceService;
|
||||
DossierTemplatePersistenceService dossierTemplatePersistenceService;
|
||||
@ -125,6 +118,7 @@ public class FileStatusService {
|
||||
ComponentDefinitionPersistenceService componentDefinitionPersistenceService;
|
||||
EntityLogMongoService entityLogMongoService;
|
||||
ComponentLogMongoService componentLogMongoService;
|
||||
CurrentApplicationTypeProvider currentApplicationTypeProvider;
|
||||
DictionaryPersistenceService dictionaryPersistenceService;
|
||||
|
||||
WebsocketService websocketService;
|
||||
@ -332,7 +326,7 @@ public class FileStatusService {
|
||||
FileType.DOCUMENT_TEXT.name(),
|
||||
FileType.DOCUMENT_TEXT_OLD.getExtension())) {
|
||||
|
||||
var layoutParsingRequest = layoutParsingRequestFactory.build(dossierId, fileId, priority);
|
||||
var layoutParsingRequest = layoutParsingRequestFactory.build(dossierTemplate.getId(), dossierId, fileId, priority);
|
||||
setStatusFullProcessing(fileId);
|
||||
log.info("Add file: {} from dossier {} to layout parsing request queue", fileId, dossierId);
|
||||
rabbitTemplate.convertAndSend(LayoutParsingQueueNames.LAYOUT_PARSING_REQUEST_EXCHANGE, TenantContext.getTenantId(), layoutParsingRequest);
|
||||
@ -495,12 +489,12 @@ public class FileStatusService {
|
||||
@SneakyThrows
|
||||
public void addToPreprocessingQueue(String dossierId, String fileId, String filename) {
|
||||
|
||||
ApplicationType type = ApplicationType.REDACT_MANAGER;
|
||||
if (applicationType.equals("DocuMine")) {
|
||||
type = ApplicationType.DOCUMINE;
|
||||
}
|
||||
|
||||
var processUntouchedDocumentRequest = ProcessUntouchedDocumentRequest.builder().applicationType(type).dossierId(dossierId).fileId(fileId).fileName(filename).build();
|
||||
var processUntouchedDocumentRequest = ProcessUntouchedDocumentRequest.builder()
|
||||
.highlightExtractionEnabled(currentApplicationTypeProvider.isRedactManager())
|
||||
.dossierId(dossierId)
|
||||
.fileId(fileId)
|
||||
.fileName(filename)
|
||||
.build();
|
||||
|
||||
setStatusPreProcessingQueued(fileId);
|
||||
|
||||
@ -772,7 +766,7 @@ public class FileStatusService {
|
||||
if (removeWatermark) {
|
||||
features.add(AzureOcrFeature.REMOVE_WATERMARKS);
|
||||
}
|
||||
if (applicationType.equals("DocuMine")) {
|
||||
if (currentApplicationTypeProvider.isDocuMine()) {
|
||||
features.add(AzureOcrFeature.ROTATION_CORRECTION);
|
||||
features.add(AzureOcrFeature.FONT_STYLE_DETECTION);
|
||||
}
|
||||
|
||||
@ -0,0 +1,27 @@
|
||||
package com.iqser.red.service.persistence.management.v1.processor.service;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.knecon.fforesight.service.layoutparser.internal.api.queue.LayoutParsingType;
|
||||
|
||||
import lombok.AccessLevel;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.experimental.FieldDefaults;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE)
|
||||
public class LayoutParsingTypeProvider {
|
||||
|
||||
CurrentApplicationTypeProvider currentApplicationTypeProvider;
|
||||
|
||||
public LayoutParsingType deferFromCurrentApplicationType() {
|
||||
|
||||
return switch (currentApplicationTypeProvider.get()) {
|
||||
case DocuMine -> LayoutParsingType.DOCUMINE_OLD;
|
||||
case Clarifynd -> LayoutParsingType.CLARIFYND;
|
||||
default -> LayoutParsingType.REDACT_MANAGER_WITHOUT_DUPLICATE_PARAGRAPH;
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
@ -2,10 +2,10 @@ package com.iqser.red.service.persistence.management.v1.processor.service.layout
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.FileManagementStorageService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierTemplatePersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.settings.FileManagementServiceSettings;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.utils.StorageIdUtils;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileType;
|
||||
@ -18,21 +18,17 @@ import lombok.RequiredArgsConstructor;
|
||||
@RequiredArgsConstructor
|
||||
public class LayoutParsingRequestFactory {
|
||||
|
||||
@Value("${application.type}")
|
||||
private String applicationType;
|
||||
|
||||
private final FileManagementStorageService fileManagementStorageService;
|
||||
|
||||
private final FileManagementServiceSettings fileManagementServiceSettings;
|
||||
|
||||
private final DossierTemplatePersistenceService dossierTemplatePersistenceService;
|
||||
|
||||
public LayoutParsingRequest build(String dossierId, String fileId, boolean priority) {
|
||||
|
||||
LayoutParsingType type = switch (applicationType) {
|
||||
case "DocuMine" -> LayoutParsingType.DOCUMINE;
|
||||
case "TAAS" -> LayoutParsingType.CLARIFYND;
|
||||
default -> LayoutParsingType.REDACT_MANAGER;
|
||||
};
|
||||
public LayoutParsingRequest build(String dossierTemplateId, String dossierId, String fileId, boolean priority) {
|
||||
|
||||
LayoutParsingType layoutParsingType = dossierTemplatePersistenceService.getDossierTemplate(
|
||||
dossierTemplateId).getLayoutParsingType();
|
||||
|
||||
Optional<String> optionalImageFileId = fileManagementStorageService.objectExists(dossierId, fileId, FileType.IMAGE_INFO) //
|
||||
? Optional.of(StorageIdUtils.getStorageId(dossierId, fileId, FileType.IMAGE_INFO)) : Optional.empty();
|
||||
@ -44,7 +40,7 @@ public class LayoutParsingRequestFactory {
|
||||
? Optional.of(StorageIdUtils.getStorageId(dossierId, fileId, FileType.VISUAL_LAYOUT)) : Optional.empty();
|
||||
|
||||
return LayoutParsingRequest.builder()
|
||||
.layoutParsingType(type)
|
||||
.layoutParsingType(layoutParsingType)
|
||||
.identifier(QueueMessageIdentifierService.buildIdentifier(dossierId, fileId, priority))
|
||||
.originFileStorageId(StorageIdUtils.getStorageId(dossierId, fileId, FileType.ORIGIN))
|
||||
.imagesFileStorageId(optionalImageFileId)
|
||||
|
||||
@ -3,14 +3,12 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persis
|
||||
import java.time.OffsetDateTime;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.TypeEntity;
|
||||
@ -18,6 +16,8 @@ import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.
|
||||
import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.exception.ConflictException;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.CurrentApplicationTypeProvider;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.LayoutParsingTypeProvider;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierTemplateRepository;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.TypeRepository;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.RuleFileType;
|
||||
@ -32,16 +32,14 @@ import lombok.RequiredArgsConstructor;
|
||||
@RequiredArgsConstructor
|
||||
public class DossierTemplatePersistenceService {
|
||||
|
||||
@Value("${application.type}")
|
||||
private String applicationType;
|
||||
|
||||
public static final String DOSSIER_TEMPLATE_NOT_FOUND_MESSAGE = "DossierTemplate with Id %s not found.";
|
||||
|
||||
private final DossierTemplateRepository dossierTemplateRepository;
|
||||
private final LegalBasisMappingPersistenceService legalBasisMappingPersistenceService;
|
||||
private final RulesPersistenceService rulesPersistenceService;
|
||||
private final DictionaryPersistenceService dictionaryPersistenceService;
|
||||
|
||||
private final CurrentApplicationTypeProvider currentApplicationTypeProvider;
|
||||
private final LayoutParsingTypeProvider layoutParsingTypeProvider;
|
||||
private final TypeRepository typeRepository;
|
||||
|
||||
private final static int MAX_NAME_LENGTH = 255;
|
||||
@ -51,6 +49,10 @@ public class DossierTemplatePersistenceService {
|
||||
@Transactional
|
||||
public DossierTemplateEntity createOrUpdateDossierTemplate(CreateOrUpdateDossierTemplateRequest createOrUpdateDossierRequest) {
|
||||
|
||||
if (createOrUpdateDossierRequest.getLayoutParsingType() == null) {
|
||||
createOrUpdateDossierRequest.setLayoutParsingType(layoutParsingTypeProvider.deferFromCurrentApplicationType());
|
||||
}
|
||||
|
||||
if (createOrUpdateDossierRequest.getDossierTemplateId() != null) {
|
||||
validateDossierTemplateDates(createOrUpdateDossierRequest.getValidFrom(), createOrUpdateDossierRequest.getValidTo());
|
||||
validateDossierTemplate(createOrUpdateDossierRequest.getName(), createOrUpdateDossierRequest.getDescription());
|
||||
@ -66,7 +68,7 @@ public class DossierTemplatePersistenceService {
|
||||
dossierTemplate.get().setDateModified(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
dossierTemplate.get().setModifiedBy(createOrUpdateDossierRequest.getRequestingUser());
|
||||
dossierTemplate.get().setDossierTemplateStatus(computeDossierTemplateStatus(dossierTemplate.get()));
|
||||
dossierTemplate.get().setLayoutParsingType(deferFromApplicationType());
|
||||
dossierTemplate.get().setLayoutParsingType(createOrUpdateDossierRequest.getLayoutParsingType());
|
||||
return dossierTemplate.get();
|
||||
} else {
|
||||
throw new NotFoundException(String.format(DOSSIER_TEMPLATE_NOT_FOUND_MESSAGE, createOrUpdateDossierRequest.getDossierTemplateId()));
|
||||
@ -83,7 +85,7 @@ public class DossierTemplatePersistenceService {
|
||||
BeanUtils.copyProperties(createOrUpdateDossierRequest, dossierTemplate);
|
||||
dossierTemplate.setDateAdded(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS));
|
||||
dossierTemplate.setCreatedBy(createOrUpdateDossierRequest.getRequestingUser());
|
||||
dossierTemplate.setLayoutParsingType(deferFromApplicationType());
|
||||
dossierTemplate.setLayoutParsingType(createOrUpdateDossierRequest.getLayoutParsingType());
|
||||
rulesPersistenceService.setRules(RulesPersistenceService.DEFAULT_RULES, dossierTemplate.getId(), RuleFileType.ENTITY);
|
||||
var loadedDossierTemplate = dossierTemplateRepository.save(dossierTemplate);
|
||||
loadedDossierTemplate.setDossierTemplateStatus(computeDossierTemplateStatus(loadedDossierTemplate));
|
||||
@ -94,12 +96,6 @@ public class DossierTemplatePersistenceService {
|
||||
}
|
||||
|
||||
|
||||
private LayoutParsingType deferFromApplicationType() {
|
||||
|
||||
return Objects.equals(applicationType, "DocuMine") ? LayoutParsingType.DOCUMINE_OLD : LayoutParsingType.REDACT_MANAGER_WITHOUT_DUPLICATE_PARAGRAPH;
|
||||
}
|
||||
|
||||
|
||||
private void validateDossierTemplateDates(OffsetDateTime validFrom, OffsetDateTime validTo) {
|
||||
|
||||
if (validFrom != null && validTo != null && validFrom.isAfter(validTo)) {
|
||||
@ -155,7 +151,7 @@ public class DossierTemplatePersistenceService {
|
||||
if (rulesOptional.isEmpty()) {
|
||||
return DossierTemplateStatus.INCOMPLETE;
|
||||
}
|
||||
if (applicationType.equals("DocuMine")) {
|
||||
if (currentApplicationTypeProvider.isDocuMine()) {
|
||||
var componentRulesOptional = rulesPersistenceService.getRules(dossierTemplate.getId(), RuleFileType.COMPONENT);
|
||||
if (componentRulesOptional.isEmpty()) {
|
||||
return DossierTemplateStatus.INCOMPLETE;
|
||||
@ -194,6 +190,14 @@ public class DossierTemplatePersistenceService {
|
||||
}
|
||||
|
||||
|
||||
@Transactional
|
||||
public LayoutParsingType getDossierTemplateLayoutParsingType(String dossierTemplateId) {
|
||||
|
||||
return dossierTemplateRepository.findLayoutParsingTypeByIdAndNotDeleted(dossierTemplateId)
|
||||
.orElseThrow(() -> new NotFoundException(String.format(DOSSIER_TEMPLATE_NOT_FOUND_MESSAGE, dossierTemplateId)));
|
||||
}
|
||||
|
||||
|
||||
public void checkDossierTemplateExistsOrElseThrow404(String dossierTemplateId) {
|
||||
|
||||
if (!dossierTemplateRepository.existsByIdAndNotDeleted(dossierTemplateId)) {
|
||||
|
||||
@ -8,6 +8,7 @@ import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.data.repository.query.Param;
|
||||
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierTemplateEntity;
|
||||
import com.knecon.fforesight.service.layoutparser.internal.api.queue.LayoutParsingType;
|
||||
|
||||
public interface DossierTemplateRepository extends JpaRepository<DossierTemplateEntity, String> {
|
||||
|
||||
@ -28,4 +29,8 @@ public interface DossierTemplateRepository extends JpaRepository<DossierTemplate
|
||||
|
||||
boolean existsByNameAndIdNot(String name, String id);
|
||||
|
||||
|
||||
@Query("select d.layoutParsingType from DossierTemplateEntity d where d.id = :dossierTemplateId and d.softDeleteTime is null")
|
||||
Optional<LayoutParsingType> findLayoutParsingTypeByIdAndNotDeleted(@Param("dossierTemplateId") String dossierTemplateId);
|
||||
|
||||
}
|
||||
|
||||
@ -15,7 +15,6 @@ kubernetes.namespace: ${NAMESPACE:default}
|
||||
project.version: 1.0-SNAPSHOT
|
||||
|
||||
application:
|
||||
type: "RedactManager"
|
||||
rss.component-log.enabled: false
|
||||
|
||||
server:
|
||||
|
||||
@ -23,6 +23,7 @@ import com.iqser.red.service.persistence.management.v1.processor.entity.configur
|
||||
import com.iqser.red.service.persistence.management.v1.processor.migration.migrations.AddDateFormatsToTemplatesMigration25;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DateFormatsPersistenceService;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.importexport.ImportDossierTemplateRequest;
|
||||
import com.knecon.fforesight.tenantcommons.TenantApplicationType;
|
||||
|
||||
import lombok.SneakyThrows;
|
||||
|
||||
@ -41,6 +42,13 @@ public class AddDateFormatsToTemplatesMigration25Test extends AbstractPersistenc
|
||||
private DateFormatsPersistenceService dateFormatsPersistenceService;
|
||||
|
||||
|
||||
@Override
|
||||
protected TenantApplicationType getTenantApplicationType() {
|
||||
|
||||
return TenantApplicationType.DocuMine;
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
@SneakyThrows
|
||||
public void testAddDateFormatsMigration() {
|
||||
|
||||
@ -15,12 +15,12 @@ import org.junit.jupiter.api.Test;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockedStatic;
|
||||
import org.springframework.test.util.ReflectionTestUtils;
|
||||
|
||||
import com.iqser.red.persistence.service.v1.external.api.impl.controller.StatusController;
|
||||
import com.iqser.red.persistence.service.v2.external.api.impl.controller.ComponentControllerV2;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.exception.NotAllowedException;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.ComponentLogService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.CurrentApplicationTypeProvider;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierTemplatePersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.users.UserService;
|
||||
@ -57,6 +57,8 @@ public class ComponentControllerV2Test {
|
||||
private StatusController statusController;
|
||||
@Mock
|
||||
private ComponentLog mockComponentLog;
|
||||
@Mock
|
||||
private CurrentApplicationTypeProvider currentApplicationTypeProvider;
|
||||
|
||||
|
||||
@BeforeEach
|
||||
@ -64,8 +66,7 @@ public class ComponentControllerV2Test {
|
||||
void setUp() {
|
||||
|
||||
openMocks(this);
|
||||
|
||||
ReflectionTestUtils.setField(componentControllerV2, "applicationType", "DocuMine");
|
||||
when(currentApplicationTypeProvider.isDocuMine()).thenReturn(true);
|
||||
}
|
||||
|
||||
|
||||
@ -109,7 +110,7 @@ public class ComponentControllerV2Test {
|
||||
@Test
|
||||
void shouldThrowNotAllowedExceptionIfApplicationTypeIsRM_getComponents() {
|
||||
|
||||
ReflectionTestUtils.setField(componentControllerV2, "applicationType", "RedactManager");
|
||||
when(currentApplicationTypeProvider.isDocuMine()).thenReturn(false);
|
||||
|
||||
when(userService.getUserById(USER_ID)).thenReturn(Optional.of(new User()));
|
||||
|
||||
@ -120,7 +121,7 @@ public class ComponentControllerV2Test {
|
||||
@Test
|
||||
void shouldThrowNotAllowedExceptionIfApplicationTypeIsRM_getComponentsOfDossier() {
|
||||
|
||||
ReflectionTestUtils.setField(componentControllerV2, "applicationType", "RedactManager");
|
||||
when(currentApplicationTypeProvider.isDocuMine()).thenReturn(false);
|
||||
|
||||
assertThrows(NotAllowedException.class, () -> componentControllerV2.getComponentsOfDossier(DOSSIER_TEMPLATE_ID, DOSSIER_ID, false));
|
||||
}
|
||||
@ -143,7 +144,7 @@ public class ComponentControllerV2Test {
|
||||
@Test
|
||||
void shouldThrowNotAllowedExceptionIfApplicationTypeIsRM_addOverride() {
|
||||
|
||||
ReflectionTestUtils.setField(componentControllerV2, "applicationType", "RedactManager");
|
||||
when(currentApplicationTypeProvider.isDocuMine()).thenReturn(false);
|
||||
|
||||
Component component = Component.builder().name("dummy").componentValues(Collections.emptyList()).build();
|
||||
|
||||
@ -163,7 +164,7 @@ public class ComponentControllerV2Test {
|
||||
@Test
|
||||
void shouldThrowNotAllowedExceptionIfApplicationTypeIsRM_getOverrides() {
|
||||
|
||||
ReflectionTestUtils.setField(componentControllerV2, "applicationType", "RedactManager");
|
||||
when(currentApplicationTypeProvider.isDocuMine()).thenReturn(false);
|
||||
|
||||
assertThrows(NotAllowedException.class, () -> componentControllerV2.getOverrides(DOSSIER_TEMPLATE_ID, DOSSIER_ID, FILE_ID));
|
||||
}
|
||||
@ -190,7 +191,7 @@ public class ComponentControllerV2Test {
|
||||
@Test
|
||||
void shouldThrowNotAllowedExceptionIfApplicationTypeIsRM_revertOverrides() {
|
||||
|
||||
ReflectionTestUtils.setField(componentControllerV2, "applicationType", "RedactManager");
|
||||
when(currentApplicationTypeProvider.isDocuMine()).thenReturn(false);
|
||||
|
||||
RevertOverrideRequest revertOverrideRequest = new RevertOverrideRequest();
|
||||
|
||||
|
||||
@ -4,19 +4,15 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import static org.mockito.MockitoAnnotations.openMocks;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
import org.springframework.test.util.ReflectionTestUtils;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.iqser.red.persistence.service.v2.external.api.impl.controller.ComponentControllerV2;
|
||||
@ -31,6 +27,7 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.component.R
|
||||
import com.iqser.red.service.persistence.service.v2.api.external.model.Component;
|
||||
import com.iqser.red.service.persistence.service.v2.api.external.model.ComponentValue;
|
||||
import com.iqser.red.service.persistence.service.v2.api.external.model.EntityReference;
|
||||
import com.knecon.fforesight.tenantcommons.TenantApplicationType;
|
||||
|
||||
import feign.FeignException;
|
||||
import lombok.SneakyThrows;
|
||||
@ -59,11 +56,10 @@ public class ComponentOverrideTest extends AbstractPersistenceServerServiceTest
|
||||
private ComponentControllerV2 componentControllerV2;
|
||||
|
||||
|
||||
@BeforeEach
|
||||
@SneakyThrows
|
||||
void setUp() {
|
||||
@Override
|
||||
protected TenantApplicationType getTenantApplicationType() {
|
||||
|
||||
ReflectionTestUtils.setField(componentControllerV2, "applicationType", "DocuMine");
|
||||
return TenantApplicationType.DocuMine;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -30,11 +30,13 @@ import com.iqser.red.service.persistence.management.v1.processor.exception.BadRe
|
||||
import com.iqser.red.service.persistence.management.v1.processor.migration.RankDeDuplicationService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.ColorsService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.ComponentMappingService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.CurrentApplicationTypeProvider;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.DictionaryManagementService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.DossierTemplateCloneService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.dataexchange.service.DossierTemplateImportService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.DossierTemplateManagementService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.FileManagementStorageService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.LayoutParsingTypeProvider;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.WatermarkService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ComponentDefinitionPersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.dataexchange.service.DossierTemplateExportService;
|
||||
@ -56,6 +58,7 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemp
|
||||
import com.iqser.red.service.persistence.management.v1.processor.dataexchange.models.ExportDownloadRequest;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.TypeRankSummary;
|
||||
import com.iqser.red.storage.commons.service.StorageService;
|
||||
import com.knecon.fforesight.service.layoutparser.internal.api.queue.LayoutParsingType;
|
||||
|
||||
import lombok.SneakyThrows;
|
||||
|
||||
@ -114,6 +117,11 @@ public class DossierTemplateCloneAndExportWithDuplicateRanksTest {
|
||||
@MockBean
|
||||
private SystemManagedTypesImport systemManagedTypesImport;
|
||||
|
||||
@MockBean
|
||||
private CurrentApplicationTypeProvider currentApplicationTypeProvider;
|
||||
@MockBean
|
||||
private LayoutParsingTypeProvider layoutParsingTypeProvider;
|
||||
|
||||
ObjectMapper mapper;
|
||||
|
||||
private DossierTemplateManagementService dossierTemplateManagementService;
|
||||
@ -134,6 +142,8 @@ public class DossierTemplateCloneAndExportWithDuplicateRanksTest {
|
||||
legalBasisMappingPersistenceService,
|
||||
rulesPersistenceService,
|
||||
dictionaryPersistenceService,
|
||||
currentApplicationTypeProvider,
|
||||
layoutParsingTypeProvider,
|
||||
typeRepository);
|
||||
dossierTemplateCloneService = new DossierTemplateCloneService(dossierTemplateRepository,
|
||||
legalBasisMappingPersistenceService,
|
||||
@ -189,6 +199,9 @@ public class DossierTemplateCloneAndExportWithDuplicateRanksTest {
|
||||
typesValues.add(typeRank2);
|
||||
when(dictionaryPersistenceService.getTypeRankSummaryList(dossierTemplateId)).thenReturn(typesValues);
|
||||
|
||||
when(currentApplicationTypeProvider.isDocuMine()).thenReturn(false);
|
||||
when(layoutParsingTypeProvider.deferFromCurrentApplicationType()).thenReturn(LayoutParsingType.REDACT_MANAGER_WITHOUT_DUPLICATE_PARAGRAPH);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -20,7 +20,6 @@ import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||
import org.springframework.test.context.junit.jupiter.SpringExtension;
|
||||
import org.springframework.test.util.ReflectionTestUtils;
|
||||
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.ColorsEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.FileAttributesGeneralConfigurationEntity;
|
||||
@ -29,8 +28,10 @@ import com.iqser.red.service.persistence.management.v1.processor.entity.configur
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierTemplateEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.ColorsService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.ComponentMappingService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.CurrentApplicationTypeProvider;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.DossierTemplateCloneService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.FileManagementStorageService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.LayoutParsingTypeProvider;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.WatermarkService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ComponentDefinitionPersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DateFormatsPersistenceService;
|
||||
@ -48,6 +49,7 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.CloneDossierTemplateRequest;
|
||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.DossierTemplateStatus;
|
||||
import com.iqser.red.storage.commons.service.StorageService;
|
||||
import com.knecon.fforesight.service.layoutparser.internal.api.queue.LayoutParsingType;
|
||||
|
||||
import lombok.SneakyThrows;
|
||||
|
||||
@ -103,6 +105,12 @@ public class DossierTemplateCloneServiceTest {
|
||||
@MockBean
|
||||
private ComponentDefinitionPersistenceService componentDefinitionPersistenceService;
|
||||
|
||||
@MockBean
|
||||
private CurrentApplicationTypeProvider currentApplicationTypeProvider;
|
||||
|
||||
@MockBean
|
||||
private LayoutParsingTypeProvider layoutParsingTypeProvider;
|
||||
|
||||
private DossierTemplateCloneService dossierTemplateCloneService;
|
||||
|
||||
private DossierTemplatePersistenceService dossierTemplatePersistenceService;
|
||||
@ -118,9 +126,12 @@ public class DossierTemplateCloneServiceTest {
|
||||
legalBasisMappingPersistenceService,
|
||||
rulesPersistenceService,
|
||||
dictionaryPersistenceService,
|
||||
currentApplicationTypeProvider,
|
||||
layoutParsingTypeProvider,
|
||||
typeRepository);
|
||||
|
||||
ReflectionTestUtils.setField(dossierTemplatePersistenceService, "applicationType", "RedactManager");
|
||||
when(currentApplicationTypeProvider.isDocuMine()).thenReturn(true);
|
||||
when(layoutParsingTypeProvider.deferFromCurrentApplicationType()).thenReturn(LayoutParsingType.DOCUMINE_OLD);
|
||||
|
||||
dossierTemplateCloneService = new DossierTemplateCloneService(dossierTemplateRepository,
|
||||
legalBasisMappingPersistenceService,
|
||||
@ -152,6 +163,7 @@ public class DossierTemplateCloneServiceTest {
|
||||
dummyTemplate.setValidFrom(OffsetDateTime.now().minusYears(6));
|
||||
dummyTemplate.setValidTo(OffsetDateTime.now().plusYears(2));
|
||||
dummyTemplate.setDossierTemplateStatus(DossierTemplateStatus.INACTIVE);
|
||||
dummyTemplate.setLayoutParsingType(LayoutParsingType.REDACT_MANAGER_WITHOUT_DUPLICATE_PARAGRAPH);
|
||||
when(dossierTemplateRepository.findById(anyString())).thenReturn(Optional.of(dummyTemplate));
|
||||
|
||||
}
|
||||
|
||||
@ -64,6 +64,7 @@ import com.iqser.red.service.persistence.management.v1.processor.dataexchange.se
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.ApplicationConfigurationEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.roles.ApplicationRoles;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.ApplicationConfigService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.CurrentApplicationTypeProvider;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.DictionaryManagementService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.EntityLogService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.FileManagementStorageService;
|
||||
@ -116,6 +117,7 @@ import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverte
|
||||
import com.knecon.fforesight.keycloakcommons.security.TenantAuthenticationManagerResolver;
|
||||
import com.knecon.fforesight.mongo.database.commons.liquibase.TenantCreatedMongoEventHandler;
|
||||
import com.knecon.fforesight.tenantcommons.EncryptionDecryptionService;
|
||||
import com.knecon.fforesight.tenantcommons.TenantApplicationType;
|
||||
import com.knecon.fforesight.tenantcommons.TenantContext;
|
||||
import com.knecon.fforesight.tenantcommons.TenantsClient;
|
||||
import com.knecon.fforesight.tenantcommons.model.AuthDetails;
|
||||
@ -129,8 +131,10 @@ import com.mongodb.MongoCommandException;
|
||||
import com.mongodb.client.MongoClient;
|
||||
import com.mongodb.client.MongoClients;
|
||||
import com.mongodb.client.MongoDatabase;
|
||||
|
||||
import io.micrometer.prometheus.PrometheusMeterRegistry;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import org.assertj.core.util.Lists;
|
||||
import org.bson.BsonArray;
|
||||
import org.bson.BsonDocument;
|
||||
@ -146,8 +150,7 @@ import org.quartz.Scheduler;
|
||||
@EnableFeignClients(basePackageClasses = FileClient.class)
|
||||
@Import(AbstractPersistenceServerServiceTest.TestConfiguration.class)
|
||||
@ContextConfiguration(initializers = {AbstractPersistenceServerServiceTest.Initializer.class})
|
||||
@SpringBootTest(classes = Application.class, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT,
|
||||
properties = "spring-hibernate-query-utils.n-plus-one-queries-detection.error-level=INFO")
|
||||
@SpringBootTest(classes = Application.class, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT, properties = "spring-hibernate-query-utils.n-plus-one-queries-detection.error-level=INFO")
|
||||
public abstract class AbstractPersistenceServerServiceTest {
|
||||
|
||||
public static final String TENANT_1 = "redaction";
|
||||
@ -279,6 +282,8 @@ public abstract class AbstractPersistenceServerServiceTest {
|
||||
private SystemManagedTypesImport systemManagedTypesImport;
|
||||
@Autowired
|
||||
private DictionaryManagementService dictionaryManagementService;
|
||||
@MockBean
|
||||
private CurrentApplicationTypeProvider currentApplicationTypeProvider;
|
||||
|
||||
|
||||
private static String[] getAllRoles() {
|
||||
@ -299,6 +304,15 @@ public abstract class AbstractPersistenceServerServiceTest {
|
||||
public void setupTenantContext() {
|
||||
|
||||
TenantContext.setTenantId(TENANT_1);
|
||||
when(currentApplicationTypeProvider.get()).thenReturn(getTenantApplicationType());
|
||||
when(currentApplicationTypeProvider.isDocuMine()).thenReturn(getTenantApplicationType().equals(TenantApplicationType.DocuMine));
|
||||
when(currentApplicationTypeProvider.isRedactManager()).thenReturn(getTenantApplicationType().equals(TenantApplicationType.RedactManager));
|
||||
}
|
||||
|
||||
|
||||
protected TenantApplicationType getTenantApplicationType() {
|
||||
|
||||
return TenantApplicationType.RedactManager;
|
||||
}
|
||||
|
||||
|
||||
@ -328,33 +342,33 @@ public abstract class AbstractPersistenceServerServiceTest {
|
||||
|
||||
var allUsers = new ArrayList<com.iqser.red.service.persistence.management.v1.processor.service.users.model.User>();
|
||||
allUsers.add(com.iqser.red.service.persistence.management.v1.processor.service.users.model.User.builder()
|
||||
.userId("manageradmin1@test.com")
|
||||
.email("manageradmin1@test.com")
|
||||
.isActive(true)
|
||||
.roles(Set.of(getAllRoles()))
|
||||
.build());
|
||||
.userId("manageradmin1@test.com")
|
||||
.email("manageradmin1@test.com")
|
||||
.isActive(true)
|
||||
.roles(Set.of(getAllRoles()))
|
||||
.build());
|
||||
allUsers.add(com.iqser.red.service.persistence.management.v1.processor.service.users.model.User.builder()
|
||||
.userId("manageradmin2@test.com")
|
||||
.email("manageradmin2@test.com")
|
||||
.isActive(true)
|
||||
.roles(Set.of(getAllRoles()))
|
||||
.build());
|
||||
.userId("manageradmin2@test.com")
|
||||
.email("manageradmin2@test.com")
|
||||
.isActive(true)
|
||||
.roles(Set.of(getAllRoles()))
|
||||
.build());
|
||||
allUsers.add(com.iqser.red.service.persistence.management.v1.processor.service.users.model.User.builder()
|
||||
.userId("manageradmin3@test.com")
|
||||
.email("manageradmin3@test.com")
|
||||
.isActive(true)
|
||||
.roles(Set.of(getAllRoles()))
|
||||
.build());
|
||||
.userId("manageradmin3@test.com")
|
||||
.email("manageradmin3@test.com")
|
||||
.isActive(true)
|
||||
.roles(Set.of(getAllRoles()))
|
||||
.build());
|
||||
Set<String> allRolesWithoutValid = Arrays.stream(getAllRoles())
|
||||
.collect(Collectors.toSet());
|
||||
allRolesWithoutValid.remove("RED_USER");
|
||||
allRolesWithoutValid.remove("RED_MANAGER");
|
||||
allUsers.add(com.iqser.red.service.persistence.management.v1.processor.service.users.model.User.builder()
|
||||
.userId("manageradmin4@test.com")
|
||||
.email("manageradmin4@test.com")
|
||||
.isActive(true)
|
||||
.roles(allRolesWithoutValid)
|
||||
.build());
|
||||
.userId("manageradmin4@test.com")
|
||||
.email("manageradmin4@test.com")
|
||||
.isActive(true)
|
||||
.roles(allRolesWithoutValid)
|
||||
.build());
|
||||
when(usersClient.getAllUsers(false)).thenReturn(allUsers);
|
||||
when(usersClient.getAllUsers(true)).thenReturn(allUsers);
|
||||
// doNothing().when(pdfTronRedactionClient).testDigitalCurrentSignature(Mockito.any());
|
||||
@ -362,18 +376,11 @@ public abstract class AbstractPersistenceServerServiceTest {
|
||||
when(rabbitAdmin.getQueueInfo(any())).thenReturn(null);
|
||||
|
||||
when(entityLogService.getEntityLog(any(), any())).thenReturn(new EntityLog(1, 1, Lists.newArrayList(), null, 0, 0, 0, 0));
|
||||
when(entityLogService.getEntityLog(any(), any(), any(), Mockito.anyBoolean())).thenReturn(new EntityLog(1,
|
||||
1,
|
||||
Lists.newArrayList(),
|
||||
null,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0));
|
||||
when(entityLogService.getEntityLog(any(), any(), any(), Mockito.anyBoolean())).thenReturn(new EntityLog(1, 1, Lists.newArrayList(), null, 0, 0, 0, 0));
|
||||
when(redactionClient.testRules(any())).thenReturn(DroolsValidation.builder()
|
||||
.syntaxErrorMessages(Collections.emptyList())
|
||||
.deprecatedWarnings(Collections.emptyList())
|
||||
.build());
|
||||
.syntaxErrorMessages(Collections.emptyList())
|
||||
.deprecatedWarnings(Collections.emptyList())
|
||||
.build());
|
||||
}
|
||||
|
||||
|
||||
@ -392,41 +399,41 @@ public abstract class AbstractPersistenceServerServiceTest {
|
||||
redactionTenant.setDisplayName(TENANT_1);
|
||||
redactionTenant.setAuthDetails(new AuthDetails());
|
||||
redactionTenant.setDatabaseConnection(DatabaseConnection.builder()
|
||||
.driver("postgresql")
|
||||
.host(postgreSQLContainerMaster.getHost())
|
||||
.port(port)
|
||||
.database("integration-tests-db-master")
|
||||
.schema("public")
|
||||
.username("sa")
|
||||
.password(encryptionDecryptionService.encrypt("sa"))
|
||||
.build());
|
||||
.driver("postgresql")
|
||||
.host(postgreSQLContainerMaster.getHost())
|
||||
.port(port)
|
||||
.database("integration-tests-db-master")
|
||||
.schema("public")
|
||||
.username("sa")
|
||||
.password(encryptionDecryptionService.encrypt("sa"))
|
||||
.build());
|
||||
|
||||
redactionTenant.setSearchConnection(SearchConnection.builder()
|
||||
.hosts(Set.of("elasticsearchHost"))
|
||||
.port(9200)
|
||||
.scheme("https")
|
||||
.username("elastic")
|
||||
.numberOfShards("1")
|
||||
.numberOfReplicas("5")
|
||||
.build());
|
||||
.hosts(Set.of("elasticsearchHost"))
|
||||
.port(9200)
|
||||
.scheme("https")
|
||||
.username("elastic")
|
||||
.numberOfShards("1")
|
||||
.numberOfReplicas("5")
|
||||
.build());
|
||||
|
||||
redactionTenant.setS3StorageConnection(S3StorageConnection.builder()
|
||||
.key("key")
|
||||
.secret("secret")
|
||||
.signerType("signerType")
|
||||
.bucketName("bucketName")
|
||||
.region("eu")
|
||||
.endpoint("endpoint")
|
||||
.build());
|
||||
.key("key")
|
||||
.secret("secret")
|
||||
.signerType("signerType")
|
||||
.bucketName("bucketName")
|
||||
.region("eu")
|
||||
.endpoint("endpoint")
|
||||
.build());
|
||||
|
||||
redactionTenant.setMongoDBConnection(MongoDBConnection.builder()
|
||||
.prefix("mongodb")
|
||||
.username(MONGO_USERNAME)
|
||||
.password(encryptionDecryptionService.encrypt(MONGO_PASSWORD))
|
||||
.address(mongoDbContainer.getHost() + ":" + mongoDbContainer.getFirstMappedPort())
|
||||
.database(MONGO_DATABASE)
|
||||
.options("")
|
||||
.build());
|
||||
.prefix("mongodb")
|
||||
.username(MONGO_USERNAME)
|
||||
.password(encryptionDecryptionService.encrypt(MONGO_PASSWORD))
|
||||
.address(mongoDbContainer.getHost() + ":" + mongoDbContainer.getFirstMappedPort())
|
||||
.database(MONGO_DATABASE)
|
||||
.options("")
|
||||
.build());
|
||||
|
||||
var redactionTenant2 = new TenantResponse();
|
||||
redactionTenant2.setTenantId(TENANT_2);
|
||||
@ -434,41 +441,41 @@ public abstract class AbstractPersistenceServerServiceTest {
|
||||
redactionTenant2.setDisplayName(TENANT_2);
|
||||
redactionTenant2.setAuthDetails(new AuthDetails());
|
||||
redactionTenant2.setDatabaseConnection(DatabaseConnection.builder()
|
||||
.driver("postgresql")
|
||||
.host(postgreSQLContainerMaster.getHost())
|
||||
.port(port)
|
||||
.database("integration-tests-db-master")
|
||||
.schema("public")
|
||||
.username("sa")
|
||||
.password(encryptionDecryptionService.encrypt("sa"))
|
||||
.build());
|
||||
.driver("postgresql")
|
||||
.host(postgreSQLContainerMaster.getHost())
|
||||
.port(port)
|
||||
.database("integration-tests-db-master")
|
||||
.schema("public")
|
||||
.username("sa")
|
||||
.password(encryptionDecryptionService.encrypt("sa"))
|
||||
.build());
|
||||
|
||||
redactionTenant2.setSearchConnection(SearchConnection.builder()
|
||||
.hosts(Set.of("elasticsearchHost"))
|
||||
.port(9200)
|
||||
.scheme("https")
|
||||
.username("elastic")
|
||||
.numberOfShards("1")
|
||||
.numberOfReplicas("5")
|
||||
.build());
|
||||
.hosts(Set.of("elasticsearchHost"))
|
||||
.port(9200)
|
||||
.scheme("https")
|
||||
.username("elastic")
|
||||
.numberOfShards("1")
|
||||
.numberOfReplicas("5")
|
||||
.build());
|
||||
|
||||
redactionTenant2.setS3StorageConnection(S3StorageConnection.builder()
|
||||
.key("key")
|
||||
.secret("secret")
|
||||
.signerType("signerType")
|
||||
.bucketName("bucketName")
|
||||
.region("eu")
|
||||
.endpoint("endpoint")
|
||||
.build());
|
||||
.key("key")
|
||||
.secret("secret")
|
||||
.signerType("signerType")
|
||||
.bucketName("bucketName")
|
||||
.region("eu")
|
||||
.endpoint("endpoint")
|
||||
.build());
|
||||
|
||||
redactionTenant2.setMongoDBConnection(MongoDBConnection.builder()
|
||||
.prefix("mongodb")
|
||||
.username(MONGO_USERNAME)
|
||||
.password(encryptionDecryptionService.encrypt(MONGO_PASSWORD))
|
||||
.address(mongoDbContainer.getHost() + ":" + mongoDbContainer.getFirstMappedPort())
|
||||
.database(TENANT_2)
|
||||
.options("")
|
||||
.build());
|
||||
.prefix("mongodb")
|
||||
.username(MONGO_USERNAME)
|
||||
.password(encryptionDecryptionService.encrypt(MONGO_PASSWORD))
|
||||
.address(mongoDbContainer.getHost() + ":" + mongoDbContainer.getFirstMappedPort())
|
||||
.database(TENANT_2)
|
||||
.options("")
|
||||
.build());
|
||||
|
||||
when(tenantsClient.getTenant(TENANT_1)).thenReturn(redactionTenant);
|
||||
when(tenantsClient.getTenant(TENANT_2)).thenReturn(redactionTenant2);
|
||||
@ -593,14 +600,14 @@ public abstract class AbstractPersistenceServerServiceTest {
|
||||
log.info("Hosts are - Redis: {}, Postgres: {}, MongoDB: {}", redisContainer.getHost(), postgreSQLContainerMaster.getHost(), mongoInstance.getHost());
|
||||
|
||||
TestPropertyValues.of("REDIS_PORT=" + redisContainer.getFirstMappedPort(),
|
||||
"REDIS_HOST=" + redisContainer.getHost(),
|
||||
"MONGODB_HOST=" + mongoInstance.getHost(),
|
||||
"MONGODB_PORT=" + mongoInstance.getFirstMappedPort(),
|
||||
"MONGODB_USER=" + MONGO_USERNAME,
|
||||
"MONGODB_PASSWORD=" + MONGO_PASSWORD,
|
||||
"fforesight.jobs.enabled=false",
|
||||
"fforesight.keycloak.enabled=false",
|
||||
"POD_NAME=persistence-service").applyTo(configurableApplicationContext.getEnvironment());
|
||||
"REDIS_HOST=" + redisContainer.getHost(),
|
||||
"MONGODB_HOST=" + mongoInstance.getHost(),
|
||||
"MONGODB_PORT=" + mongoInstance.getFirstMappedPort(),
|
||||
"MONGODB_USER=" + MONGO_USERNAME,
|
||||
"MONGODB_PASSWORD=" + MONGO_PASSWORD,
|
||||
"fforesight.jobs.enabled=false",
|
||||
"fforesight.keycloak.enabled=false",
|
||||
"POD_NAME=persistence-service").applyTo(configurableApplicationContext.getEnvironment());
|
||||
|
||||
}
|
||||
|
||||
@ -608,10 +615,10 @@ public abstract class AbstractPersistenceServerServiceTest {
|
||||
private static void createMongoDBDatabase(MongoDBTestContainer mongoDBTestContainer, String databaseName) {
|
||||
|
||||
try (MongoClient mongoClient = MongoClients.create(String.format("mongodb://%s:%s@%s:%s/",
|
||||
MONGO_USERNAME,
|
||||
MONGO_PASSWORD,
|
||||
mongoDBTestContainer.getHost(),
|
||||
mongoDBTestContainer.getFirstMappedPort()))) {
|
||||
MONGO_USERNAME,
|
||||
MONGO_PASSWORD,
|
||||
mongoDBTestContainer.getHost(),
|
||||
mongoDBTestContainer.getFirstMappedPort()))) {
|
||||
MongoDatabase database = mongoClient.getDatabase(databaseName);
|
||||
BsonDocument createUserCommand = new BsonDocument();
|
||||
createUserCommand.append("createUser", new BsonString(MONGO_USERNAME));
|
||||
@ -651,6 +658,7 @@ public abstract class AbstractPersistenceServerServiceTest {
|
||||
return mock;
|
||||
}
|
||||
|
||||
|
||||
@Bean
|
||||
public InMemoryUserDetailsManager userDetailsService(PasswordEncoder passwordEncoder) {
|
||||
|
||||
|
||||
@ -1,7 +1,5 @@
|
||||
monitoring.enabled: true
|
||||
|
||||
application:
|
||||
type: "RedactManager"
|
||||
|
||||
spring:
|
||||
main:
|
||||
|
||||
@ -6,6 +6,11 @@ plugins {
|
||||
val springBootStarterVersion = "3.1.5"
|
||||
|
||||
dependencies {
|
||||
|
||||
api("com.knecon.fforesight:layoutparser-service-internal-api:0.188.0") {
|
||||
exclude(group = "com.iqser.red.service", module = "persistence-service-internal-api-v1")
|
||||
exclude(group = "com.iqser.red.service", module = "persistence-service-shared-api-v1")
|
||||
}
|
||||
api("com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.17.2")
|
||||
api("com.google.guava:guava:31.1-jre")
|
||||
api("org.springframework.boot:spring-boot-starter-validation:3.1.3")
|
||||
|
||||
@ -4,6 +4,8 @@ import java.time.OffsetDateTime;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import com.knecon.fforesight.service.layoutparser.internal.api.queue.LayoutParsingType;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
@ -41,4 +43,6 @@ public class CreateOrUpdateDossierTemplateRequest {
|
||||
|
||||
private boolean removeWatermark;
|
||||
|
||||
private LayoutParsingType layoutParsingType;
|
||||
|
||||
}
|
||||
|
||||
@ -5,6 +5,7 @@ import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.knecon.fforesight.service.layoutparser.internal.api.queue.LayoutParsingType;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
@ -36,5 +37,6 @@ public class DossierTemplate {
|
||||
private boolean applyDictionaryUpdatesToAllDossiersByDefault;
|
||||
private boolean ocrByDefault;
|
||||
private boolean removeWatermark;
|
||||
private LayoutParsingType layoutParsingType;
|
||||
|
||||
}
|
||||
|
||||
@ -12,7 +12,7 @@ dependencies {
|
||||
api("com.knecon.fforesight:mongo-database-commons:0.16.0") {
|
||||
exclude(group = "com.knecon.fforesight", module = "tenant-commons")
|
||||
}
|
||||
api("com.knecon.fforesight:tenant-commons:0.31.0")
|
||||
api("com.knecon.fforesight:tenant-commons:0.31.0-RED10196.0")
|
||||
api("org.springframework.boot:spring-boot-starter-data-mongodb:${springBootStarterVersion}")
|
||||
api("org.springframework.boot:spring-boot-starter-validation:3.1.3")
|
||||
testImplementation("com.iqser.red.commons:test-commons:2.1.0")
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user