From 4d4840bbc253b66a2837c93b961eb6586d69707d Mon Sep 17 00:00:00 2001 From: deiflaender Date: Tue, 22 Mar 2022 11:18:59 +0100 Subject: [PATCH] RED-2836: Added hasDictionary and systemManaged to entities --- .../v1/api/model/dossiertemplate/type/Type.java | 2 ++ .../processor/entity/configuration/TypeEntity.java | 4 ++++ .../service/DossierTemplateCloneService.java | 2 +- .../persistence/DictionaryPersistenceService.java | 4 +++- .../v1/server/controller/DictionaryController.java | 8 +++++++- ...added-has-dictionary-to-entities.changelog.yaml | 14 ++++++++++++++ .../db/changelog/db.changelog-master.yaml | 4 ++-- .../server/integration/service/TypeProvider.java | 2 ++ .../tests/DossierTemplateStatsTest.java | 8 ++++++++ 9 files changed, 43 insertions(+), 5 deletions(-) create mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/16-added-has-dictionary-to-entities.changelog.yaml diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/type/Type.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/type/Type.java index 881961a23..67790ae3b 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/type/Type.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/type/Type.java @@ -32,6 +32,8 @@ public class Type { private List entries = new ArrayList<>(); private List falsePositiveEntries = new ArrayList<>(); private List falseRecommendationEntries = new ArrayList<>(); + private boolean hasDictionary; + private boolean systemManaged; // For auto-mappers @JsonIgnore diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/TypeEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/TypeEntity.java index e070caf68..7224754a3 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/TypeEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/TypeEntity.java @@ -58,6 +58,10 @@ public class TypeEntity { private long version; @Column private boolean addToDictionaryAction; + @Column + private boolean hasDictionary; + @Column + private boolean systemManaged; @Fetch(FetchMode.SUBSELECT) @BatchSize(size=500) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java index 30ac3a422..80d4824bb 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java @@ -131,7 +131,7 @@ public class DossierTemplateCloneService { List clonedTypes = new ArrayList<>(); var types = dictionaryPersistenceService.getAllTypesForDossierTemplate(dossierTemplateId); 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); + 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()); te.setDossierTemplateId(clonedDossierTemplateId); clonedTypes.add(te); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DictionaryPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DictionaryPersistenceService.java index 23058dc7f..1114930a2 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DictionaryPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DictionaryPersistenceService.java @@ -36,7 +36,7 @@ public class DictionaryPersistenceService { public TypeEntity addType(String type, String dossierTemplateId, String hexColor, String recommendationHexColor, int rank, boolean isHint, boolean caseInsensitive, boolean isRecommendation, - String description, boolean addToDictionaryAction, String label, String dossierId) { + String description, boolean addToDictionaryAction, String label, String dossierId, boolean hasDictionary, boolean systemManaged) { checkRankAlreadyExists(type, dossierTemplateId, rank, dossierId); @@ -55,6 +55,8 @@ public class DictionaryPersistenceService { .addToDictionaryAction(addToDictionaryAction) .label(label) .version(1) + .hasDictionary(hasDictionary) + .systemManaged(systemManaged) .build(); return typeRepository.save(t); 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 da3e0f75d..817542639 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 @@ -70,6 +70,9 @@ public class DictionaryController implements DictionaryResource { // To check whether the type exists, type should not be added into database implicitly by addEntry. Type typeResult = convert(dictionaryPersistenceService.getType(typeId), Type.class); + if (!typeResult.isHasDictionary()){ + throw new BadRequestException("Entity type does not have a dictionary"); + } var currentVersion = getCurrentVersion(typeResult); @@ -204,7 +207,7 @@ public class DictionaryController implements DictionaryResource { validateColor(color); return convert(dictionaryPersistenceService.addType(typeRequest.getType(), typeRequest.getDossierTemplateId(), color, typeRequest.getRecommendationHexColor(), typeRequest .getRank(), typeRequest.isHint(), typeRequest.isCaseInsensitive(), typeRequest.isRecommendation(), typeRequest - .getDescription(), typeRequest.isAddToDictionaryAction(), typeRequest.getLabel(), typeRequest.getDossierId()), Type.class); + .getDescription(), typeRequest.isAddToDictionaryAction(), typeRequest.getLabel(), typeRequest.getDossierId(), typeRequest.isHasDictionary(), typeRequest.isSystemManaged()), Type.class); } @@ -213,6 +216,9 @@ public class DictionaryController implements DictionaryResource { // NotFoundException would be thrown if the type not found in database. Type typeResult = convert(dictionaryPersistenceService.getType(typeId), Type.class); + if(typeResult.isSystemManaged()){ + throw new BadRequestException("Can not delete system managed entity type"); + } var currentVersion = getCurrentVersion(typeResult); diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/16-added-has-dictionary-to-entities.changelog.yaml b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/16-added-has-dictionary-to-entities.changelog.yaml new file mode 100644 index 000000000..78cd55f7d --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/16-added-has-dictionary-to-entities.changelog.yaml @@ -0,0 +1,14 @@ +databaseChangeLog: + - changeSet: + id: add-has-dictionary + author: dom + changes: + - addColumn: + columns: + - column: + name: has_dictionary + type: BOOLEAN + - column: + name: system_managed + type: BOOLEAN + tableName: entity \ No newline at end of file diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml index e1c4dd304..df39f35b3 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml +++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml @@ -37,5 +37,5 @@ databaseChangeLog: file: db/changelog/14-add-redaction-source-id.changelog.yaml - include: file: db/changelog/15-dossier-remove-dossier-state.changelog.yaml - - + - include: + file: db/changelog/16-added-has-dictionary-to-entities.changelog.yaml \ No newline at end of file diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/TypeProvider.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/TypeProvider.java index c967d1356..de5a207c6 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/TypeProvider.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/TypeProvider.java @@ -29,6 +29,8 @@ public class TypeProvider { type.setRecommendation(false); type.setCaseInsensitive(true); type.setDossierTemplateId(dossierTemplate.getId()); + type.setHasDictionary(true); + type.setSystemManaged(false); type.setDossierId(dossier != null ? dossier.getId() : null); var createdType = dictionaryClient.addType(type); diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateStatsTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateStatsTest.java index 2cf1cb100..dd1541f17 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateStatsTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateStatsTest.java @@ -73,6 +73,8 @@ public class DossierTemplateStatsTest extends AbstractPersistenceServerServiceTe .addToDictionaryAction(false) .dossierTemplateId(dossierTemplate2.getId()) .dossierId(null) + .hasDictionary(true) + .systemManaged(false) .build()); assertThat(addedType).isNotNull(); @@ -93,6 +95,8 @@ public class DossierTemplateStatsTest extends AbstractPersistenceServerServiceTe .addToDictionaryAction(false) .dossierTemplateId(dossierTemplate2.getId()) .dossierId(null) + .hasDictionary(true) + .systemManaged(false) .build()); var entries2 = new ArrayList(); entries2.add("entry1"); @@ -113,6 +117,8 @@ public class DossierTemplateStatsTest extends AbstractPersistenceServerServiceTe .addToDictionaryAction(false) .dossierTemplateId(dossierTemplate3.getId()) .dossierId(null) + .hasDictionary(true) + .systemManaged(false) .build()); assertThat(addedType3).isNotNull(); @@ -136,6 +142,8 @@ public class DossierTemplateStatsTest extends AbstractPersistenceServerServiceTe .description("Something") .addToDictionaryAction(false) .dossierTemplateId(dossierTemplate5.getId()) + .hasDictionary(true) + .systemManaged(false) .build()); assertThat(addedType5).isNotNull();