Pull request #100: RED-2668: Fixed create dossier dictionaries for multiple dossiers
Merge in RED/persistence-service from RED-2668 to master * commit 'e90b09aa749a26f425f7acb3eeb0d227a8e0f571': RED-2668: Fixed create dossier dictionaries for multiple dossiers
This commit is contained in:
commit
4e86f6973e
@ -14,8 +14,10 @@ import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.co
|
|||||||
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.DictionaryEntry;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.Type;
|
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 com.iqser.red.service.persistence.service.v1.api.resources.DictionaryResource;
|
||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
@ -23,6 +25,7 @@ import org.springframework.web.bind.annotation.RequestParam;
|
|||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import javax.transaction.Transactional;
|
import javax.transaction.Transactional;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
@ -37,18 +40,15 @@ import static java.util.stream.Collectors.toList;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class DictionaryController implements DictionaryResource {
|
public class DictionaryController implements DictionaryResource {
|
||||||
|
|
||||||
|
|
||||||
private final EntryPersistenceService entryPersistenceService;
|
private final EntryPersistenceService entryPersistenceService;
|
||||||
private final DictionaryPersistenceService dictionaryPersistenceService;
|
private final DictionaryPersistenceService dictionaryPersistenceService;
|
||||||
private final ColorsService colorsService;
|
private final ColorsService colorsService;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addEntries(@PathVariable(TYPE_PARAMETER_NAME) String typeId,
|
public void addEntries(@PathVariable(TYPE_PARAMETER_NAME) String typeId, @RequestBody List<String> entries,
|
||||||
@RequestBody List<String> entries,
|
|
||||||
@RequestParam(value = "removeCurrent", required = false, defaultValue = "false") boolean removeCurrent) {
|
@RequestParam(value = "removeCurrent", required = false, defaultValue = "false") boolean removeCurrent) {
|
||||||
|
|
||||||
|
|
||||||
List<String> cleanEntries = entries.stream().map(this::cleanDictionaryEntry).collect(toList());
|
List<String> cleanEntries = entries.stream().map(this::cleanDictionaryEntry).collect(toList());
|
||||||
|
|
||||||
validateEntries(cleanEntries);
|
validateEntries(cleanEntries);
|
||||||
@ -79,7 +79,7 @@ public class DictionaryController implements DictionaryResource {
|
|||||||
|
|
||||||
List<String> added = new ArrayList<>(cleanEntries);
|
List<String> added = new ArrayList<>(cleanEntries);
|
||||||
added.removeAll(existing);
|
added.removeAll(existing);
|
||||||
if(added.isEmpty()){
|
if (added.isEmpty()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
entryPersistenceService.addEntry(typeId, added, currentVersion + 1);
|
entryPersistenceService.addEntry(typeId, added, currentVersion + 1);
|
||||||
@ -90,8 +90,7 @@ public class DictionaryController implements DictionaryResource {
|
|||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteEntries(@PathVariable(TYPE_PARAMETER_NAME) String typeId,
|
public void deleteEntries(@PathVariable(TYPE_PARAMETER_NAME) String typeId, @RequestBody List<String> entries) {
|
||||||
@RequestBody List<String> entries) {
|
|
||||||
|
|
||||||
validateEntries(entries);
|
validateEntries(entries);
|
||||||
// To check whether the type exists
|
// To check whether the type exists
|
||||||
@ -116,8 +115,7 @@ public class DictionaryController implements DictionaryResource {
|
|||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateTypeValue(@PathVariable(TYPE_PARAMETER_NAME) String typeId,
|
public void updateTypeValue(@PathVariable(TYPE_PARAMETER_NAME) String typeId, @RequestBody Type typeValueRequest) {
|
||||||
@RequestBody Type typeValueRequest) {
|
|
||||||
|
|
||||||
validateColor(typeValueRequest.getHexColor());
|
validateColor(typeValueRequest.getHexColor());
|
||||||
validateBoolean(typeValueRequest.isHint(), "isHint");
|
validateBoolean(typeValueRequest.isHint(), "isHint");
|
||||||
@ -125,12 +123,11 @@ public class DictionaryController implements DictionaryResource {
|
|||||||
// To check whether the type exists
|
// To check whether the type exists
|
||||||
Type typeResult = convert(dictionaryPersistenceService.getType(typeId), Type.class);
|
Type typeResult = convert(dictionaryPersistenceService.getType(typeId), Type.class);
|
||||||
|
|
||||||
|
|
||||||
if (typeValueRequest.getLabel() != null) {
|
if (typeValueRequest.getLabel() != null) {
|
||||||
checkForDuplicateLabels(typeResult.getDossierTemplateId(), typeResult.getDossierId(), typeValueRequest.getType(), typeValueRequest.getLabel());
|
checkForDuplicateLabels(typeResult.getDossierTemplateId(), typeResult.getDossierId(), typeValueRequest.getType(), typeValueRequest
|
||||||
|
.getLabel());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (typeValueRequest.getLabel() == null) {
|
if (typeValueRequest.getLabel() == null) {
|
||||||
typeValueRequest.setLabel(typeResult.getLabel());
|
typeValueRequest.setLabel(typeResult.getLabel());
|
||||||
}
|
}
|
||||||
@ -163,12 +160,18 @@ public class DictionaryController implements DictionaryResource {
|
|||||||
typeRequest.setLabel(label);
|
typeRequest.setLabel(label);
|
||||||
}
|
}
|
||||||
|
|
||||||
checkForDuplicateLabels(typeRequest.getDossierTemplateId(), typeRequest.getDossierId(), typeRequest.getType(), typeRequest.getLabel());
|
checkForDuplicateLabels(typeRequest.getDossierTemplateId(), typeRequest.getDossierId(), typeRequest.getType(), typeRequest
|
||||||
|
.getLabel());
|
||||||
|
|
||||||
if (dictionaryPersistenceService.getCumulatedTypes(typeRequest.getDossierTemplateId(), typeRequest.getDossierId())
|
if (dictionaryPersistenceService.getCumulatedTypes(typeRequest.getDossierTemplateId(), typeRequest.getDossierId())
|
||||||
.stream()
|
.stream()
|
||||||
.anyMatch(typeResult -> typeRequest.getDossierId() != null && typeResult.getDossierId() != null && typeRequest.getDossierId().equals(typeResult.getDossierId()) && typeRequest.getType().equals(typeResult.getType()) && typeRequest.getDossierTemplateId().equals(typeResult.getDossierTemplateId())
|
.anyMatch(typeResult -> typeRequest.getDossierId() != null && typeResult.getDossierId() != null && typeRequest
|
||||||
|| typeRequest.getType().equals(typeResult.getType()) && typeRequest.getDossierTemplateId().equals(typeResult.getDossierTemplateId()))) {
|
.getDossierId()
|
||||||
|
.equals(typeResult.getDossierId()) && typeRequest.getType()
|
||||||
|
.equals(typeResult.getType()) && typeRequest.getDossierTemplateId()
|
||||||
|
.equals(typeResult.getDossierTemplateId()) || typeRequest.getDossierId() == null && typeRequest.getType()
|
||||||
|
.equals(typeResult.getType()) && typeRequest.getDossierTemplateId()
|
||||||
|
.equals(typeResult.getDossierTemplateId()))) {
|
||||||
throw new ConflictException("The type already exists, could not be added again.");
|
throw new ConflictException("The type already exists, could not be added again.");
|
||||||
}
|
}
|
||||||
String color = typeRequest.getHexColor();
|
String color = typeRequest.getHexColor();
|
||||||
@ -199,28 +202,34 @@ public class DictionaryController implements DictionaryResource {
|
|||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Type> getAllTypesForDossierTemplate(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId) {
|
public List<Type> getAllTypesForDossierTemplate(
|
||||||
|
@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId) {
|
||||||
|
|
||||||
return convert(dictionaryPersistenceService.getAllTypesForDossierTemplate(dossierTemplateId), Type.class);
|
return convert(dictionaryPersistenceService.getAllTypesForDossierTemplate(dossierTemplateId), Type.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Type> getAllTypesForDossier(@PathVariable(DOSSIER_ID_PARAMETER_NAME) String dossierId) {
|
public List<Type> getAllTypesForDossier(@PathVariable(DOSSIER_ID_PARAMETER_NAME) String dossierId) {
|
||||||
|
|
||||||
return convert(dictionaryPersistenceService.getAllTypesForDossier(dossierId), Type.class);
|
return convert(dictionaryPersistenceService.getAllTypesForDossier(dossierId), Type.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Type getDictionaryForType(@PathVariable(TYPE_PARAMETER_NAME) String typeId) {
|
public Type getDictionaryForType(@PathVariable(TYPE_PARAMETER_NAME) String typeId) {
|
||||||
|
|
||||||
var entity = dictionaryPersistenceService.getType(typeId);
|
var entity = dictionaryPersistenceService.getType(typeId);
|
||||||
var target = convert(entity, Type.class);
|
var target = convert(entity, Type.class);
|
||||||
target.setEntries(convert(entity.getEntries(), DictionaryEntry.class));
|
target.setEntries(convert(entity.getEntries(), DictionaryEntry.class));
|
||||||
return target;
|
return target;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public List<DictionaryEntry> getEntriesForType(@PathVariable(TYPE_PARAMETER_NAME) String typeId) {
|
public List<DictionaryEntry> getEntriesForType(@PathVariable(TYPE_PARAMETER_NAME) String typeId) {
|
||||||
|
|
||||||
return convert(dictionaryPersistenceService.getType(typeId).getEntries(), DictionaryEntry.class);
|
return convert(dictionaryPersistenceService.getType(typeId).getEntries(), DictionaryEntry.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -261,11 +270,14 @@ public class DictionaryController implements DictionaryResource {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getVersion(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId) {
|
public long getVersion(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId) {
|
||||||
|
|
||||||
return dictionaryPersistenceService.getVersion(dossierTemplateId);
|
return dictionaryPersistenceService.getVersion(dossierTemplateId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getVersionForDossier(@PathVariable(DOSSIER_ID_PARAMETER_NAME) String dossierId) {
|
public long getVersionForDossier(@PathVariable(DOSSIER_ID_PARAMETER_NAME) String dossierId) {
|
||||||
|
|
||||||
return dictionaryPersistenceService.getVersionForDossier(dossierId);
|
return dictionaryPersistenceService.getVersionForDossier(dossierId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -273,6 +285,7 @@ public class DictionaryController implements DictionaryResource {
|
|||||||
@Override
|
@Override
|
||||||
public void setColors(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId,
|
public void setColors(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId,
|
||||||
@RequestBody Colors colors) {
|
@RequestBody Colors colors) {
|
||||||
|
|
||||||
colors.setDossierTemplateId(dossierTemplateId);
|
colors.setDossierTemplateId(dossierTemplateId);
|
||||||
colorsService.saveColors(convert(colors, ColorsEntity.class));
|
colorsService.saveColors(convert(colors, ColorsEntity.class));
|
||||||
}
|
}
|
||||||
@ -280,6 +293,7 @@ public class DictionaryController implements DictionaryResource {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Colors getColors(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId) {
|
public Colors getColors(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId) {
|
||||||
|
|
||||||
return convert(colorsService.getColors(dossierTemplateId), Colors.class);
|
return convert(colorsService.getColors(dossierTemplateId), Colors.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -294,14 +308,19 @@ public class DictionaryController implements DictionaryResource {
|
|||||||
|
|
||||||
List<TypeEntity> typeResponse = dictionaryPersistenceService.getCumulatedTypes(dossierTemplateId, dossierId);
|
List<TypeEntity> typeResponse = dictionaryPersistenceService.getCumulatedTypes(dossierTemplateId, dossierId);
|
||||||
for (TypeEntity res : typeResponse) {
|
for (TypeEntity res : typeResponse) {
|
||||||
if (res.getDossierId() != null && res.getDossierId().equals(dossierId) && !type.equals(res.getType()) && res.getDossierTemplateId().equals(dossierTemplateId) && labelToCheck.equals(res.getLabel())
|
if (res.getDossierId() != null && res.getDossierId().equals(dossierId) && !type.equals(res.getType()) && res
|
||||||
|| !type.equals(res.getType()) && res.getDossierTemplateId().equals(dossierTemplateId) && labelToCheck.equals(res.getLabel())) {
|
.getDossierTemplateId()
|
||||||
|
.equals(dossierTemplateId) && labelToCheck.equals(res.getLabel()) || !type.equals(res.getType()) && res
|
||||||
|
.getDossierTemplateId()
|
||||||
|
.equals(dossierTemplateId) && labelToCheck.equals(res.getLabel())) {
|
||||||
throw new ConflictException("Label must be unique.");
|
throw new ConflictException("Label must be unique.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private long getCurrentVersion(Type typeResult) {
|
private long getCurrentVersion(Type typeResult) {
|
||||||
|
|
||||||
long currentVersion;
|
long currentVersion;
|
||||||
if (typeResult.getDossierId() != null) {
|
if (typeResult.getDossierId() != null) {
|
||||||
currentVersion = getVersionForDossier(typeResult.getDossierId());
|
currentVersion = getVersionForDossier(typeResult.getDossierId());
|
||||||
@ -311,6 +330,7 @@ public class DictionaryController implements DictionaryResource {
|
|||||||
return currentVersion;
|
return currentVersion;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private String humanizedDictionaryType(String label) {
|
private String humanizedDictionaryType(String label) {
|
||||||
|
|
||||||
String str = label;
|
String str = label;
|
||||||
|
|||||||
@ -0,0 +1,75 @@
|
|||||||
|
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 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.DictionaryClient;
|
||||||
|
import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient;
|
||||||
|
import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemplateClient;
|
||||||
|
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.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierRequest;
|
||||||
|
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.Type;
|
||||||
|
|
||||||
|
import feign.FeignException;
|
||||||
|
|
||||||
|
public class DictionaryTest extends AbstractPersistenceServerServiceTest {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private DossierTesterAndProvider dossierTesterAndProvider;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private DictionaryClient dictionaryClient;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private DossierTemplateClient dossierTemplateClient;
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testCreateDossierDictionaryForTwoDossiers() {
|
||||||
|
|
||||||
|
var dossier = dossierTesterAndProvider.provideTestDossier();
|
||||||
|
|
||||||
|
dictionaryClient.addType(Type.builder()
|
||||||
|
.type("dossier_redaction")
|
||||||
|
.label("Dossier Redactions")
|
||||||
|
.hexColor("#fcba03")
|
||||||
|
.rank(100)
|
||||||
|
.isHint(false)
|
||||||
|
.isCaseInsensitive(false)
|
||||||
|
.isRecommendation(false)
|
||||||
|
.description("Something")
|
||||||
|
.addToDictionaryAction(false)
|
||||||
|
.dossierTemplateId(dossier.getDossierTemplateId())
|
||||||
|
.dossierId(dossier.getId())
|
||||||
|
.build());
|
||||||
|
|
||||||
|
var dossierTemplate = dossierTemplateClient.getDossierTemplate(dossier.getDossierTemplateId());
|
||||||
|
|
||||||
|
var dossier2 = dossierTesterAndProvider.provideTestDossier(dossierTemplate, "dossier2");
|
||||||
|
|
||||||
|
dictionaryClient.addType(Type.builder()
|
||||||
|
.type("dossier_redaction")
|
||||||
|
.label("Dossier Redactions")
|
||||||
|
.hexColor("#fcba03")
|
||||||
|
.rank(100)
|
||||||
|
.isHint(false)
|
||||||
|
.isCaseInsensitive(false)
|
||||||
|
.isRecommendation(false)
|
||||||
|
.description("Something")
|
||||||
|
.addToDictionaryAction(false)
|
||||||
|
.dossierTemplateId(dossier2.getDossierTemplateId())
|
||||||
|
.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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user