From 7fbe3f8258093c1499465424558fcf49a6d719d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Kov=C3=A1=C4=8Dik?= Date: Tue, 18 Nov 2025 11:19:24 +0100 Subject: [PATCH 1/2] [NAE-2261] SEARCH Node - fetch cases from mongo - add AuthPrincipalDto to object library - remove immediate data from elasticCase and add NodeInfo - rework of elastic Datafields to remove dependency to TextField --- .../objects/auth/dto/AuthPrincipalDto.java | 24 +++++++++++++++++++ .../objects/elastic/domain/ElasticCase.java | 6 ++--- .../objects/elastic/domain/I18nField.java | 9 ++++--- .../objects/elastic/domain/MapField.java | 3 +-- .../objects/elastic/domain/NodeInfo.java | 18 ++++++++++++++ .../elastic/domain/StringCollectionField.java | 3 +-- 6 files changed, 50 insertions(+), 13 deletions(-) create mode 100644 nae-object-library/src/main/java/com/netgrif/application/engine/objects/auth/dto/AuthPrincipalDto.java create mode 100644 nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/NodeInfo.java diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/auth/dto/AuthPrincipalDto.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/auth/dto/AuthPrincipalDto.java new file mode 100644 index 0000000000..85a2e361d1 --- /dev/null +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/auth/dto/AuthPrincipalDto.java @@ -0,0 +1,24 @@ +package com.netgrif.application.engine.objects.auth.dto; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NonNull; +import lombok.ToString; + +import java.io.Serial; +import java.io.Serializable; + +@Data +public class AuthPrincipalDto implements Serializable { + + @Serial + private static final long serialVersionUID = 6725518942728316525L; + + private String username; + + private String realmId; + + @ToString.Exclude + @EqualsAndHashCode.Exclude + private String sessionId; +} \ No newline at end of file diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/ElasticCase.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/ElasticCase.java index c16316c967..6b9d672db9 100644 --- a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/ElasticCase.java +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/ElasticCase.java @@ -49,8 +49,6 @@ public abstract class ElasticCase implements Serializable { private String authorUsername; - private List immediateData; - private Map dataSet; private Set taskIds; @@ -79,6 +77,8 @@ public abstract class ElasticCase implements Serializable { private Map tags; + private NodeInfo nodeInfo; + public ElasticCase(Case useCase) { id = useCase.getStringId(); lastModified = Timestamp.valueOf(useCase.getLastModified()).getTime(); @@ -104,7 +104,6 @@ public ElasticCase(Case useCase) { tags = new HashMap<>(useCase.getTags()); dataSet = new HashMap<>(); - immediateData = useCase.getImmediateData().stream().map(ImmediateField::new).collect(Collectors.toList()); } public void update(ElasticCase useCase) { @@ -123,6 +122,5 @@ public void update(ElasticCase useCase) { tags = useCase.getTags(); dataSet = useCase.getDataSet(); - immediateData = useCase.getImmediateData(); } } diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/I18nField.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/I18nField.java index fa6b590f4c..d503b6eec7 100644 --- a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/I18nField.java +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/I18nField.java @@ -11,23 +11,22 @@ @Data @NoArgsConstructor @EqualsAndHashCode(callSuper = true) -public abstract class I18nField extends TextField { +public abstract class I18nField extends DataField { public String[] keyValue; public Map translations; public I18nField(Set keys, Set values, Map translations) { - super(new String[0]); + super(values.toArray(new String[0])); this.keyValue = keys.toArray(new String[0]); - this.textValue = values.toArray(new String[0]); this.translations = translations; } @Override public Object getValue() { - if (textValue != null && textValue.length > 0) { - return new I18nString(textValue[0], translations); + if (fulltextValue != null && fulltextValue.length > 0) { + return new I18nString(fulltextValue[0], translations); } return null; } diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/MapField.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/MapField.java index ad5e374b20..2e78deb1f6 100644 --- a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/MapField.java +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/MapField.java @@ -11,7 +11,7 @@ @Data @NoArgsConstructor @EqualsAndHashCode(callSuper = true) -public abstract class MapField extends TextField { +public abstract class MapField extends DataField { public String[] keyValue; @@ -29,7 +29,6 @@ public MapField(List>> valuePairs) { keyValue[i] = valuePairs.get(i).getKey(); values.addAll(valuePairs.get(i).getValue()); } - this.textValue = values.toArray(new String[0]); this.fulltextValue = values.toArray(new String[0]); } diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/NodeInfo.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/NodeInfo.java new file mode 100644 index 0000000000..40bf173f4b --- /dev/null +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/NodeInfo.java @@ -0,0 +1,18 @@ +package com.netgrif.application.engine.objects.elastic.domain; + +import lombok.AllArgsConstructor; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +@Data +@AllArgsConstructor +public class NodeInfo implements Serializable { + + @Serial + private static final long serialVersionUID = 7454569786379865L; + + private String nodeHost; + private int nodePort; +} diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/StringCollectionField.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/StringCollectionField.java index c4b4cb972c..3a523b6d25 100644 --- a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/StringCollectionField.java +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/StringCollectionField.java @@ -1,6 +1,5 @@ package com.netgrif.application.engine.objects.elastic.domain; - import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; @@ -8,7 +7,7 @@ @Data @NoArgsConstructor @EqualsAndHashCode(callSuper = true) -public abstract class StringCollectionField extends TextField { +public abstract class StringCollectionField extends DataField { public String[] collectionValue; From 9befc605762b5ea923be41a27c36c9c990b6fb01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Kov=C3=A1=C4=8Dik?= Date: Tue, 18 Nov 2025 12:17:12 +0100 Subject: [PATCH 2/2] [NAE-2261] SEARCH Node - fetch cases from mongo - remove code from 2251 - when the search node fetches cases from mongo, its not nessessery anymore to store translations of value into elastic --- .../service/ElasticCaseMappingService.java | 8 +++----- .../objects/elastic/domain/MapField.java | 18 +++++++----------- .../spring/elastic/domain/MapField.java | 11 ++--------- 3 files changed, 12 insertions(+), 25 deletions(-) diff --git a/application-engine/src/main/java/com/netgrif/application/engine/elastic/service/ElasticCaseMappingService.java b/application-engine/src/main/java/com/netgrif/application/engine/elastic/service/ElasticCaseMappingService.java index 23ec0930de..7e541e15c9 100644 --- a/application-engine/src/main/java/com/netgrif/application/engine/elastic/service/ElasticCaseMappingService.java +++ b/application-engine/src/main/java/com/netgrif/application/engine/elastic/service/ElasticCaseMappingService.java @@ -93,10 +93,9 @@ protected Optional transformDataField(String fieldId, Case useCase) { } Set mapValues = optValues.get(); Map options = this.getFieldOptions(multichoiceMap, netField); - List> values = new ArrayList<>(); + List>> values = new ArrayList<>(); for (String key : (Set) mapValues) { - I18nString selectedValue = options.get(key); - values.add(new AbstractMap.SimpleEntry<>(key, selectedValue != null ? selectedValue : new I18nString(""))); + values.add(new AbstractMap.SimpleEntry<>(key, I18nStringUtils.collectTranslations(options.get(key)))); } return Optional.of(new com.netgrif.application.engine.adapter.spring.elastic.domain.MapField(values)); } @@ -134,8 +133,7 @@ protected Optional transformStringCollectionField(com.netgrif.applica (com.netgrif.application.engine.objects.workflow.domain.DataField enumMap, EnumerationMapField netField) { Map options = this.getFieldOptions(enumMap, netField); String selectedKey = (String) enumMap.getValue(); - I18nString selectedValue = options.get(selectedKey); - return Optional.of(new com.netgrif.application.engine.adapter.spring.elastic.domain.MapField(new AbstractMap.SimpleEntry<>(selectedKey, selectedValue != null ? selectedValue : new I18nString("")))); + return Optional.of(new com.netgrif.application.engine.adapter.spring.elastic.domain.MapField(new AbstractMap.SimpleEntry<>(selectedKey, I18nStringUtils.collectTranslations(options.get(selectedKey))))); } private Map getFieldOptions diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/MapField.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/MapField.java index 7477ffa845..48b7b5f79f 100644 --- a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/MapField.java +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/MapField.java @@ -1,6 +1,5 @@ package com.netgrif.application.engine.objects.elastic.domain; -import com.netgrif.application.engine.objects.petrinet.domain.I18nString; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; @@ -13,21 +12,18 @@ public abstract class MapField extends DataField { public String[] keyValue; - public Map keyValueTranslations; - public MapField(Map.Entry valueTranslationPair) { - this(List.of(valueTranslationPair)); + public MapField(Map.Entry> valuePair) { + this(List.of(valuePair)); } - public MapField(List> valueTranslationPairs) { + public MapField(List>> valuePairs) { super(new String[0]); - this.keyValue = new String[valueTranslationPairs.size()]; + this.keyValue = new String[valuePairs.size()]; List values = new ArrayList<>(); - this.keyValueTranslations = new HashMap<>(); - for (int i = 0; i < valueTranslationPairs.size(); i++) { - this.keyValue[i] = valueTranslationPairs.get(i).getKey(); - values.addAll(I18nStringUtils.collectTranslations(valueTranslationPairs.get(i).getValue())); - this.keyValueTranslations.put(valueTranslationPairs.get(i).getKey(), valueTranslationPairs.get(i).getValue()); + for (int i = 0; i < valuePairs.size(); i++) { + keyValue[i] = valuePairs.get(i).getKey(); + values.addAll(valuePairs.get(i).getValue()); } this.fulltextValue = values.toArray(new String[0]); } diff --git a/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/elastic/domain/MapField.java b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/elastic/domain/MapField.java index 217ab8001d..0561d742d6 100644 --- a/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/elastic/domain/MapField.java +++ b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/elastic/domain/MapField.java @@ -1,9 +1,7 @@ package com.netgrif.application.engine.adapter.spring.elastic.domain; -import com.netgrif.application.engine.objects.petrinet.domain.I18nString; import lombok.NoArgsConstructor; import org.springframework.data.elasticsearch.annotations.Field; - import java.util.Collection; import java.util.List; import java.util.Map; @@ -13,11 +11,11 @@ @NoArgsConstructor public class MapField extends com.netgrif.application.engine.objects.elastic.domain.MapField { - public MapField(Map.Entry valuePair) { + public MapField(Map.Entry> valuePair) { super(valuePair); } - public MapField(List> valuePairs) { + public MapField(List>> valuePairs) { super(valuePairs); } @@ -31,9 +29,4 @@ public String[] getFulltextValue() { public String[] getKeyValue() { return super.getKeyValue(); } - - @Field(type = Flattened, index = false) - public Map getKeyValueTranslations() { - return super.keyValueTranslations; - } }