Merge branch 'master' into RED-3450
# Conflicts: # persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml
This commit is contained in:
parent
a421bd4b4e
commit
e76a0c6ade
@ -1,5 +0,0 @@
|
||||
package com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier;
|
||||
|
||||
public enum DossierStatus {
|
||||
ACTIVE, DELETED, ARCHIVED;
|
||||
}
|
||||
@ -1,14 +1,15 @@
|
||||
package com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@ -32,10 +33,14 @@ public class Type {
|
||||
private List<DictionaryEntry> entries = new ArrayList<>();
|
||||
private List<DictionaryEntry> falsePositiveEntries = new ArrayList<>();
|
||||
private List<DictionaryEntry> falseRecommendationEntries = new ArrayList<>();
|
||||
private boolean hasDictionary;
|
||||
private boolean systemManaged;
|
||||
|
||||
|
||||
// For auto-mappers
|
||||
@JsonIgnore
|
||||
public String getTypeId() {
|
||||
|
||||
return this.id;
|
||||
}
|
||||
|
||||
|
||||
@ -1,13 +1,18 @@
|
||||
package com.iqser.red.service.persistence.service.v1.api.resources;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.ResponseStatus;
|
||||
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.common.JSONPrimitive;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.download.DownloadRequest;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.download.DownloadStatus;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ResponseStatus(value = HttpStatus.OK)
|
||||
public interface DownloadResource {
|
||||
@ -19,7 +24,6 @@ public interface DownloadResource {
|
||||
@PostMapping(value = REST_PATH + "/prepare", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
JSONPrimitive<String> prepareDownload(@RequestBody DownloadRequest request);
|
||||
|
||||
|
||||
@GetMapping(value = REST_PATH + "/status/{" + USER_ID + "}", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
List<DownloadStatus> getDownloadStatus(@PathVariable(USER_ID) String userId);
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
package com.iqser.red.service.persistence.service.v1.api.resources;
|
||||
|
||||
import com.iqser.red.service.redaction.v1.model.RedactionLog;
|
||||
import com.iqser.red.service.redaction.v1.model.SectionGrid;
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
@ -9,7 +9,8 @@ import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.ResponseStatus;
|
||||
|
||||
import java.util.List;
|
||||
import com.iqser.red.service.redaction.v1.model.RedactionLog;
|
||||
import com.iqser.red.service.redaction.v1.model.SectionGrid;
|
||||
|
||||
@ResponseStatus(value = HttpStatus.OK)
|
||||
public interface RedactionLogResource {
|
||||
@ -23,10 +24,12 @@ public interface RedactionLogResource {
|
||||
String DOSSIER_ID_PARAM = "dossierId";
|
||||
String DOSSIER_ID_PATH_PARAM = "/{" + DOSSIER_ID_PARAM + "}";
|
||||
|
||||
|
||||
@GetMapping(value = REDACTION_LOG_PATH + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
RedactionLog getRedactionLog(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID) String fileId,
|
||||
@RequestParam(value = "excludedType", required = false) List<String> excludedTypes,
|
||||
@RequestParam(value = "withManualRedactions", required = false, defaultValue = "true") boolean withManualRedactions);
|
||||
@RequestParam(value = "withManualRedactions", required = false, defaultValue = "true") boolean withManualRedactions,
|
||||
@RequestParam(value = "includeFalsePositives", required = false, defaultValue = "false") boolean includeFalsePositives);
|
||||
|
||||
@GetMapping(value = SECTION_GRID_PATH + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE)
|
||||
SectionGrid getSectionGrid(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID) String fileId);
|
||||
|
||||
@ -58,14 +58,18 @@ public class TypeEntity {
|
||||
private long version;
|
||||
@Column
|
||||
private boolean addToDictionaryAction;
|
||||
@Column
|
||||
private boolean hasDictionary;
|
||||
@Column
|
||||
private boolean systemManaged;
|
||||
|
||||
@Fetch(FetchMode.SUBSELECT)
|
||||
@BatchSize(size=500)
|
||||
@BatchSize(size = 500)
|
||||
@OneToMany(cascade = ALL, mappedBy = "type", orphanRemoval = true, fetch = FetchType.LAZY)
|
||||
private List<DictionaryEntryEntity> entries = new ArrayList<>();
|
||||
|
||||
@Fetch(FetchMode.SUBSELECT)
|
||||
@BatchSize(size=500)
|
||||
@BatchSize(size = 500)
|
||||
@OneToMany(cascade = ALL, mappedBy = "type", orphanRemoval = true, fetch = FetchType.LAZY)
|
||||
private List<DictionaryFalsePositiveEntryEntity> falsePositiveEntries = new ArrayList<>();
|
||||
|
||||
|
||||
@ -8,6 +8,7 @@ import java.time.temporal.ChronoUnit;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -24,14 +25,18 @@ import com.iqser.red.service.persistence.management.v1.processor.exception.Confl
|
||||
import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DictionaryPersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierAttributeConfigPersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierStatusPersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierTemplatePersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.EntryPersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileAttributeConfigPersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.LegalBasisMappingPersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ReportTemplatePersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.RulesPersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierTemplateRepository;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DossierTemplateStatus;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierStatusRequest;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.legalbasis.LegalBasis;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.DictionaryEntryType;
|
||||
import com.iqser.red.storage.commons.service.StorageService;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@ -48,11 +53,13 @@ public class DossierTemplateCloneService {
|
||||
private final DossierTemplatePersistenceService dossierTemplatePersistenceService;
|
||||
private final DossierAttributeConfigPersistenceService dossierAttributeConfigPersistenceService;
|
||||
private final DictionaryPersistenceService dictionaryPersistenceService;
|
||||
private final EntryPersistenceService entryPersistenceService;
|
||||
private final FileAttributeConfigPersistenceService fileAttributeConfigPersistenceService;
|
||||
private final ReportTemplatePersistenceService reportTemplatePersistenceService;
|
||||
private final WatermarkService watermarkService;
|
||||
private final ColorsService colorsService;
|
||||
private final StorageService storageService;
|
||||
private final DossierStatusPersistenceService dossierStatusPersistenceService;
|
||||
|
||||
|
||||
public DossierTemplateEntity cloneDossierTemplate(String dossierTemplateId, String nameOfClonedDossierTemplate, String cloningUserId) {
|
||||
@ -86,7 +93,7 @@ public class DossierTemplateCloneService {
|
||||
dossierTemplateRepository.save(clonedDossierTemplate);
|
||||
|
||||
//set dictionaries
|
||||
clonedDossierTemplate.setDossierTypes(cloneDictionaries(dossierTemplate.getId(), clonedDossierTemplate.getId()));
|
||||
clonedDossierTemplate.setDossierTypes(cloneDictionariesWithEntries(dossierTemplate.getId(), clonedDossierTemplate.getId()));
|
||||
|
||||
//set dossier attributes
|
||||
cloneDossierAttributesConfig(dossierTemplate.getId(), clonedDossierTemplate.getId());
|
||||
@ -105,6 +112,9 @@ public class DossierTemplateCloneService {
|
||||
//set colors
|
||||
cloneColors(dossierTemplate.getId(), clonedDossierTemplate.getId());
|
||||
|
||||
//set dossier status
|
||||
cloneDossierStates(dossierTemplate.getId(), clonedDossierTemplate.getId());
|
||||
|
||||
dossierTemplateRepository.save(clonedDossierTemplate);
|
||||
|
||||
}, () -> {
|
||||
@ -126,14 +136,19 @@ public class DossierTemplateCloneService {
|
||||
}
|
||||
|
||||
|
||||
private List<TypeEntity> cloneDictionaries(String dossierTemplateId, String clonedDossierTemplateId) {
|
||||
private List<TypeEntity> cloneDictionariesWithEntries(String dossierTemplateId, String clonedDossierTemplateId) {
|
||||
|
||||
List<TypeEntity> clonedTypes = new ArrayList<>();
|
||||
var types = dictionaryPersistenceService.getAllTypesForDossierTemplate(dossierTemplateId);
|
||||
for (TypeEntity t : types) {
|
||||
TypeEntity te = dictionaryPersistenceService.addType(t.getType(), clonedDossierTemplateId, t.getHexColor(), t.getRecommendationHexColor(), t.getRank(), t.isHint(), t.isCaseInsensitive(), t.isRecommendation(), t.getDescription(), t.isAddToDictionaryAction(), t.getLabel(), null);
|
||||
TypeEntity te = dictionaryPersistenceService.addType(t.getType(), clonedDossierTemplateId, t.getHexColor(), t.getRecommendationHexColor(), t.getRank(), t.isHint(), t.isCaseInsensitive(), t.isRecommendation(), t.getDescription(), t.isAddToDictionaryAction(), t.getLabel(), null, t.isHasDictionary(), t.isSystemManaged());
|
||||
te.setDossierTemplateId(clonedDossierTemplateId);
|
||||
clonedTypes.add(te);
|
||||
for (DictionaryEntryType det : DictionaryEntryType.values()) {
|
||||
var baseDictionaryEntries = entryPersistenceService.getEntries(t.getId(), det, null);
|
||||
List<String> entries = baseDictionaryEntries.stream().map(baseDictionaryEntry -> baseDictionaryEntry.getValue()).collect(Collectors.toList());
|
||||
entryPersistenceService.addEntry(te.getId(), entries, te.getVersion(), det);
|
||||
}
|
||||
}
|
||||
return clonedTypes;
|
||||
}
|
||||
@ -234,4 +249,20 @@ public class DossierTemplateCloneService {
|
||||
colorsService.saveColors(clonedColors);
|
||||
}
|
||||
|
||||
|
||||
private void cloneDossierStates(String dossierTemplateId, String clonedDossierTemplateId) {
|
||||
|
||||
var states = dossierStatusPersistenceService.getAllDossierStatusForTemplate(dossierTemplateId);
|
||||
for (var state : states) {
|
||||
var clonedState = CreateOrUpdateDossierStatusRequest.builder()
|
||||
.name(state.getName())
|
||||
.description(state.getDescription())
|
||||
.color(state.getColor())
|
||||
.dossierTemplateId(clonedDossierTemplateId)
|
||||
.rank(state.getRank())
|
||||
.build();
|
||||
dossierStatusPersistenceService.createOrUpdateDossierStatus(clonedState);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -35,8 +35,9 @@ public class DictionaryPersistenceService {
|
||||
private final EntryRepository entryRepository;
|
||||
|
||||
|
||||
public TypeEntity addType(String type, String dossierTemplateId, String hexColor, String recommendationHexColor, int rank, boolean isHint, boolean caseInsensitive, boolean isRecommendation,
|
||||
String description, boolean addToDictionaryAction, String label, String dossierId) {
|
||||
public TypeEntity addType(String type, String dossierTemplateId, String hexColor, String recommendationHexColor, int rank, boolean isHint, boolean caseInsensitive,
|
||||
boolean isRecommendation, String description, boolean addToDictionaryAction, String label, String dossierId, boolean hasDictionary,
|
||||
boolean systemManaged) {
|
||||
|
||||
checkRankAlreadyExists(type, dossierTemplateId, rank, dossierId);
|
||||
|
||||
@ -55,6 +56,8 @@ public class DictionaryPersistenceService {
|
||||
.addToDictionaryAction(addToDictionaryAction)
|
||||
.label(label)
|
||||
.version(1)
|
||||
.hasDictionary(hasDictionary)
|
||||
.systemManaged(systemManaged)
|
||||
.build();
|
||||
|
||||
return typeRepository.save(t);
|
||||
|
||||
@ -1,5 +1,20 @@
|
||||
package com.iqser.red.service.persistence.management.v1.processor.service.persistence;
|
||||
|
||||
import static com.iqser.red.service.persistence.management.v1.processor.exception.DossierNotFoundException.DOSSIER_NOT_FOUND_MESSAGE;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.transaction.Transactional;
|
||||
|
||||
import org.springframework.beans.BeanUtils;
|
||||
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.exception.BadRequestException;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.exception.DossierNotFoundException;
|
||||
@ -9,20 +24,8 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ReportTemplateRepository;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierRequest;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierChange;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.transaction.Transactional;
|
||||
import java.time.OffsetDateTime;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.iqser.red.service.persistence.management.v1.processor.exception.DossierNotFoundException.DOSSIER_NOT_FOUND_MESSAGE;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@ -90,11 +93,22 @@ public class DossierPersistenceService {
|
||||
}
|
||||
|
||||
|
||||
public DossierEntity getActiveOrArchivedDossier(String dossierId) {
|
||||
|
||||
var dossier = findByDossierId(dossierId);
|
||||
|
||||
if (dossier == null || dossier.getHardDeletedTime() != null || dossier.getSoftDeletedTime() != null) {
|
||||
throw new DossierNotFoundException(String.format(DOSSIER_NOT_FOUND_MESSAGE, dossierId));
|
||||
}
|
||||
|
||||
return dossier;
|
||||
}
|
||||
|
||||
|
||||
public DossierEntity getAndValidateDossier(String dossierId) {
|
||||
// check whether the dossierId exists and is not deleted
|
||||
var dossier = findByDossierId(dossierId);
|
||||
if (dossier == null || dossier.getSoftDeletedTime() != null || dossier.getHardDeletedTime() != null
|
||||
|| dossier.getArchivedTime() != null) {
|
||||
if (dossier == null || dossier.getSoftDeletedTime() != null || dossier.getHardDeletedTime() != null || dossier.getArchivedTime() != null) {
|
||||
throw new DossierNotFoundException(String.format(DOSSIER_NOT_FOUND_MESSAGE, dossierId));
|
||||
}
|
||||
return dossier;
|
||||
|
||||
@ -1,14 +1,13 @@
|
||||
package com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository;
|
||||
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierChange;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatus;
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Modifying;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.List;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity;
|
||||
|
||||
public interface DossierRepository extends JpaRepository<DossierEntity, String> {
|
||||
|
||||
|
||||
@ -1,5 +1,25 @@
|
||||
package com.iqser.red.service.peristence.v1.server.controller;
|
||||
|
||||
import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert;
|
||||
import static java.util.stream.Collectors.toList;
|
||||
import static java.util.stream.Collectors.toSet;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import javax.transaction.Transactional;
|
||||
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import com.iqser.red.service.peristence.v1.server.TextNormalizationUtilities;
|
||||
import com.iqser.red.service.peristence.v1.server.service.StopwordService;
|
||||
import com.iqser.red.service.peristence.v1.server.validation.DictionaryValidator;
|
||||
@ -16,26 +36,9 @@ import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.ty
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.DictionaryEntryType;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.Type;
|
||||
import com.iqser.red.service.persistence.service.v1.api.resources.DictionaryResource;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.transaction.Transactional;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert;
|
||||
import static java.util.stream.Collectors.toList;
|
||||
import static java.util.stream.Collectors.toSet;
|
||||
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@ -70,6 +73,9 @@ public class DictionaryController implements DictionaryResource {
|
||||
|
||||
// To check whether the type exists, type should not be added into database implicitly by addEntry.
|
||||
Type typeResult = convert(dictionaryPersistenceService.getType(typeId), Type.class);
|
||||
if (!typeResult.isHasDictionary()) {
|
||||
throw new BadRequestException("Entity type does not have a dictionary");
|
||||
}
|
||||
|
||||
var currentVersion = getCurrentVersion(typeResult);
|
||||
|
||||
@ -202,9 +208,7 @@ public class DictionaryController implements DictionaryResource {
|
||||
}
|
||||
String color = typeRequest.getHexColor();
|
||||
validateColor(color);
|
||||
return convert(dictionaryPersistenceService.addType(typeRequest.getType(), typeRequest.getDossierTemplateId(), color, typeRequest.getRecommendationHexColor(), typeRequest
|
||||
.getRank(), typeRequest.isHint(), typeRequest.isCaseInsensitive(), typeRequest.isRecommendation(), typeRequest
|
||||
.getDescription(), typeRequest.isAddToDictionaryAction(), typeRequest.getLabel(), typeRequest.getDossierId()), Type.class);
|
||||
return convert(dictionaryPersistenceService.addType(typeRequest.getType(), typeRequest.getDossierTemplateId(), color, typeRequest.getRecommendationHexColor(), typeRequest.getRank(), typeRequest.isHint(), typeRequest.isCaseInsensitive(), typeRequest.isRecommendation(), typeRequest.getDescription(), typeRequest.isAddToDictionaryAction(), typeRequest.getLabel(), typeRequest.getDossierId(), typeRequest.isHasDictionary(), typeRequest.isSystemManaged()), Type.class);
|
||||
}
|
||||
|
||||
|
||||
@ -213,14 +217,14 @@ public class DictionaryController implements DictionaryResource {
|
||||
|
||||
// NotFoundException would be thrown if the type not found in database.
|
||||
Type typeResult = convert(dictionaryPersistenceService.getType(typeId), Type.class);
|
||||
if (typeResult.isSystemManaged()) {
|
||||
throw new BadRequestException("Can not delete system managed entity type");
|
||||
}
|
||||
|
||||
var currentVersion = getCurrentVersion(typeResult);
|
||||
|
||||
dictionaryPersistenceService.deleteType(typeId);
|
||||
List<String> existing = entryPersistenceService.getEntries(typeId, DictionaryEntryType.ENTRY, null)
|
||||
.stream()
|
||||
.map(BaseDictionaryEntry::getValue)
|
||||
.collect(toList());
|
||||
List<String> existing = entryPersistenceService.getEntries(typeId, DictionaryEntryType.ENTRY, null).stream().map(BaseDictionaryEntry::getValue).collect(toList());
|
||||
|
||||
entryPersistenceService.deleteEntries(typeId, existing, currentVersion + 1, DictionaryEntryType.ENTRY);
|
||||
dictionaryPersistenceService.incrementVersion(typeId);
|
||||
|
||||
@ -1,5 +1,20 @@
|
||||
package com.iqser.red.service.peristence.v1.server.controller;
|
||||
|
||||
import static com.iqser.red.service.persistence.management.v1.processor.exception.DossierNotFoundException.DOSSIER_NOT_FOUND_MESSAGE;
|
||||
import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.transaction.Transactional;
|
||||
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import com.iqser.red.service.peristence.v1.server.service.DossierService;
|
||||
import com.iqser.red.service.peristence.v1.server.service.FileService;
|
||||
import com.iqser.red.service.peristence.v1.server.service.FileStatusService;
|
||||
@ -8,26 +23,17 @@ import com.iqser.red.service.peristence.v1.server.utils.DossierMapper;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.exception.DossierNotFoundException;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.common.JSONPrimitive;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.*;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierRequest;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.Dossier;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierChange;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierInformation;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileModel;
|
||||
import com.iqser.red.service.persistence.service.v1.api.resources.DossierResource;
|
||||
import com.iqser.red.service.search.v1.model.IndexMessageType;
|
||||
|
||||
import feign.Param;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.transaction.Transactional;
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.iqser.red.service.persistence.management.v1.processor.exception.DossierNotFoundException.DOSSIER_NOT_FOUND_MESSAGE;
|
||||
import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert;
|
||||
|
||||
@Slf4j
|
||||
@RestController
|
||||
@ -143,7 +149,7 @@ public class DossierController implements DossierResource {
|
||||
|
||||
var archivedDossiers = convert(dossierService.getAllDossiers()
|
||||
.stream()
|
||||
.filter(p -> p.getArchivedTime() != null && p.getHardDeletedTime() == null)
|
||||
.filter(p -> p.getArchivedTime() != null && p.getHardDeletedTime() == null && p.getSoftDeletedTime() == null)
|
||||
.collect(Collectors.toList()), Dossier.class, new DossierMapper());
|
||||
archivedDossiers.sort((dossier1, dossier2) -> dossier2.getArchivedTime().compareTo(dossier1.getArchivedTime()));
|
||||
|
||||
|
||||
@ -1,5 +1,16 @@
|
||||
package com.iqser.red.service.peristence.v1.server.controller;
|
||||
|
||||
import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.iqser.red.service.peristence.v1.server.configuration.MessagingConfiguration;
|
||||
@ -14,18 +25,11 @@ import com.iqser.red.service.persistence.service.v1.api.model.common.JSONPrimiti
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.download.DownloadRequest;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.download.DownloadStatus;
|
||||
import com.iqser.red.service.persistence.service.v1.api.resources.DownloadResource;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.amqp.rabbit.core.RabbitTemplate;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
public class DownloadController implements DownloadResource {
|
||||
@ -42,15 +46,11 @@ public class DownloadController implements DownloadResource {
|
||||
var mimeType = "application/zip";
|
||||
|
||||
var existingFileStatuses = fileStatusPersistenceService.getStatusesForDossier(request.getDossierId());
|
||||
|
||||
String downloadFilename = buildName(request.getDossierId(), request.getFileIds(), request.getUserId(), mimeType, existingFileStatuses);
|
||||
|
||||
String storageId = StorageIdUtils.getStorageId(request.getUserId(), request.getDossierId(), downloadFilename);
|
||||
|
||||
var dossier = dossierPersistenceService.getAndValidateDossier(request.getDossierId());
|
||||
var dossier = dossierPersistenceService.getActiveOrArchivedDossier(request.getDossierId());
|
||||
|
||||
downloadStatusPersistenceService.createStatus(request.getUserId(), storageId, dossier, downloadFilename, mimeType, request.getFileIds(), dossier.getDownloadFileTypes());
|
||||
|
||||
addToDownloadQueue(DownloadJob.builder().storageId(storageId).userId(request.getUserId()).build(), 1);
|
||||
|
||||
return new JSONPrimitive<>(storageId);
|
||||
@ -92,7 +92,7 @@ public class DownloadController implements DownloadResource {
|
||||
private String buildName(String dossierId, List<String> fileIds, String userId, String mimeType,
|
||||
List<FileEntity> existingFileStatuses) {
|
||||
|
||||
var dossier = dossierPersistenceService.getAndValidateDossier(dossierId);
|
||||
var dossier = dossierPersistenceService.getActiveOrArchivedDossier(dossierId);
|
||||
|
||||
Set<String> existingFilenames = downloadStatusPersistenceService.getStatusesByUser(userId)
|
||||
.stream()
|
||||
|
||||
@ -1,15 +1,17 @@
|
||||
package com.iqser.red.service.peristence.v1.server.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import com.iqser.red.service.peristence.v1.server.service.RedactionLogService;
|
||||
import com.iqser.red.service.persistence.service.v1.api.resources.RedactionLogResource;
|
||||
import com.iqser.red.service.redaction.v1.model.RedactionLog;
|
||||
import com.iqser.red.service.redaction.v1.model.SectionGrid;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@ -18,12 +20,12 @@ public class RedactionLogController implements RedactionLogResource {
|
||||
private final RedactionLogService redactionLogService;
|
||||
|
||||
|
||||
public RedactionLog getRedactionLog(@PathVariable(DOSSIER_ID_PARAM) String dossierId,
|
||||
@PathVariable(FILE_ID) String fileId,
|
||||
public RedactionLog getRedactionLog(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID) String fileId,
|
||||
@RequestParam(value = "excludedType", required = false) List<String> excludedTypes,
|
||||
@RequestParam(value = "withManualRedactions", required = false, defaultValue = "true") boolean withManualRedactions) {
|
||||
@RequestParam(value = "withManualRedactions", required = false, defaultValue = "true") boolean withManualRedactions,
|
||||
@RequestParam(value = "includeFalsePositives", required = false, defaultValue = "false") boolean includeFalsePositives) {
|
||||
|
||||
return redactionLogService.getRedactionLog(dossierId, fileId, excludedTypes, withManualRedactions);
|
||||
return redactionLogService.getRedactionLog(dossierId, fileId, excludedTypes, withManualRedactions, includeFalsePositives);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -1,5 +1,13 @@
|
||||
package com.iqser.red.service.peristence.v1.server.service;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ViewedPageEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileStatusPersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ViewedPagesPersistenceService;
|
||||
@ -8,15 +16,9 @@ import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.do
|
||||
import com.iqser.red.service.redaction.v1.model.ChangeType;
|
||||
import com.iqser.red.service.redaction.v1.model.ManualRedactionType;
|
||||
import com.iqser.red.service.redaction.v1.model.RedactionLogEntry;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
@ -34,7 +36,7 @@ public class AnalysisFlagsCalculationService {
|
||||
long startTime = System.currentTimeMillis();
|
||||
|
||||
var file = fileStatusPersistenceService.getStatus(fileId);
|
||||
var redactionLog = redactionLogService.getRedactionLog(dossierId, fileId, true);
|
||||
var redactionLog = redactionLogService.getRedactionLog(dossierId, fileId, true, false);
|
||||
|
||||
var viewedPagesForCurrentAssignee = viewedPagesPersistenceService.findViewedPages(fileId, file.getAssignee());
|
||||
|
||||
@ -76,11 +78,11 @@ public class AnalysisFlagsCalculationService {
|
||||
lastModification = lastChange.getDateTime();
|
||||
}
|
||||
|
||||
if (!hasRedactions && entry.isRedacted()) {
|
||||
if (!hasRedactions && entry.isRedacted() && !entry.isRecommendation()) {
|
||||
hasRedactions = true;
|
||||
}
|
||||
|
||||
if (!hasHints && entry.isHint() && !type.equals("false_positive")) {
|
||||
if (!hasHints && entry.isHint()) {
|
||||
hasHints = true;
|
||||
}
|
||||
|
||||
|
||||
@ -15,7 +15,6 @@ import com.iqser.red.service.peristence.v1.server.configuration.MessagingConfigu
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileStatusPersistenceService;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatus;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.ProcessingStatus;
|
||||
import com.iqser.red.service.search.v1.model.IndexMessage;
|
||||
import com.iqser.red.service.search.v1.model.IndexMessageType;
|
||||
|
||||
@ -26,13 +26,13 @@ public class RedactionLogService {
|
||||
private final FileStatusService fileStatusService;
|
||||
|
||||
|
||||
public RedactionLog getRedactionLog(String dossierId, String fileId, boolean withManualRedactions) {
|
||||
public RedactionLog getRedactionLog(String dossierId, String fileId, boolean withManualRedactions, boolean includeFalsePositives) {
|
||||
|
||||
return getRedactionLog(dossierId, fileId, null, withManualRedactions);
|
||||
return getRedactionLog(dossierId, fileId, null, withManualRedactions, includeFalsePositives);
|
||||
}
|
||||
|
||||
|
||||
public RedactionLog getRedactionLog(String dossierId, String fileId, List<String> excludedTypes, boolean withManualRedactions) {
|
||||
public RedactionLog getRedactionLog(String dossierId, String fileId, List<String> excludedTypes, boolean withManualRedactions, boolean includeFalsePositives) {
|
||||
|
||||
var fileStatus = fileStatusService.getStatus(fileId);
|
||||
|
||||
@ -52,6 +52,7 @@ public class RedactionLogService {
|
||||
.manualRedactions(manualRedactions)
|
||||
.dossierTemplateId(dossier.getDossierTemplateId())
|
||||
.excludedPages(fileStatus.getExcludedPages())
|
||||
.includeFalsePositives(includeFalsePositives)
|
||||
.build());
|
||||
} catch (FeignException e) {
|
||||
if (e.status() == HttpStatus.NOT_FOUND.value()) {
|
||||
|
||||
@ -1,5 +1,12 @@
|
||||
package com.iqser.red.service.peristence.v1.server.service.download;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.transaction.Transactional;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.iqser.red.service.pdftron.redaction.v1.api.model.PdfTronRedactionRequest;
|
||||
import com.iqser.red.service.peristence.v1.server.client.RedactionClient;
|
||||
import com.iqser.red.service.peristence.v1.server.service.FileManagementStorageService;
|
||||
@ -11,7 +18,11 @@ import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.ReportTemplateEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.download.DownloadStatusEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.*;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierPersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DownloadStatusPersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileStatusPersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.NotificationPersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ReportTemplatePersistenceService;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.audit.AddNotificationRequest;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DownloadFileType;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileType;
|
||||
@ -20,13 +31,9 @@ import com.iqser.red.service.redaction.report.v1.api.model.ReportResultMessage;
|
||||
import com.iqser.red.service.redaction.report.v1.api.model.StoredFileInformation;
|
||||
import com.iqser.red.service.redaction.v1.model.AnnotateRequest;
|
||||
import com.iqser.red.service.redaction.v1.model.RedactionLog;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.transaction.Transactional;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
@ -228,7 +235,7 @@ public class DownloadPreparationService {
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
return redactionLogService.getRedactionLog(dossierId, fileId, true);
|
||||
return redactionLogService.getRedactionLog(dossierId, fileId, true, false);
|
||||
} catch (NotFoundException e) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -0,0 +1,14 @@
|
||||
databaseChangeLog:
|
||||
- changeSet:
|
||||
id: add-has-dictionary
|
||||
author: dom
|
||||
changes:
|
||||
- addColumn:
|
||||
columns:
|
||||
- column:
|
||||
name: has_dictionary
|
||||
type: BOOLEAN
|
||||
- column:
|
||||
name: system_managed
|
||||
type: BOOLEAN
|
||||
tableName: entity
|
||||
@ -38,4 +38,6 @@ databaseChangeLog:
|
||||
- include:
|
||||
file: db/changelog/15-dossier-remove-dossier-state.changelog.yaml
|
||||
- include:
|
||||
file: db/changelog/16-digital-signature-kms.changelog.yaml
|
||||
file: db/changelog/16-added-has-dictionary-to-entities.changelog.yaml
|
||||
- include:
|
||||
file: db/changelog/17-digital-signature-kms.changelog.yaml
|
||||
@ -1,13 +1,14 @@
|
||||
package com.iqser.red.service.peristence.v1.server.integration.service;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DossierTemplate;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.Dossier;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.Type;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
@Service
|
||||
public class TypeProvider {
|
||||
@ -29,12 +30,13 @@ public class TypeProvider {
|
||||
type.setRecommendation(false);
|
||||
type.setCaseInsensitive(true);
|
||||
type.setDossierTemplateId(dossierTemplate.getId());
|
||||
type.setHasDictionary(true);
|
||||
type.setSystemManaged(false);
|
||||
type.setDossierId(dossier != null ? dossier.getId() : null);
|
||||
|
||||
var createdType = dictionaryClient.addType(type);
|
||||
|
||||
|
||||
var loadedType = dictionaryClient.getDictionaryForType(createdType.getId(),null);
|
||||
var loadedType = dictionaryClient.getDictionaryForType(createdType.getId(), null);
|
||||
|
||||
assertThat(loadedType).isNotNull();
|
||||
|
||||
|
||||
@ -1,5 +1,18 @@
|
||||
package com.iqser.red.service.peristence.v1.server.integration.tests;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import com.google.common.collect.Sets;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemplateClient;
|
||||
@ -14,18 +27,6 @@ import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.ty
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.DictionaryEntryType;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.DictionarySummary;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.Type;
|
||||
import org.junit.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
public class DossierTemplateStatsTest extends AbstractPersistenceServerServiceTest {
|
||||
private static final String TYPE_ID_1 = "type1";
|
||||
@ -73,6 +74,8 @@ public class DossierTemplateStatsTest extends AbstractPersistenceServerServiceTe
|
||||
.addToDictionaryAction(false)
|
||||
.dossierTemplateId(dossierTemplate2.getId())
|
||||
.dossierId(null)
|
||||
.hasDictionary(true)
|
||||
.systemManaged(false)
|
||||
.build());
|
||||
|
||||
assertThat(addedType).isNotNull();
|
||||
@ -93,6 +96,8 @@ public class DossierTemplateStatsTest extends AbstractPersistenceServerServiceTe
|
||||
.addToDictionaryAction(false)
|
||||
.dossierTemplateId(dossierTemplate2.getId())
|
||||
.dossierId(null)
|
||||
.hasDictionary(true)
|
||||
.systemManaged(false)
|
||||
.build());
|
||||
var entries2 = new ArrayList<String>();
|
||||
entries2.add("entry1");
|
||||
@ -113,6 +118,8 @@ public class DossierTemplateStatsTest extends AbstractPersistenceServerServiceTe
|
||||
.addToDictionaryAction(false)
|
||||
.dossierTemplateId(dossierTemplate3.getId())
|
||||
.dossierId(null)
|
||||
.hasDictionary(true)
|
||||
.systemManaged(false)
|
||||
.build());
|
||||
|
||||
assertThat(addedType3).isNotNull();
|
||||
@ -136,6 +143,8 @@ public class DossierTemplateStatsTest extends AbstractPersistenceServerServiceTe
|
||||
.description("Something")
|
||||
.addToDictionaryAction(false)
|
||||
.dossierTemplateId(dossierTemplate5.getId())
|
||||
.hasDictionary(true)
|
||||
.systemManaged(false)
|
||||
.build());
|
||||
assertThat(addedType5).isNotNull();
|
||||
|
||||
|
||||
@ -2,9 +2,6 @@ package com.iqser.red.service.peristence.v1.server.integration.tests;
|
||||
|
||||
import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.anyString;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.time.OffsetDateTime;
|
||||
@ -12,15 +9,13 @@ import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.Mockito;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.DossierAttributeConfigClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.DossierStatusClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemplateClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.FileAttributeConfigClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.ReportTemplateClient;
|
||||
@ -28,20 +23,8 @@ import com.iqser.red.service.peristence.v1.server.integration.client.WatermarkCl
|
||||
import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest;
|
||||
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.TypeEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.WatermarkEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierAttributeConfigEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierTemplateEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileAttributeConfigEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.ReportTemplateEntity;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.ColorsService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.WatermarkService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DictionaryPersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierAttributeConfigPersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileAttributeConfigPersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ReportTemplatePersistenceService;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.CreateOrUpdateDossierTemplateRequest;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DossierAttributeConfig;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DossierTemplateStatus;
|
||||
@ -50,10 +33,12 @@ import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.Re
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.Colors;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.Watermark;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.WatermarkOrientation;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierStatusRequest;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierAttributeType;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileAttributeConfig;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileAttributeType;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.DictionaryEntry;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.DictionaryEntryType;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.Type;
|
||||
|
||||
import feign.FeignException;
|
||||
@ -87,6 +72,9 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
|
||||
@Autowired
|
||||
private WatermarkClient watermarkClient;
|
||||
|
||||
@Autowired
|
||||
private DossierStatusClient dossierStatusClient;
|
||||
|
||||
|
||||
@Test
|
||||
public void testDossierTemplate() {
|
||||
@ -145,8 +133,7 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
|
||||
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
|
||||
|
||||
Type type = Type.builder()
|
||||
.id("t.id")
|
||||
.type("t.getType()")
|
||||
.type("t")
|
||||
.dossierTemplateId(dossierTemplate.getId())
|
||||
.hexColor("#ddddd")
|
||||
.recommendationHexColor("#cccccc")
|
||||
@ -162,8 +149,35 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
|
||||
.entries(List.of(DictionaryEntry.builder().entryId(1001).value("dictEntry1").version(23).deleted(false).typeId("t.getType()").build()))
|
||||
.falsePositiveEntries(List.of(DictionaryEntry.builder().entryId(2001).value("dictEntry2").version(23).deleted(false).typeId("t.getType()").build()))
|
||||
.falseRecommendationEntries(List.of(DictionaryEntry.builder().entryId(3001).value("dictEntry3").version(23).deleted(false).typeId("t.getType()").build()))
|
||||
.hasDictionary(true)
|
||||
.systemManaged(false)
|
||||
.build();
|
||||
dictionaryClient.addType(type);
|
||||
Type type2 = Type.builder()
|
||||
.type("t2")
|
||||
.dossierTemplateId(dossierTemplate.getId())
|
||||
.hexColor("#12345")
|
||||
.recommendationHexColor("#6789a")
|
||||
.rank(1002)
|
||||
.isHint(false)
|
||||
.isRecommendation(false)
|
||||
.isCaseInsensitive(false)
|
||||
.description("t2.getDescription()")
|
||||
.addToDictionaryAction(true)
|
||||
.label("t2.getLabel()")
|
||||
.dossierId(null)
|
||||
.version(23)
|
||||
.entries(List.of(DictionaryEntry.builder().entryId(1001).value("dictEntry1").version(23).deleted(false).typeId("t2.getType()").build()))
|
||||
.falsePositiveEntries(List.of(DictionaryEntry.builder().entryId(2001).value("dictEntry2").version(23).deleted(false).typeId("t2.getType()").build()))
|
||||
.falseRecommendationEntries(List.of(DictionaryEntry.builder().entryId(3001).value("dictEntry3").version(23).deleted(false).typeId("t2.getType()").build()))
|
||||
.hasDictionary(true)
|
||||
.systemManaged(false)
|
||||
.build();
|
||||
var createdType1 = dictionaryClient.addType(type);
|
||||
var createdType2 = dictionaryClient.addType(type2);
|
||||
var loadedType1 = dictionaryClient.getDictionaryForType(createdType1.getId(), null);
|
||||
var loadedType2 = dictionaryClient.getDictionaryForType(createdType2.getId(), null);
|
||||
dictionaryClient.addEntries(loadedType1.getTypeId(), List.of("entry1", "entry2"), false, false, DictionaryEntryType.ENTRY);
|
||||
dictionaryClient.addEntries(loadedType2.getTypeId(), List.of("entry3", "entry4"), false, false, DictionaryEntryType.FALSE_POSITIVE);
|
||||
dossierAttributeConfigClient.setDossierAttributesConfig(dossierTemplate.getId(), List.of(DossierAttributeConfig.builder()
|
||||
.dossierTemplateId(dossierTemplate.getId())
|
||||
.editable(false)
|
||||
@ -172,8 +186,7 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
|
||||
.type(DossierAttributeType.TEXT)
|
||||
.placeholder("placeholderDossier")
|
||||
.build()));
|
||||
fileAttributeConfigClient.setFileAttributesGeneralConfig(dossierTemplate.getId(), FileAttributesGeneralConfiguration.builder()
|
||||
.dossierTemplateId(dossierTemplate.getId())
|
||||
fileAttributeConfigClient.setFileAttributesGeneralConfig(dossierTemplate.getId(), FileAttributesGeneralConfiguration.builder().dossierTemplateId(dossierTemplate.getId())
|
||||
.delimiter("")
|
||||
.filenameMappingColumnHeaderName("filenameMappingColumnHeaderName")
|
||||
.build());
|
||||
@ -200,7 +213,13 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
|
||||
.storageId("storageId")
|
||||
.uploadDate(OffsetDateTime.now())
|
||||
.build();
|
||||
reportTemplateClient.uploadTemplate(ReportTemplateUploadRequest.builder().template("some text".getBytes(StandardCharsets.UTF_8)).dossierTemplateId(dossierTemplate.getId()).fileName("Report Template").activeByDefault(true).multiFileReport(false).build());
|
||||
reportTemplateClient.uploadTemplate(ReportTemplateUploadRequest.builder()
|
||||
.template("some text".getBytes(StandardCharsets.UTF_8))
|
||||
.dossierTemplateId(dossierTemplate.getId())
|
||||
.fileName("Report Template")
|
||||
.activeByDefault(true)
|
||||
.multiFileReport(false)
|
||||
.build());
|
||||
watermarkClient.saveWatermark(dossierTemplate.getId(), Watermark.builder()
|
||||
.dossierTemplateId(dossierTemplate.getId())
|
||||
.fontSize(10)
|
||||
@ -225,6 +244,14 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
|
||||
.manualRedactionColor("#bbbbbb")
|
||||
.build();
|
||||
dictionaryClient.setColors(dossierTemplate.getId(), col);
|
||||
var dossierStatus = CreateOrUpdateDossierStatusRequest.builder()
|
||||
.name("dossStatus1")
|
||||
.description("ds description")
|
||||
.color("#115599")
|
||||
.rank(456)
|
||||
.dossierTemplateId(dossierTemplate.getId())
|
||||
.build();
|
||||
dossierStatusClient.createOrUpdateDossierStatus(dossierStatus);
|
||||
|
||||
var allTemplates = dossierTemplateClient.getAllDossierTemplates();
|
||||
assertThat(allTemplates.size()).isEqualTo(1);
|
||||
@ -242,12 +269,25 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
|
||||
assertThat(loadedTemplate.getModifiedBy()).isEqualTo("user");
|
||||
assertThat(loadedTemplate.getCreatedBy()).isEqualTo("user");
|
||||
|
||||
assertThat(dossierAttributeConfigClient.getDossierAttributes(dossierTemplate.getId()).get(0).getLabel()).isEqualTo(dossierAttributeConfigClient.getDossierAttributes(clonedDT.getId()).get(0).getLabel());
|
||||
assertThat(fileAttributeConfigClient.getFileAttributeConfigs(dossierTemplate.getId()).get(0).getCsvColumnHeader()).isEqualTo(fileAttributeConfigClient.getFileAttributeConfigs(clonedDT.getId()).get(0).getCsvColumnHeader());
|
||||
assertThat(fileAttributeConfigClient.getFileAttributesGeneralConfig(dossierTemplate.getId()).getFilenameMappingColumnHeaderName()).isEqualTo(fileAttributeConfigClient.getFileAttributesGeneralConfig(clonedDT.getId()).getFilenameMappingColumnHeaderName());
|
||||
assertThat(reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId()).get(0).getFileName()).isEqualTo(reportTemplateClient.getAvailableReportTemplates(clonedDT.getId()).get(0).getFileName());
|
||||
assertThat(dossierAttributeConfigClient.getDossierAttributes(dossierTemplate.getId())
|
||||
.get(0)
|
||||
.getLabel()).isEqualTo(dossierAttributeConfigClient.getDossierAttributes(clonedDT.getId()).get(0).getLabel());
|
||||
assertThat(fileAttributeConfigClient.getFileAttributeConfigs(dossierTemplate.getId())
|
||||
.get(0)
|
||||
.getCsvColumnHeader()).isEqualTo(fileAttributeConfigClient.getFileAttributeConfigs(clonedDT.getId()).get(0).getCsvColumnHeader());
|
||||
assertThat(fileAttributeConfigClient.getFileAttributesGeneralConfig(dossierTemplate.getId())
|
||||
.getFilenameMappingColumnHeaderName()).isEqualTo(fileAttributeConfigClient.getFileAttributesGeneralConfig(clonedDT.getId()).getFilenameMappingColumnHeaderName());
|
||||
assertThat(reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId())
|
||||
.get(0)
|
||||
.getFileName()).isEqualTo(reportTemplateClient.getAvailableReportTemplates(clonedDT.getId()).get(0).getFileName());
|
||||
assertThat(watermarkClient.getWatermark(dossierTemplate.getId()).getText()).isEqualTo(watermarkClient.getWatermark(clonedDT.getId()).getText());
|
||||
assertThat(dictionaryClient.getColors(dossierTemplate.getId()).getRequestAdd()).isEqualTo(dictionaryClient.getColors(clonedDT.getId()).getRequestAdd());
|
||||
assertThat(dictionaryClient.getAllTypesForDossierTemplate(dossierTemplate.getId())
|
||||
.get(0)
|
||||
.getRank()).isEqualTo(dictionaryClient.getAllTypesForDossierTemplate(clonedDT.getId()).get(0).getRank());
|
||||
assertThat(dossierStatusClient.getAllDossierStatuses(List.of(dossierTemplate.getId()))
|
||||
.get(0)
|
||||
.getDescription()).isEqualTo(dossierStatusClient.getAllDossierStatuses(List.of(clonedDT.getId())).get(0).getDescription());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -1,5 +1,16 @@
|
||||
package com.iqser.red.service.peristence.v1.server.integration.tests;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import com.google.common.collect.Sets;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.DossierStatusClient;
|
||||
@ -13,17 +24,8 @@ import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.Re
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierRequest;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierStatusRequest;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.Dossier;
|
||||
|
||||
import feign.FeignException;
|
||||
import org.junit.Test;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||
|
||||
public class DossierTest extends AbstractPersistenceServerServiceTest {
|
||||
|
||||
@ -182,7 +184,7 @@ public class DossierTest extends AbstractPersistenceServerServiceTest {
|
||||
assertThat(dossierClient.getAllDossiers(true, false)).hasSize(2);
|
||||
assertThat(dossierClient.getAllDossiers(false, true)).hasSize(1);
|
||||
assertThat(dossierClient.getAllDossiers(true, true)).hasSize(2);
|
||||
assertThat(dossierClient.getArchivedDossiers()).hasSize(2);
|
||||
assertThat(dossierClient.getArchivedDossiers()).hasSize(1);
|
||||
assertThat(dossierClient.getSoftDeletedDossiers()).hasSize(1);
|
||||
|
||||
dossierInformation = dossierClient.getDossierInformation();
|
||||
|
||||
@ -1,13 +1,14 @@
|
||||
package com.iqser.red.service.peristence.v1.server.integration.tests;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import com.iqser.red.service.peristence.v1.server.integration.client.RedactionLogClient;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider;
|
||||
import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest;
|
||||
import org.junit.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
public class RedactionLogTest extends AbstractPersistenceServerServiceTest {
|
||||
|
||||
@ -27,8 +28,8 @@ public class RedactionLogTest extends AbstractPersistenceServerServiceTest {
|
||||
var file = fileTesterAndProvider.testAndProvideFile(dossier);
|
||||
|
||||
assertThat(redactionLogClient.getSectionGrid(dossier.getId(), file.getId())).isNotNull();
|
||||
assertThat(redactionLogClient.getRedactionLog(dossier.getId(), file.getId(), null,true)).isNotNull();
|
||||
assertThat(redactionLogClient.getRedactionLog(dossier.getId(), file.getId(), null,false)).isNotNull();
|
||||
assertThat(redactionLogClient.getRedactionLog(dossier.getId(), file.getId(), null, true, false)).isNotNull();
|
||||
assertThat(redactionLogClient.getRedactionLog(dossier.getId(), file.getId(), null, false, false)).isNotNull();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user