diff --git a/pom.xml b/pom.xml index 5dd93af..031e1d2 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ fr.insee.lunatic lunatic-model jar - 5.11.0 + 5.12.0 Lunatic Model Classes and converters for the Lunatic model https://inseefr.github.io/Lunatic-Model/ @@ -117,8 +117,8 @@ maven-compiler-plugin 3.14.0 - 17 - 17 + 21 + 21 diff --git a/src/main/java/fr/insee/lunatic/model/flat/PairwiseLinks.java b/src/main/java/fr/insee/lunatic/model/flat/PairwiseLinks.java index c45ae83..7a47b11 100644 --- a/src/main/java/fr/insee/lunatic/model/flat/PairwiseLinks.java +++ b/src/main/java/fr/insee/lunatic/model/flat/PairwiseLinks.java @@ -21,21 +21,37 @@ "bindingDependencies", "xAxisIterations", "yAxisIterations", + "sourceVariables", "components", "symLinks" }) @Getter @Setter -public class PairwiseLinks - extends ComponentType - implements ComponentNestingType -{ +public class PairwiseLinks extends ComponentType implements ComponentNestingType { + + /** + * Variables associated with the pairwise links component. + */ + @Getter + @Setter + public static class SourceVariables { + /** Name variable name. */ + private String name; + /** Gender variable name. */ + private String gender; + /** Age variable name. */ + private String age; + } @JsonProperty("xAxisIterations") protected LabelType xAxisIterations; @JsonProperty("yAxisIterations") protected LabelType yAxisIterations; + + /** {@link SourceVariables} */ + private SourceVariables sourceVariables; + protected List components; protected SymLinksType symLinks; diff --git a/src/test/java/fr/insee/lunatic/conversion/CleaningSerializationTest.java b/src/test/java/fr/insee/lunatic/conversion/CleaningSerializationTest.java index e5111a7..85fe837 100644 --- a/src/test/java/fr/insee/lunatic/conversion/CleaningSerializationTest.java +++ b/src/test/java/fr/insee/lunatic/conversion/CleaningSerializationTest.java @@ -45,8 +45,7 @@ class CleaningSerializationTest { ] } } - } - """; + }"""; @Test void serializeCleaning() throws SerializationException, JSONException { diff --git a/src/test/java/fr/insee/lunatic/conversion/PairwiseLinksSerializationTest.java b/src/test/java/fr/insee/lunatic/conversion/PairwiseLinksSerializationTest.java new file mode 100644 index 0000000..5666545 --- /dev/null +++ b/src/test/java/fr/insee/lunatic/conversion/PairwiseLinksSerializationTest.java @@ -0,0 +1,46 @@ +package fr.insee.lunatic.conversion; + +import fr.insee.lunatic.exception.SerializationException; +import fr.insee.lunatic.model.flat.PairwiseLinks; +import fr.insee.lunatic.model.flat.Questionnaire; +import org.json.JSONException; +import org.junit.jupiter.api.Test; +import org.skyscreamer.jsonassert.JSONAssert; +import org.skyscreamer.jsonassert.JSONCompareMode; + +class PairwiseLinksSerializationTest { + + @Test + void serializePairwiseLinks() throws SerializationException, JSONException { + // + Questionnaire questionnaire = new Questionnaire(); + PairwiseLinks pairwiseLinks = new PairwiseLinks(); + pairwiseLinks.setId("foo-id"); + PairwiseLinks.SourceVariables sourceVariables = new PairwiseLinks.SourceVariables(); + sourceVariables.setName("FIRST_NAME_VAR"); + sourceVariables.setGender("GENDER_VAR"); + pairwiseLinks.setSourceVariables(sourceVariables); + questionnaire.getComponents().add(pairwiseLinks); + // + String result = new JsonSerializer().serialize(questionnaire); + // + String expected = """ +{ + "componentType": "Questionnaire", + "components": [ + { + "id": "foo-id", + "componentType": "PairwiseLinks", + "sourceVariables": { + "name": "FIRST_NAME_VAR", + "gender": "GENDER_VAR" + }, + "components": [] + } + ] +} +"""; + JSONAssert.assertEquals(expected, result, JSONCompareMode.STRICT); + } + +}