Pull request #147: RED-2470 - Reject stopwords when editing a dictionary as an admin

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

* commit '4271b41f4279305f5562ec0fc945266c2eb08ce0':
  RED-2470 - Reject stopwords when editing a dictionary as an admin
  RED-2470 - Reject stopwords when editing a dictionary as an admin
This commit is contained in:
Corina Olariu 2021-12-07 13:36:08 +01:00 committed by Timo Bejan
commit f78cc5816a
3 changed files with 23 additions and 2 deletions

View File

@ -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<String> isDictionaryEntryNotValid = entry -> DictionaryValidator.validateDictionaryEntry(entry).isPresent();
Predicate<String> isStopword = stopwordService::isStopword;
List<String> 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));

View File

@ -58,7 +58,7 @@ public class FileTesterAndProvider {
assertThat(fileClient.getDossierStatus(dossier.getId()).size()).isGreaterThanOrEqualTo(1);
fileManagementStorageService.storeObject(dossier.getId(), file.getId(), FileType.REDACTION_LOG, objectMapper.writeValueAsBytes(new RedactionLog(1, List.of(RedactionLogEntry.builder().id("annotationId").type("manual").value("value").build()),
fileManagementStorageService.storeObject(dossier.getId(), file.getId(), FileType.REDACTION_LOG, objectMapper.writeValueAsBytes(new RedactionLog(1, List.of(RedactionLogEntry.builder().id("annotationId").type("manual").value("value entry").build()),
null, 0, 0, 0, 0)));
fileManagementStorageService.storeObject(dossier.getId(), file.getId(), FileType.SECTION_GRID, objectMapper.writeValueAsBytes(new SectionGrid()));

View File

@ -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<String>();
entries.add("age");
entries.add("page");
try {
dictionaryClient.addEntries(typeId, entries, false);
} catch (FeignException e) {
assertThat(e.status()).isEqualTo(400);
}
}
@Test
public void testCreateDossierDictionaryForTwoDossiers() {