Pull request #359: soft delete types RED-3880

Merge in RED/persistence-service from RED-3880 to master

* commit '388fef77866a844e60e3ee3ee029f984feee6827':
  soft delete types RED-3880
  soft delete types RED-3880
This commit is contained in:
Timo Bejan 2022-04-19 13:26:23 +02:00
commit b7a2d18a14
15 changed files with 131 additions and 112 deletions

View File

@ -1,5 +1,6 @@
package com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type;
import java.time.OffsetDateTime;
import java.util.ArrayList;
import java.util.List;
@ -36,6 +37,7 @@ public class Type {
private boolean hasDictionary;
private boolean systemManaged;
private boolean autoHideSkipped;
private OffsetDateTime softDeletedTime;
// For auto-mappers

View File

@ -19,6 +19,7 @@ public interface DictionaryResource {
String TYPE_PARAMETER_NAME = "type";
String TYPE_PATH_VARIABLE = "/{" + TYPE_PARAMETER_NAME + "}";
String INCLUDE_DELETED_PARAMETER_NAME = "includeDeleted";
String DOSSIER_TEMPLATE_PARAMETER_NAME = "dossierTemplateId";
String DOSSIER_TEMPLATE_PATH_VARIABLE = "/{" + DOSSIER_TEMPLATE_PARAMETER_NAME + "}";
@ -66,10 +67,12 @@ public interface DictionaryResource {
@GetMapping(value = TYPE_PATH + DOSSIER_TEMPLATE_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE)
List<Type> getAllTypesForDossierTemplate(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId);
List<Type> getAllTypesForDossierTemplate(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId,
@RequestParam(value = INCLUDE_DELETED_PARAMETER_NAME, required = false, defaultValue = "false") boolean includeDeleted);
@GetMapping(value = TYPE_PATH + DOSSIER_PATH + DOSSIER_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE)
List<Type> getAllTypesForDossier(@PathVariable(DOSSIER_ID_PARAMETER_NAME) String dossierId);
List<Type> getAllTypesForDossier(@PathVariable(DOSSIER_ID_PARAMETER_NAME) String dossierId,
@RequestParam(value = INCLUDE_DELETED_PARAMETER_NAME, required = false, defaultValue = "false") boolean includeDeleted);
@GetMapping(value = DICTIONARY_PATH + TYPE_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE)
Type getDictionaryForType(@PathVariable(TYPE_PARAMETER_NAME) String typeId, @RequestParam(value = FROM_VERSION_PARAM, required = false) Long fromVersion);

View File

@ -2,6 +2,7 @@ package com.iqser.red.service.persistence.management.v1.processor.entity.configu
import static javax.persistence.CascadeType.ALL;
import java.time.OffsetDateTime;
import java.util.ArrayList;
import java.util.List;
@ -64,6 +65,8 @@ public class TypeEntity {
private boolean systemManaged;
@Column
private boolean autoHideSkipped;
@Column
private OffsetDateTime softDeletedTime;
@Fetch(FetchMode.SUBSELECT)
@BatchSize(size = 500)
@ -94,4 +97,7 @@ public class TypeEntity {
@Column(updatable = false, insertable = false, name = "dossier_id")
private String dossierId;
public boolean isDeleted() {
return this.softDeletedTime !=null;
}
}

View File

@ -10,13 +10,10 @@ import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.*;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
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;
@ -139,14 +136,14 @@ public class DossierTemplateCloneService {
private List<TypeEntity> cloneDictionariesWithEntries(String dossierTemplateId, String clonedDossierTemplateId) {
List<TypeEntity> clonedTypes = new ArrayList<>();
var types = dictionaryPersistenceService.getAllTypesForDossierTemplate(dossierTemplateId);
var types = dictionaryPersistenceService.getAllTypesForDossierTemplate(dossierTemplateId,false);
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, t.isHasDictionary(), t.isSystemManaged(), t.isAutoHideSkipped());
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());
List<String> entries = baseDictionaryEntries.stream().map(BaseDictionaryEntry::getValue).collect(Collectors.toList());
entryPersistenceService.addEntry(te.getId(), entries, te.getVersion(), det);
}
}

View File

@ -1,16 +1,5 @@
package com.iqser.red.service.persistence.management.v1.processor.service.persistence;
import static com.iqser.red.service.persistence.management.v1.processor.utils.TypeIdUtils.toTypeId;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import javax.transaction.Transactional;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.TypeEntity;
import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException;
import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException;
@ -19,8 +8,17 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.EntryRepository;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.TypeRepository;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.DictionarySummaryResponse;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import static com.iqser.red.service.persistence.management.v1.processor.utils.TypeIdUtils.toTypeId;
@Service
@RequiredArgsConstructor
@ -70,6 +68,10 @@ public class DictionaryPersistenceService {
public void updateType(String typeId, TypeEntity typeValueRequest) {
typeRepository.findById(typeId).ifPresent((type) -> {
if (type.isDeleted()) {
throw new NotFoundException("Type is deleted!");
}
type.setVersion(type.getVersion() + 1);
checkRankAlreadyExists(type.getType(), type.getDossierTemplate().getId(), typeValueRequest.getRank(), type.getDossier() == null ? null : type.getDossier().getId());
if (type.isSystemManaged()) {
@ -84,7 +86,7 @@ public class DictionaryPersistenceService {
}
public Optional<TypeEntity> getTypeForRank(String dossierTemplateId, int rank, String dossierId) {
private Optional<TypeEntity> getTypeForRank(String dossierTemplateId, int rank, String dossierId) {
return typeRepository.findOneByDossierTemplateIdAndDossierIdAndRank(dossierTemplateId, dossierId, rank);
@ -94,47 +96,58 @@ public class DictionaryPersistenceService {
private void checkRankAlreadyExists(String type, String dossierTemplateId, int rank, String dossierId) {
Optional<TypeEntity> existingTypeValueForRank = getTypeForRank(dossierTemplateId, rank, dossierId);
// not the current type - which we are about to upsert -> throw exception
if (existingTypeValueForRank.isPresent() && !existingTypeValueForRank.get().getType().equalsIgnoreCase(type)) {
if (existingTypeValueForRank.isPresent() && !existingTypeValueForRank.get().isDeleted() && !existingTypeValueForRank.get().getType().equalsIgnoreCase(type)) {
throw new BadRequestException("Rank already exists: " + rank + " on type: " + existingTypeValueForRank.get().getType());
}
}
public List<TypeEntity> getCumulatedTypes(String dossierTemplateId, String dossierId) {
public List<TypeEntity> getCumulatedTypes(String dossierTemplateId, String dossierId, boolean includeDeleted) {
return typeRepository.findAllTypesByDossierTemplateIdOrDossierId(dossierTemplateId, dossierId);
var types = typeRepository.findAllTypesByDossierTemplateIdOrDossierId(dossierTemplateId, dossierId);
return filterDeleted(types,includeDeleted);
}
public List<TypeEntity> getAllTypesForDossierTemplate(String dossierTemplateId) {
public List<TypeEntity> getAllTypesForDossierTemplate(String dossierTemplateId, boolean includeDeleted) {
return typeRepository.getAllTypesForDossierTemplate(dossierTemplateId);
var types = typeRepository.getAllTypesForDossierTemplate(dossierTemplateId);
return filterDeleted(types, includeDeleted);
}
public List<TypeEntity> getAllTypesForDossier(String dossierId) {
public List<TypeEntity> getAllTypesForDossier(String dossierId, boolean includeDeleted) {
return typeRepository.findByDossierId(dossierId);
var types = typeRepository.findByDossierId(dossierId);
return filterDeleted(types, includeDeleted);
}
public List<TypeEntity> getAllTypes() {
public List<TypeEntity> getAllTypes(boolean includeDeleted) {
return typeRepository.findAll();
var types = typeRepository.findAll();
return filterDeleted(types, includeDeleted);
}
private List<TypeEntity> filterDeleted(List<TypeEntity> types, boolean includeDeleted) {
if (!includeDeleted) {
return types.stream().filter(t -> !t.isDeleted()).collect(Collectors.toList());
} else {
return types;
}
}
@Transactional
public void deleteType(String typeId) {
typeRepository.deleteById(typeId);
typeRepository.softDeleteTypeById(typeId);
}
public TypeEntity getType(String typeId) {
return typeRepository.findById(typeId).orElseThrow(() -> new NotFoundException("Type: " + typeId + " not found"));
return typeRepository.findByIdAndNotDeleted(typeId).orElseThrow(() -> new NotFoundException("Type: " + typeId + " not found"));
}
@ -166,7 +179,7 @@ public class DictionaryPersistenceService {
@Transactional
public void updateTypeIdAndIncrementVersionByOne(String typeId, String newTypeId, String newDossierTemplateId) {
Optional<TypeEntity> typeEntity = typeRepository.findById(typeId);
Optional<TypeEntity> typeEntity = typeRepository.findByIdAndNotDeleted(typeId);
if (typeEntity.isEmpty()) {
throw new NotFoundException("Type '" + typeId + "' does not exist.");
}

View File

@ -14,14 +14,15 @@ import java.util.Set;
public interface TypeRepository extends JpaRepository<TypeEntity, String> {
Optional<TypeEntity> findOneByDossierTemplateAndDossierAndRank(DossierTemplateEntity dossierTemplate, DossierEntity dossier, int rank);
@Query("select t from TypeEntity t where t.dossierTemplateId = :dossierTemplate and t.dossierId = :dossier and t.rank = :rank and t.softDeletedTime is null")
Optional<TypeEntity> findOneByDossierTemplateIdAndDossierIdAndRank(String dossierTemplate, String dossier, int rank);
List<TypeEntity> findByDossierTemplateId(String dossierTemplateId);
List<TypeEntity> findByDossierId(String dossierId);
@Query("select t from TypeEntity t where t.id = :typeId and t.softDeletedTime is null")
Optional<TypeEntity> findByIdAndNotDeleted(String typeId);
@Modifying
@Query("update TypeEntity t set t.version = t.version +1 where t.id = :typeId")
void updateByIdSetIncrementVersionByOne(String typeId);
@ -46,4 +47,7 @@ public interface TypeRepository extends JpaRepository<TypeEntity, String> {
"group by dt.id, t.id, t.type, t.label ")
List<DictionarySummaryResponse> findDictionarySummaryList(Set<String> dossierTemplateIds);
@Modifying(clearAutomatically = true, flushAutomatically = true)
@Query("Update TypeEntity t set t.softDeletedTime = CURRENT_TIMESTAMP where t.id = :typeId")
void softDeleteTypeById(String typeId);
}

View File

@ -193,7 +193,7 @@ public class DictionaryController implements DictionaryResource {
checkForDuplicateLabels(typeRequest.getDossierTemplateId(), typeRequest.getDossierId(), typeRequest.getType(), typeRequest
.getLabel());
if (dictionaryPersistenceService.getCumulatedTypes(typeRequest.getDossierTemplateId(), typeRequest.getDossierId())
if (dictionaryPersistenceService.getCumulatedTypes(typeRequest.getDossierTemplateId(), typeRequest.getDossierId(),false)
.stream()
.anyMatch(typeResult -> typeRequest.getDossierId() != null && typeResult.getDossierId() != null && typeRequest
.getDossierId()
@ -231,16 +231,18 @@ public class DictionaryController implements DictionaryResource {
@Override
public List<Type> getAllTypesForDossierTemplate(
@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId) {
@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId,
@RequestParam(value = INCLUDE_DELETED_PARAMETER_NAME, required = false, defaultValue = "false") boolean includeDeleted) {
return convert(dictionaryPersistenceService.getAllTypesForDossierTemplate(dossierTemplateId), Type.class);
return convert(dictionaryPersistenceService.getAllTypesForDossierTemplate(dossierTemplateId,includeDeleted), Type.class);
}
@Override
public List<Type> getAllTypesForDossier(@PathVariable(DOSSIER_ID_PARAMETER_NAME) String dossierId) {
public List<Type> getAllTypesForDossier(@PathVariable(DOSSIER_ID_PARAMETER_NAME) String dossierId,
@RequestParam(value = INCLUDE_DELETED_PARAMETER_NAME, required = false, defaultValue = "false") boolean includeDeleted) {
return convert(dictionaryPersistenceService.getAllTypesForDossier(dossierId), Type.class);
return convert(dictionaryPersistenceService.getAllTypesForDossier(dossierId,includeDeleted), Type.class);
}
@ -333,7 +335,7 @@ public class DictionaryController implements DictionaryResource {
private void checkForDuplicateLabels(String dossierTemplateId, String dossierId, String type, String labelToCheck) {
List<TypeEntity> typeResponse = dictionaryPersistenceService.getCumulatedTypes(dossierTemplateId, dossierId);
List<TypeEntity> typeResponse = dictionaryPersistenceService.getCumulatedTypes(dossierTemplateId, dossierId, false);
for (TypeEntity res : typeResponse) {
if (res.getDossierId() != null && res.getDossierId().equals(dossierId) && !type.equals(res.getType()) && res
.getDossierTemplateId()

View File

@ -47,7 +47,7 @@ public class EntityTypesMigration4 extends Migration {
log.info("Will check all type entities and set autoHideSkipped flag true for {}", autoHideSkippedTypes);
log.info("Will check all type entities and set hasDictionary flag true for types with entities");
List<TypeEntity> types = dictionaryPersistenceService.getAllTypes();
List<TypeEntity> types = dictionaryPersistenceService.getAllTypes(false);
for (TypeEntity type : types) {
if (type != null) {

View File

@ -7,6 +7,7 @@ import java.util.Set;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.BaseDictionaryEntry;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -50,7 +51,7 @@ public class TypeToEntityMigration5 extends Migration {
@Override
protected void migrate() {
var types = dictionaryPersistenceService.getAllTypes();
var types = dictionaryPersistenceService.getAllTypes(false);
types.forEach(type -> type.setRecommendationHexColor("#8df06c"));
dictionaryPersistenceService.saveAllTypes(types);
@ -59,18 +60,18 @@ public class TypeToEntityMigration5 extends Migration {
dossierTemplates.forEach(dossierTemplate -> {
log.info("Starting false positive migration of dossierTemplate {}", dossierTemplate.getId());
var typeIdsToDelete = new HashSet<String>();
var typesOfDossierTemplate = dictionaryPersistenceService.getAllTypes();
var typesOfDossierTemplate = dictionaryPersistenceService.getAllTypes(false);
var falsePositive = typesOfDossierTemplate.stream()
.filter(t -> t.getType().equals("false_positive"))
.findFirst();
if (!falsePositive.isPresent()) {
if (falsePositive.isEmpty()) {
return;
}
typeIdsToDelete.add(falsePositive.get().getId());
var falsePositiveEntries = entryPersistenceService.getEntries(falsePositive.get()
.getId(), DictionaryEntryType.ENTRY, null)
.stream()
.map(f -> f.getValue())
.map(BaseDictionaryEntry::getValue)
.collect(Collectors.toSet());
log.info("False positive migration of dossierTemplate {} has {} false positive entries", dossierTemplate.getId(), falsePositiveEntries.size());
@ -85,7 +86,7 @@ public class TypeToEntityMigration5 extends Migration {
var entries = entryPersistenceService.getEntries(typeEntity.getId(), DictionaryEntryType.ENTRY, null)
.stream()
.map(f -> f.getValue())
.map(BaseDictionaryEntry::getValue)
.collect(Collectors.toSet());
log.info("type {} has {} entries", typeEntity.getType(), entries);

View File

@ -1,29 +1,22 @@
package com.iqser.red.service.peristence.v1.server.service;
import java.time.OffsetDateTime;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.stream.Collectors;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import com.iqser.red.service.peristence.v1.server.client.RedactionClient;
import com.iqser.red.service.peristence.v1.server.controller.DictionaryController;
import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierPersistenceService;
import com.iqser.red.service.persistence.service.v1.api.model.annotations.Comment;
import com.iqser.red.service.persistence.service.v1.api.model.redactionlog.FilteredRedactionLogRequest;
import com.iqser.red.service.redaction.v1.model.Change;
import com.iqser.red.service.redaction.v1.model.ManualChange;
import com.iqser.red.service.redaction.v1.model.RedactionLog;
import com.iqser.red.service.redaction.v1.model.RedactionLogEntry;
import com.iqser.red.service.redaction.v1.model.RedactionRequest;
import com.iqser.red.service.redaction.v1.model.SectionGrid;
import feign.FeignException;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import java.time.OffsetDateTime;
import java.util.Iterator;
import java.util.List;
@Service
@RequiredArgsConstructor
@ -56,8 +49,8 @@ public class RedactionLogService {
var dossier = dossierPersistenceService.findByDossierId(dossierId);
var manualRedactions = manualRedactionService.getManualRedactions(fileId);
var colors = dictionaryController.getColors(dossier.getDossierTemplateId());
var types = dictionaryController.getAllTypesForDossierTemplate(dossier.getDossierTemplateId());
var dossierTypes = dictionaryController.getAllTypesForDossier(dossierId);
var types = dictionaryController.getAllTypesForDossierTemplate(dossier.getDossierTemplateId(), true);
var dossierTypes = dictionaryController.getAllTypesForDossier(dossierId, true);
types.addAll(dossierTypes);
try {
@ -127,7 +120,7 @@ public class RedactionLogService {
}
}
if(!isAfterSpecifiedDate) {
if (!isAfterSpecifiedDate) {
it.remove();
}

View File

@ -0,0 +1,11 @@
databaseChangeLog:
- changeSet:
id: add-soft-delete-time-to-entity
author: timo
changes:
- addColumn:
columns:
- column:
name: soft_deleted_time
type: TIMESTAMP WITHOUT TIME ZONE
tableName: entity

View File

@ -50,4 +50,6 @@ databaseChangeLog:
- include:
file: db/changelog/21-added-auto-hide-skipped-to-entities.changelog.yaml
- include:
file: db/changelog/sql/22-update-file-dossier-attributes.sql
file: db/changelog/sql/22-update-file-dossier-attributes.sql
- include:
file: db/changelog/22-add-soft-delete-time-to-entity.changelog.yaml

View File

@ -1,14 +1,5 @@
package com.iqser.red.service.peristence.v1.server.integration.tests;
import static org.assertj.core.api.Assertions.assertThat;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient;
import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemplateClient;
import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider;
@ -17,8 +8,15 @@ import com.iqser.red.service.peristence.v1.server.integration.service.TypeProvid
import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest;
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;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import static org.assertj.core.api.Assertions.assertThat;
public class DictionaryTest extends AbstractPersistenceServerServiceTest {
@ -258,9 +256,9 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest {
.dossierId(dossier2.getId())
.build());
assertThat(dictionaryClient.getAllTypesForDossierTemplate(dossier.getDossierTemplateId())).isEmpty();
assertThat(dictionaryClient.getAllTypesForDossier(dossier.getId()).size()).isEqualTo(1);
assertThat(dictionaryClient.getAllTypesForDossier(dossier2.getId()).size()).isEqualTo(1);
assertThat(dictionaryClient.getAllTypesForDossierTemplate(dossier.getDossierTemplateId(), false)).isEmpty();
assertThat(dictionaryClient.getAllTypesForDossier(dossier.getId(), false).size()).isEqualTo(1);
assertThat(dictionaryClient.getAllTypesForDossier(dossier2.getId(), false).size()).isEqualTo(1);
}
}

View File

@ -1,35 +1,12 @@
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 java.nio.charset.StandardCharsets;
import java.time.OffsetDateTime;
import java.util.Collections;
import java.util.List;
import org.junit.Test;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
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;
import com.iqser.red.service.peristence.v1.server.integration.client.WatermarkClient;
import com.iqser.red.service.peristence.v1.server.integration.client.*;
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.dossier.DossierTemplateEntity;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.ReportTemplateEntity;
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;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.FileAttributesGeneralConfiguration;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.ReportTemplateUploadRequest;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.*;
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;
@ -40,8 +17,18 @@ import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.do
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;
import org.junit.Test;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import java.nio.charset.StandardCharsets;
import java.time.OffsetDateTime;
import java.util.Collections;
import java.util.List;
import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert;
import static org.assertj.core.api.Assertions.assertThat;
public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
@ -282,9 +269,9 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
.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())
assertThat(dictionaryClient.getAllTypesForDossierTemplate(dossierTemplate.getId(), false)
.get(0)
.getRank()).isEqualTo(dictionaryClient.getAllTypesForDossierTemplate(clonedDT.getId()).get(0).getRank());
.getRank()).isEqualTo(dictionaryClient.getAllTypesForDossierTemplate(clonedDT.getId(), false).get(0).getRank());
assertThat(dossierStatusClient.getAllDossierStatuses(List.of(dossierTemplate.getId()))
.get(0)
.getDescription()).isEqualTo(dossierStatusClient.getAllDossierStatuses(List.of(clonedDT.getId())).get(0).getDescription());

View File

@ -75,14 +75,14 @@ public class TypeTest extends AbstractPersistenceServerServiceTest {
dictionaryClient.deleteType(type.getId());
var typesForTemplate = dictionaryClient.getAllTypesForDossierTemplate(loadedType.getDossierTemplateId());
var typesForTemplate = dictionaryClient.getAllTypesForDossierTemplate(loadedType.getDossierTemplateId(), false);
assertThat(typesForTemplate).isEmpty();
var dossier = dossierTesterAndProvider.provideTestDossier(dossierTemplate);
var dossierType = typeProvider.testAndProvideType(dossierTemplate, dossier, "dossier-dict");
var typesForDossier = dictionaryClient.getAllTypesForDossier(dossierType.getDossierId());
var typesForDossier = dictionaryClient.getAllTypesForDossier(dossierType.getDossierId(), false);
assertThat(typesForDossier).isNotEmpty();
}