diff --git a/eno-core/src/main/java/fr/insee/eno/core/model/question/UniqueChoiceQuestion.java b/eno-core/src/main/java/fr/insee/eno/core/model/question/UniqueChoiceQuestion.java index d174ee458..519143e37 100644 --- a/eno-core/src/main/java/fr/insee/eno/core/model/question/UniqueChoiceQuestion.java +++ b/eno-core/src/main/java/fr/insee/eno/core/model/question/UniqueChoiceQuestion.java @@ -86,7 +86,8 @@ public enum DisplayFormat {RADIO, CHECKBOX, DROPDOWN} /** * Filter applied to dynamic response options (VTL expression). */ - @Pogues("getOptionFilter()") + @Pogues("getResponse().getFirst().getChoiceType() == T(fr.insee.pogues.model.ChoiceTypeEnum).VARIABLE ? " + + "getResponse().getFirst().getOptionFilter() : null") @Lunatic("setOptionFilter(#param)") CalculatedExpression optionFilter; diff --git a/eno-core/src/main/java/fr/insee/eno/core/model/question/table/UniqueChoiceCell.java b/eno-core/src/main/java/fr/insee/eno/core/model/question/table/UniqueChoiceCell.java index 7fbfbd0cc..bca287d5f 100644 --- a/eno-core/src/main/java/fr/insee/eno/core/model/question/table/UniqueChoiceCell.java +++ b/eno-core/src/main/java/fr/insee/eno/core/model/question/table/UniqueChoiceCell.java @@ -6,6 +6,7 @@ import fr.insee.eno.core.annotations.Lunatic; import fr.insee.eno.core.annotations.Pogues; import fr.insee.eno.core.exceptions.technical.MappingException; +import fr.insee.eno.core.model.calculated.CalculatedExpression; import fr.insee.eno.core.model.code.CodeItem; import fr.insee.eno.core.model.question.UniqueChoiceQuestion; import fr.insee.eno.core.parameter.Format; @@ -56,6 +57,14 @@ public class UniqueChoiceCell extends ResponseCell { @Lunatic("setOptionSource(#param)") String optionSource; + /** + * Filter applied to dynamic response options (VTL expression). + */ + @Pogues("getChoiceType() == T(fr.insee.pogues.model.ChoiceTypeEnum).VARIABLE ? " + + "#root.getOptionFilter() : null") + @Lunatic("setOptionFilter(#param)") + CalculatedExpression optionFilter; + @Lunatic("getOptions()") List codeItems = new ArrayList<>(); diff --git a/eno-core/src/test/java/fr/insee/eno/core/mapping/in/pogues/UniqueChoiceQuestionTest.java b/eno-core/src/test/java/fr/insee/eno/core/mapping/in/pogues/UniqueChoiceQuestionTest.java index 9490219c1..698b60eb0 100644 --- a/eno-core/src/test/java/fr/insee/eno/core/mapping/in/pogues/UniqueChoiceQuestionTest.java +++ b/eno-core/src/test/java/fr/insee/eno/core/mapping/in/pogues/UniqueChoiceQuestionTest.java @@ -83,6 +83,9 @@ void variableOptionsCase() { poguesUCQ.getResponse().getFirst().setChoiceType(ChoiceTypeEnum.VARIABLE); poguesUCQ.getResponse().getFirst().setVariableReference("variable-id"); + // option filter + poguesUCQ.getResponse().getFirst().setOptionFilter("my filter"); + poguesSequence.getChild().add(poguesUCQ); poguesQuestionnaire.getChild().add(poguesSequence); @@ -103,6 +106,7 @@ void variableOptionsCase() { // Then enoUCQ = assertInstanceOf(UniqueChoiceQuestion.class, enoQuestionnaire.getSingleResponseQuestions().getFirst()); assertEquals("SOME_ITERATION_VARIABLE", enoUCQ.getOptionSource()); + assertEquals("my filter", enoUCQ.getOptionFilter().getValue()); } } diff --git a/pom.xml b/pom.xml index f0617e3cf..e143855e4 100644 --- a/pom.xml +++ b/pom.xml @@ -38,7 +38,7 @@ 0.8.14 - 1.15.3 + 1.15.5 5.15.0