diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DictionaryController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DictionaryController.java index 6beba63fe..97b27513c 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DictionaryController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DictionaryController.java @@ -1,6 +1,7 @@ package com.iqser.red.service.peristence.v1.server.controller; 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; import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.ColorsEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.DictionaryEntryEntity; @@ -29,6 +30,7 @@ import javax.transaction.Transactional; import java.util.ArrayList; import java.util.List; import java.util.Optional; +import java.util.function.Predicate; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -43,6 +45,7 @@ public class DictionaryController implements DictionaryResource { private final EntryPersistenceService entryPersistenceService; private final DictionaryPersistenceService dictionaryPersistenceService; private final ColorsService colorsService; + private final StopwordService stopwordService; @Override @@ -238,8 +241,11 @@ public class DictionaryController implements DictionaryResource { if (CollectionUtils.isEmpty(entries)) { throw new BadRequestException("Entry list is empty."); } + Predicate isDictionaryEntryNotValid = entry -> DictionaryValidator.validateDictionaryEntry(entry).isPresent(); + Predicate isStopword = stopwordService::isStopword; + List errorMessages = entries.stream() - .filter(entry -> DictionaryValidator.validateDictionaryEntry(entry).isPresent()) + .filter(isDictionaryEntryNotValid.or(isStopword)) .collect(toList()); if (CollectionUtils.isNotEmpty(errorMessages)) { throw new BadRequestException("Error(s) validating dictionary entries:\n" + String.join("\n", errorMessages)); diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DictionaryTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DictionaryTest.java index c9413c607..4aa17e585 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DictionaryTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DictionaryTest.java @@ -18,6 +18,8 @@ import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.ty import feign.FeignException; +import java.util.ArrayList; + public class DictionaryTest extends AbstractPersistenceServerServiceTest { @Autowired @@ -29,6 +31,19 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest { @Autowired private DossierTemplateClient dossierTemplateClient; + @Test + public void testAddEntriesWithStopWord() { + var dossier = dossierTesterAndProvider.provideTestDossier(); + var typeId = "dossier_redaction"; + var entries = new ArrayList(); + entries.add("age"); + entries.add("page"); + try { + dictionaryClient.addEntries(typeId, entries, false); + } catch (FeignException e) { + assertThat(e.status()).isEqualTo(400); + } + } @Test public void testCreateDossierDictionaryForTwoDossiers() {