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.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;
|
||||
@ -23,6 +25,7 @@ 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;
|
||||
@ -37,18 +40,15 @@ import static java.util.stream.Collectors.toList;
|
||||
@Slf4j
|
||||
public class DictionaryController implements DictionaryResource {
|
||||
|
||||
|
||||
private final EntryPersistenceService entryPersistenceService;
|
||||
private final DictionaryPersistenceService dictionaryPersistenceService;
|
||||
private final ColorsService colorsService;
|
||||
|
||||
|
||||
@Override
|
||||
public void addEntries(@PathVariable(TYPE_PARAMETER_NAME) String typeId,
|
||||
@RequestBody List<String> entries,
|
||||
public void addEntries(@PathVariable(TYPE_PARAMETER_NAME) String typeId, @RequestBody List<String> entries,
|
||||
@RequestParam(value = "removeCurrent", required = false, defaultValue = "false") boolean removeCurrent) {
|
||||
|
||||
|
||||
List<String> cleanEntries = entries.stream().map(this::cleanDictionaryEntry).collect(toList());
|
||||
|
||||
validateEntries(cleanEntries);
|
||||
@ -79,7 +79,7 @@ public class DictionaryController implements DictionaryResource {
|
||||
|
||||
List<String> added = new ArrayList<>(cleanEntries);
|
||||
added.removeAll(existing);
|
||||
if(added.isEmpty()){
|
||||
if (added.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
entryPersistenceService.addEntry(typeId, added, currentVersion + 1);
|
||||
@ -90,8 +90,7 @@ public class DictionaryController implements DictionaryResource {
|
||||
|
||||
|
||||
@Override
|
||||
public void deleteEntries(@PathVariable(TYPE_PARAMETER_NAME) String typeId,
|
||||
@RequestBody List<String> entries) {
|
||||
public void deleteEntries(@PathVariable(TYPE_PARAMETER_NAME) String typeId, @RequestBody List<String> entries) {
|
||||
|
||||
validateEntries(entries);
|
||||
// To check whether the type exists
|
||||
@ -116,8 +115,7 @@ public class DictionaryController implements DictionaryResource {
|
||||
|
||||
|
||||
@Override
|
||||
public void updateTypeValue(@PathVariable(TYPE_PARAMETER_NAME) String typeId,
|
||||
@RequestBody Type typeValueRequest) {
|
||||
public void updateTypeValue(@PathVariable(TYPE_PARAMETER_NAME) String typeId, @RequestBody Type typeValueRequest) {
|
||||
|
||||
validateColor(typeValueRequest.getHexColor());
|
||||
validateBoolean(typeValueRequest.isHint(), "isHint");
|
||||
@ -125,12 +123,11 @@ public class DictionaryController implements DictionaryResource {
|
||||
// To check whether the type exists
|
||||
Type typeResult = convert(dictionaryPersistenceService.getType(typeId), Type.class);
|
||||
|
||||
|
||||
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) {
|
||||
typeValueRequest.setLabel(typeResult.getLabel());
|
||||
}
|
||||
@ -163,12 +160,18 @@ public class DictionaryController implements DictionaryResource {
|
||||
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())
|
||||
.stream()
|
||||
.anyMatch(typeResult -> typeRequest.getDossierId() != null && typeResult.getDossierId() != null && typeRequest.getDossierId().equals(typeResult.getDossierId()) && typeRequest.getType().equals(typeResult.getType()) && typeRequest.getDossierTemplateId().equals(typeResult.getDossierTemplateId())
|
||||
|| typeRequest.getType().equals(typeResult.getType()) && typeRequest.getDossierTemplateId().equals(typeResult.getDossierTemplateId()))) {
|
||||
.anyMatch(typeResult -> typeRequest.getDossierId() != null && typeResult.getDossierId() != null && typeRequest
|
||||
.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.");
|
||||
}
|
||||
String color = typeRequest.getHexColor();
|
||||
@ -199,28 +202,34 @@ public class DictionaryController implements DictionaryResource {
|
||||
|
||||
|
||||
@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);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<Type> getAllTypesForDossier(@PathVariable(DOSSIER_ID_PARAMETER_NAME) String dossierId) {
|
||||
|
||||
return convert(dictionaryPersistenceService.getAllTypesForDossier(dossierId), Type.class);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Type getDictionaryForType(@PathVariable(TYPE_PARAMETER_NAME) String typeId) {
|
||||
|
||||
var entity = dictionaryPersistenceService.getType(typeId);
|
||||
var target = convert(entity, Type.class);
|
||||
target.setEntries(convert(entity.getEntries(), DictionaryEntry.class));
|
||||
return target;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public List<DictionaryEntry> getEntriesForType(@PathVariable(TYPE_PARAMETER_NAME) String typeId) {
|
||||
|
||||
return convert(dictionaryPersistenceService.getType(typeId).getEntries(), DictionaryEntry.class);
|
||||
}
|
||||
|
||||
@ -261,11 +270,14 @@ public class DictionaryController implements DictionaryResource {
|
||||
|
||||
@Override
|
||||
public long getVersion(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId) {
|
||||
|
||||
return dictionaryPersistenceService.getVersion(dossierTemplateId);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public long getVersionForDossier(@PathVariable(DOSSIER_ID_PARAMETER_NAME) String dossierId) {
|
||||
|
||||
return dictionaryPersistenceService.getVersionForDossier(dossierId);
|
||||
}
|
||||
|
||||
@ -273,6 +285,7 @@ public class DictionaryController implements DictionaryResource {
|
||||
@Override
|
||||
public void setColors(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId,
|
||||
@RequestBody Colors colors) {
|
||||
|
||||
colors.setDossierTemplateId(dossierTemplateId);
|
||||
colorsService.saveColors(convert(colors, ColorsEntity.class));
|
||||
}
|
||||
@ -280,6 +293,7 @@ public class DictionaryController implements DictionaryResource {
|
||||
|
||||
@Override
|
||||
public Colors getColors(@PathVariable(DOSSIER_TEMPLATE_PARAMETER_NAME) String dossierTemplateId) {
|
||||
|
||||
return convert(colorsService.getColors(dossierTemplateId), Colors.class);
|
||||
}
|
||||
|
||||
@ -294,14 +308,19 @@ public class DictionaryController implements DictionaryResource {
|
||||
|
||||
List<TypeEntity> typeResponse = dictionaryPersistenceService.getCumulatedTypes(dossierTemplateId, dossierId);
|
||||
for (TypeEntity res : typeResponse) {
|
||||
if (res.getDossierId() != null && res.getDossierId().equals(dossierId) && !type.equals(res.getType()) && res.getDossierTemplateId().equals(dossierTemplateId) && labelToCheck.equals(res.getLabel())
|
||||
|| !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
|
||||
.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.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private long getCurrentVersion(Type typeResult) {
|
||||
|
||||
long currentVersion;
|
||||
if (typeResult.getDossierId() != null) {
|
||||
currentVersion = getVersionForDossier(typeResult.getDossierId());
|
||||
@ -311,6 +330,7 @@ public class DictionaryController implements DictionaryResource {
|
||||
return currentVersion;
|
||||
}
|
||||
|
||||
|
||||
private String humanizedDictionaryType(String 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