From da9a90adf20b1b329e83fff4342db976daf05c82 Mon Sep 17 00:00:00 2001 From: Alexis Szmundy Date: Wed, 17 Jun 2026 15:45:45 +0200 Subject: [PATCH 1/2] fix(ucqVariables): get code values and content as label moved : - code: content -> attribute "code" - label: attribute "label" -> content due to quotes added to labels --- src/main/java/fr/insee/bpm/metadata/reader/ddi/DDIReader.java | 4 ++-- src/main/resources/xslt/structured-variables.xsl | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/fr/insee/bpm/metadata/reader/ddi/DDIReader.java b/src/main/java/fr/insee/bpm/metadata/reader/ddi/DDIReader.java index ed36997..b05f583 100644 --- a/src/main/java/fr/insee/bpm/metadata/reader/ddi/DDIReader.java +++ b/src/main/java/fr/insee/bpm/metadata/reader/ddi/DDIReader.java @@ -228,8 +228,8 @@ private static void addValues(UcqVariable variable, NodeList valueElements) { for (int k = 0; k < valueElements.getLength(); k++) { Node valueElement = valueElements.item(k); if (nodeIsElementWithName(valueElement, "Value")) { - variable.addModality(valueElement.getTextContent(), - ((Element) valueElement).getAttribute("label")); + variable.addModality(((Element) valueElement).getAttribute("code"), + valueElement.getTextContent()); } } diff --git a/src/main/resources/xslt/structured-variables.xsl b/src/main/resources/xslt/structured-variables.xsl index 59f266b..14f7446 100644 --- a/src/main/resources/xslt/structured-variables.xsl +++ b/src/main/resources/xslt/structured-variables.xsl @@ -270,8 +270,8 @@ - - + + From dc9cfb5b4697cbffe3ee01981d9d8ab9697aaf05 Mon Sep 17 00:00:00 2001 From: Alexis Szmundy Date: Thu, 18 Jun 2026 10:01:29 +0200 Subject: [PATCH 2/2] fix: empty sasFormat --- CHANGELOG.md | 5 ++++ .../fr/insee/bpm/metadata/model/Variable.java | 26 ++++++++++++++----- .../bpm/metadata/model/VariableTest.java | 16 +++++++++++- 3 files changed, 39 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7fe7c30..b1a752e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,9 @@ # Changelog +## 1.2.1 [TODO] +### Fixed +- Empty sasFormat exception +- XSLT : put modality in content and code as attribute + ## 1.1.0 [2026-03-04] ### Changed - Java 21 -> 25 diff --git a/src/main/java/fr/insee/bpm/metadata/model/Variable.java b/src/main/java/fr/insee/bpm/metadata/model/Variable.java index 3edda2b..1e27737 100644 --- a/src/main/java/fr/insee/bpm/metadata/model/Variable.java +++ b/src/main/java/fr/insee/bpm/metadata/model/Variable.java @@ -3,6 +3,7 @@ import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import lombok.extern.slf4j.Slf4j; /** * Object class to represent a variable. @@ -10,6 +11,7 @@ */ @Getter @NoArgsConstructor +@Slf4j public class Variable { /** Variable name. */ @@ -54,15 +56,25 @@ public String getGroupName() { } public int getExpectedLength(){ - if (this.sasFormat != null && this.sasFormat.contains(".")){ - String[] sasFormatPart = this.sasFormat.split("\\."); - return Integer.parseInt(sasFormatPart[0]); + if(this.sasFormat == null){ + return 1; } - if (this.sasFormat != null){ - return Integer.parseInt(this.sasFormat); + if(this.sasFormat.isEmpty()){ + log.warn("Empty SAS format for variable {}", this.name); + return 1; + } + + String sasFormatToReturn = this.sasFormat; + if (this.sasFormat.contains(".")){ + sasFormatToReturn = this.sasFormat.split("\\.")[0]; + } + try{ + return Integer.parseInt(sasFormatToReturn); + }catch (NumberFormatException _){ + log.warn("Invalid sas format \"{}\" for variable {}", sasFormatToReturn, this.name); + // Not sure about that return + return 1; } - // Not sure about that return - return 1; } } diff --git a/src/test/java/fr/insee/bpm/metadata/model/VariableTest.java b/src/test/java/fr/insee/bpm/metadata/model/VariableTest.java index cb98539..d14cb61 100644 --- a/src/test/java/fr/insee/bpm/metadata/model/VariableTest.java +++ b/src/test/java/fr/insee/bpm/metadata/model/VariableTest.java @@ -40,8 +40,22 @@ void getExpectedLengthTest_noDot(){ //WHEN + THEN Assertions.assertThat(variable.getExpectedLength()).isEqualTo(2); } + @Test - void getExpectedLengthTest_empty(){ + void getExpectedLengthTest_empty_or_invalid(){ + //GIVEN + variable.sasFormat = ""; + + //WHEN + THEN + Assertions.assertThat(variable.getExpectedLength()).isEqualTo(1); + } + + @Test + void getExpectedLengthTest_null(){ + //GIVEN + variable.sasFormat = null; + + //WHEN + THEN Assertions.assertThat(variable.getExpectedLength()).isEqualTo(1); } } \ No newline at end of file