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..8a2785d9ac 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 @@ -6,6 +6,7 @@ import com.netgrif.application.engine.elastic.service.interfaces.IElasticCaseMappingService; import com.netgrif.application.engine.objects.petrinet.domain.I18nString; import com.netgrif.application.engine.objects.petrinet.domain.dataset.*; +import com.netgrif.application.engine.objects.petrinet.domain.dataset.TaskField; import com.netgrif.application.engine.objects.workflow.domain.Case; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -77,6 +78,8 @@ protected Optional transformDataField(String fieldId, Case useCase) { return this.transformFilterFieldField(caseField, (com.netgrif.application.engine.objects.petrinet.domain.dataset.FilterField) netField); } else if (netField instanceof com.netgrif.application.engine.objects.petrinet.domain.dataset.StringCollectionField) { return this.transformStringCollectionField(caseField, (com.netgrif.application.engine.objects.petrinet.domain.dataset.StringCollectionField) netField); + } else if (netField instanceof com.netgrif.application.engine.objects.petrinet.domain.dataset.TaskField) { + return this.transformTaskField(caseField); } else { String string = caseField.getValue().toString(); if (string == null) @@ -226,6 +229,11 @@ private Optional getMultichoiceValue(com.netgrif.application.engine.objects return Optional.of(new com.netgrif.application.engine.adapter.spring.elastic.domain.UserListField(userMappingData)); } + protected Optional transformTaskField(com.netgrif.application.engine.objects.workflow.domain.DataField dataField) { + String[] referencedTasks = ((List) dataField.getValue()).toArray(new String[0]); + return Optional.of(new com.netgrif.application.engine.adapter.spring.elastic.domain.TaskField(referencedTasks)); + } + private UserField.UserMappingData transformUserValue(UserFieldValue user) { return new UserField.UserMappingData(user.getId(), user.getRealmId(), user.getUsername(), buildFullName(user.getFirstName(), user.getLastName()).toString()); } diff --git a/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/TaskField.java b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/TaskField.java new file mode 100644 index 0000000000..2ed419123b --- /dev/null +++ b/nae-object-library/src/main/java/com/netgrif/application/engine/objects/elastic/domain/TaskField.java @@ -0,0 +1,29 @@ +package com.netgrif.application.engine.objects.elastic.domain; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.Arrays; + +@Data +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +public abstract class TaskField extends DataField { + + public String[] taskRefValue; + + public TaskField(String[] values) { + super(values); + this.taskRefValue = values; + } + + @Override + public Object getValue() { + if (taskRefValue == null) { + return new ArrayList<>(); + } + return new ArrayList<>(Arrays.asList(taskRefValue)); + } +} diff --git a/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/elastic/domain/TaskField.java b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/elastic/domain/TaskField.java new file mode 100644 index 0000000000..9b463851e7 --- /dev/null +++ b/nae-spring-core-adapter/src/main/java/com/netgrif/application/engine/adapter/spring/elastic/domain/TaskField.java @@ -0,0 +1,31 @@ +package com.netgrif.application.engine.adapter.spring.elastic.domain; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.springframework.data.elasticsearch.annotations.Field; + +import static org.springframework.data.elasticsearch.annotations.FieldType.Keyword; +import static org.springframework.data.elasticsearch.annotations.FieldType.Text; + +@Data +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class TaskField extends com.netgrif.application.engine.objects.elastic.domain.TaskField { + + public TaskField(String[] values) { + super(values); + } + + @Override + @Field(type = Text) + public String[] getFulltextValue() { + return super.getFulltextValue(); + } + + @Override + @Field(type = Keyword) + public String[] getTaskRefValue() { + return super.getTaskRefValue(); + } +}