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);
+ }
+
+}