diff --git a/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/FieldType.groovy b/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/FieldType.groovy index 53ed440791..c93773090d 100644 --- a/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/FieldType.groovy +++ b/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/FieldType.groovy @@ -18,6 +18,7 @@ enum FieldType { USERLIST("userList"), TABULAR("tabular"), CASE_REF("caseRef"), + PROCESS_REF("processRef"), DATETIME("dateTime"), BUTTON("button"), TASK_REF("taskRef"), diff --git a/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/ProcessField.groovy b/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/ProcessField.groovy new file mode 100644 index 0000000000..11953779de --- /dev/null +++ b/src/main/groovy/com/netgrif/application/engine/petrinet/domain/dataset/ProcessField.groovy @@ -0,0 +1,33 @@ +package com.netgrif.application.engine.petrinet.domain.dataset + +import org.springframework.data.mongodb.core.mapping.Document + +@Document +class ProcessField extends Field> { + + ProcessField() { + super() + super.defaultValue = new ArrayList() + } + + @Override + FieldType getType() { + return FieldType.PROCESS_REF + } + + @Override + void clearValue() { + this.setValue(new ArrayList()) + } + + @Override + Field clone() { + ProcessField clone = new ProcessField() + super.clone(clone) + return clone + } + + void setDefaultValue(List defaultValue) { + super.setDefaultValue(defaultValue) + } +} \ No newline at end of file diff --git a/src/main/java/com/netgrif/application/engine/importer/service/FieldFactory.java b/src/main/java/com/netgrif/application/engine/importer/service/FieldFactory.java index b6dddb4db7..04670c79f2 100644 --- a/src/main/java/com/netgrif/application/engine/importer/service/FieldFactory.java +++ b/src/main/java/com/netgrif/application/engine/importer/service/FieldFactory.java @@ -235,6 +235,9 @@ Field getField(Data data, Importer importer) throws IllegalArgumentException, case CASE_REF: field = buildCaseField(data); break; + case PROCESS_REF: + field = buildProcessField(data); + break; case DATE_TIME: field = buildDateTimeField(data); break; @@ -264,7 +267,7 @@ Field getField(Data data, Importer importer) throws IllegalArgumentException, field = buildI18nField(data, importer); break; case STRING_COLLECTION: - field = buildStringCollectionField(data, importer); + field = buildStringCollectionField(data); break; default: throw new IllegalArgumentException(data.getType() + " is not a valid Field type"); @@ -317,7 +320,17 @@ Field getField(Data data, Importer importer) throws IllegalArgumentException, return field; } - private StringCollectionField buildStringCollectionField(Data data, Importer importer) { + private ProcessField buildProcessField(Data data) { + ProcessField field = new ProcessField(); + setDefaultValues(field, data, defaultValues -> { + if (defaultValues != null) { + field.setDefaultValue(defaultValues); + } + }); + return field; + } + + private StringCollectionField buildStringCollectionField(Data data) { StringCollectionField field = new StringCollectionField(); setDefaultValues(field, data, defaultValues -> { if (defaultValues != null) { diff --git a/src/test/java/com/netgrif/application/engine/pfql/QueryLangTest.java b/src/test/java/com/netgrif/application/engine/pfql/QueryLangTest.java index 3f4cc5efa2..a9eaf34052 100644 --- a/src/test/java/com/netgrif/application/engine/pfql/QueryLangTest.java +++ b/src/test/java/com/netgrif/application/engine/pfql/QueryLangTest.java @@ -108,20 +108,20 @@ public void testSearchService() throws InterruptedException { assertEquals(Case.class, case4.getClass()); assertEquals("444", ((Case) case4).getFieldValue("text_0")); - Object case4_2 = searchService.search("case: processIdentifier eq \"query_test\" and data.text_0.value == \"4\""); + Object case4_2 = searchService.search("case: processIdentifier eq \"query_test\" and data.text_0.value == \"444\""); assertNotNull(case4_2); assertEquals(Case.class, case4_2.getClass()); - assertEquals("4", ((Case) case4_2).getFieldValue("text_0")); + assertEquals("444", ((Case) case4_2).getFieldValue("text_0")); - Object case4_3 = searchService.search("case: processIdentifier eq 'query_test' and data.text_0.value == \"4\""); + Object case4_3 = searchService.search("case: processIdentifier eq 'query_test' and data.text_0.value == \"444\""); assertNotNull(case4_3); assertEquals(Case.class, case4_3.getClass()); - assertEquals("4", ((Case) case4_3).getFieldValue("text_0")); + assertEquals("444", ((Case) case4_3).getFieldValue("text_0")); - Object case4_4 = searchService.search("case: processIdentifier eq \"query_test\" and data.text_0.value == '4'"); + Object case4_4 = searchService.search("case: processIdentifier eq \"query_test\" and data.text_0.value == '444'"); assertNotNull(case4_4); assertEquals(Case.class, case4_4.getClass()); - assertEquals("4", ((Case) case4_4).getFieldValue("text_0")); + assertEquals("444", ((Case) case4_4).getFieldValue("text_0")); Object case5 = searchService.search("case: processIdentifier eq 'query_test' and data.boolean_0.value == true"); assertNotNull(case5);