Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
# Changelog
## 1.2.1 [TODO]
### Fixed
- Empty sasFormat exception
- XSLT : put modality in content and code as attribute

## 1.2.0 [2026-06-18]
### Changed
- spring-boot 3.5.14 -> 4.0.6
Expand Down
26 changes: 19 additions & 7 deletions src/main/java/fr/insee/bpm/metadata/model/Variable.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,15 @@
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;

/**
* Object class to represent a variable.
*
*/
@Getter
@NoArgsConstructor
@Slf4j
public class Variable {

/** Variable name. */
Expand Down Expand Up @@ -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;
}

}
4 changes: 2 additions & 2 deletions src/main/java/fr/insee/bpm/metadata/reader/ddi/DDIReader.java
Original file line number Diff line number Diff line change
Expand Up @@ -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());

}
}
Expand Down
4 changes: 2 additions & 2 deletions src/main/resources/xslt/structured-variables.xsl
Original file line number Diff line number Diff line change
Expand Up @@ -270,8 +270,8 @@
<xsl:variable name="value-id" select="r:CategoryReference/r:ID"/>
<xsl:variable name="value-label" select="$root//g:ResourcePackage/l:CategoryScheme/l:Category[r:ID = $value-id]
/r:Label/r:Content[@xml:lang='fr-FR']"/>
<Value label="{normalize-space($value-label)}">
<xsl:value-of select="r:Value"/>
<Value code="{r:Value}">
<xsl:value-of select="normalize-space($value-label)"/>
</Value>
</xsl:template>

Expand Down
16 changes: 15 additions & 1 deletion src/test/java/fr/insee/bpm/metadata/model/VariableTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
}
Loading