Skip to content

Commit 979b5bf

Browse files
Merge pull request #357 from InseeFr/fixMissingFilterVar
Fix missing filter var
2 parents 46f2d11 + 7b987bc commit 979b5bf

File tree

10 files changed

+41038
-43
lines changed

10 files changed

+41038
-43
lines changed

src/main/java/fr/insee/genesis/controller/rest/QuestionnaireMetadataController.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,7 @@
99
import org.springframework.http.ResponseEntity;
1010
import org.springframework.security.access.prepost.PreAuthorize;
1111
import org.springframework.stereotype.Controller;
12-
import org.springframework.web.bind.annotation.DeleteMapping;
13-
import org.springframework.web.bind.annotation.GetMapping;
14-
import org.springframework.web.bind.annotation.PostMapping;
15-
import org.springframework.web.bind.annotation.RequestBody;
16-
import org.springframework.web.bind.annotation.RequestMapping;
17-
import org.springframework.web.bind.annotation.RequestParam;
12+
import org.springframework.web.bind.annotation.*;
1813

1914
@Controller
2015
@RequestMapping(path = "/questionnaire-metadata")

src/main/java/fr/insee/genesis/controller/rest/responses/ResponseController.java

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import fr.insee.bpm.exceptions.MetadataParserException;
44
import fr.insee.bpm.metadata.model.MetadataModel;
55
import fr.insee.bpm.metadata.model.VariablesMap;
6-
import fr.insee.bpm.metadata.reader.ddi.DDIReader;
6+
import fr.insee.bpm.metadata.reader.ReaderUtils;
77
import fr.insee.bpm.metadata.reader.lunatic.LunaticReader;
88
import fr.insee.genesis.Constants;
99
import fr.insee.genesis.controller.adapter.LunaticXmlAdapter;
@@ -41,22 +41,12 @@
4141
import org.springframework.lang.Nullable;
4242
import org.springframework.security.access.prepost.PreAuthorize;
4343
import org.springframework.stereotype.Controller;
44-
import org.springframework.web.bind.annotation.DeleteMapping;
45-
import org.springframework.web.bind.annotation.GetMapping;
46-
import org.springframework.web.bind.annotation.PostMapping;
47-
import org.springframework.web.bind.annotation.PutMapping;
48-
import org.springframework.web.bind.annotation.RequestBody;
49-
import org.springframework.web.bind.annotation.RequestMapping;
50-
import org.springframework.web.bind.annotation.RequestParam;
44+
import org.springframework.web.bind.annotation.*;
5145
import org.xml.sax.SAXException;
5246

5347
import javax.xml.parsers.ParserConfigurationException;
5448
import javax.xml.stream.XMLStreamException;
55-
import java.io.File;
56-
import java.io.FileInputStream;
57-
import java.io.FileNotFoundException;
58-
import java.io.IOException;
59-
import java.io.InputStream;
49+
import java.io.*;
6050
import java.net.MalformedURLException;
6151
import java.nio.file.Files;
6252
import java.nio.file.Path;
@@ -604,8 +594,9 @@ private static VariablesMap getVariablesMapWithPath(String metadataFilePath) thr
604594
//Parse DDI
605595
log.info("Try to read DDI file : {}", metadataFilePath);
606596
try {
607-
return DDIReader.getMetadataFromDDI(Path.of(metadataFilePath).toFile().toURI().toURL().toString(),
608-
new FileInputStream(metadataFilePath)).getVariables();
597+
InputStream metadataInputStream = new FileInputStream(metadataFilePath);
598+
return ReaderUtils.getMetadataFromDDIAndLunatic(Path.of(metadataFilePath).toFile().toURI().toURL().toString(),
599+
metadataInputStream,metadataInputStream).getVariables();
609600
} catch (MetadataParserException e) {
610601
throw new GenesisException(500, e.getMessage());
611602
} catch (FileNotFoundException fnfe){

src/main/java/fr/insee/genesis/domain/service/metadata/QuestionnaireMetadataService.java

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import fr.insee.bpm.metadata.model.MetadataModel;
55
import fr.insee.bpm.metadata.model.Variable;
66
import fr.insee.bpm.metadata.model.VariableType;
7-
import fr.insee.bpm.metadata.reader.ddi.DDIReader;
7+
import fr.insee.bpm.metadata.reader.ReaderUtils;
88
import fr.insee.bpm.metadata.reader.lunatic.LunaticReader;
99
import fr.insee.genesis.Constants;
1010
import fr.insee.genesis.domain.model.metadata.QuestionnaireMetadataModel;
@@ -20,6 +20,7 @@
2020

2121
import java.io.FileInputStream;
2222
import java.io.IOException;
23+
import java.io.InputStream;
2324
import java.nio.file.Path;
2425
import java.util.List;
2526

@@ -43,17 +44,28 @@ public MetadataModel find(String questionnaireId, Mode mode) throws GenesisExcep
4344
return questionnaireMetadataModels.getFirst().metadataModel();
4445
}
4546

46-
@Override
47-
public MetadataModel loadAndSaveIfNotExists(String campaignName, String questionnaireId, Mode mode, FileUtils fileUtils,
48-
List<GenesisError> errors) throws GenesisException {
49-
List<QuestionnaireMetadataModel> questionnaireMetadataModels =
47+
public MetadataModel loadAndSaveIfNotExists(
48+
String campaignName,
49+
String questionnaireId,
50+
Mode mode,
51+
FileUtils fileUtils,
52+
List<GenesisError> errors
53+
) throws GenesisException {
54+
55+
List<QuestionnaireMetadataModel> storedMetadatas =
5056
questionnaireMetadataPersistancePort.find(questionnaireId.toUpperCase(), mode);
51-
if(questionnaireMetadataModels.isEmpty() || questionnaireMetadataModels.getFirst().metadataModel() == null){
52-
MetadataModel metadataModel = readMetadatas(campaignName, mode.getModeName(), fileUtils, errors);
53-
saveMetadata(questionnaireId.toUpperCase(), mode, metadataModel);
54-
return metadataModel;
57+
58+
if (!storedMetadatas.isEmpty()
59+
&& storedMetadatas.getFirst().metadataModel() != null) {
60+
return storedMetadatas.getFirst().metadataModel();
5561
}
56-
return questionnaireMetadataModels.getFirst().metadataModel();
62+
63+
MetadataModel metadataModel =
64+
readMetadatas(campaignName, mode.getModeName(), fileUtils, errors);
65+
66+
saveMetadata(questionnaireId.toUpperCase(), mode, metadataModel);
67+
68+
return metadataModel;
5769
}
5870

5971
private void saveMetadata(String questionnaireId, Mode mode, MetadataModel metadataModel) {
@@ -119,16 +131,18 @@ private MetadataModel parseMetadata(String metadataFilePath, boolean withDDI) {
119131
try {
120132
log.info("Try to read {} file: {}", withDDI ? "DDI" : "Lunatic", metadataFilePath);
121133
if (withDDI) {
122-
MetadataModel metadataModel = DDIReader.getMetadataFromDDI(
134+
InputStream metadataInputStream = new FileInputStream(metadataFilePath);
135+
MetadataModel metadataModel = ReaderUtils.getMetadataFromDDIAndLunatic(
123136
Path.of(metadataFilePath).toFile().toURI().toURL().toString(),
124-
new FileInputStream(metadataFilePath));
137+
metadataInputStream,metadataInputStream);
125138
// Temporary solution
126139
// the logic of adding variables from lunatic to the ones present in the DDI needs to be implemented in BPM
127140
// (only in Kraftwerk for the moment)
128141
for (String enoVar : Constants.getEnoVariables()){
129142
metadataModel.getVariables().putVariable(new Variable(enoVar, metadataModel.getRootGroup(), VariableType.STRING));
130143
}
131144
return metadataModel;
145+
132146
} else {
133147
return LunaticReader.getMetadataFromLunatic(
134148
new FileInputStream(metadataFilePath));

src/main/java/fr/insee/genesis/infrastructure/utils/FileUtils.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,7 @@
77
import lombok.extern.slf4j.Slf4j;
88
import org.springframework.stereotype.Component;
99

10-
import java.io.BufferedWriter;
11-
import java.io.File;
12-
import java.io.FileWriter;
13-
import java.io.IOException;
14-
import java.io.UncheckedIOException;
10+
import java.io.*;
1511
import java.nio.file.Files;
1612
import java.nio.file.Path;
1713
import java.nio.file.StandardCopyOption;

src/test/java/fr/insee/genesis/controller/adapter/LunaticXmlAdapterTest.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,7 @@
66
import fr.insee.bpm.metadata.model.Variable;
77
import fr.insee.bpm.metadata.model.VariableType;
88
import fr.insee.genesis.Constants;
9-
import fr.insee.genesis.controller.sources.xml.LunaticXmlCollectedData;
10-
import fr.insee.genesis.controller.sources.xml.LunaticXmlData;
11-
import fr.insee.genesis.controller.sources.xml.LunaticXmlOtherData;
12-
import fr.insee.genesis.controller.sources.xml.LunaticXmlSurveyUnit;
13-
import fr.insee.genesis.controller.sources.xml.ValueType;
9+
import fr.insee.genesis.controller.sources.xml.*;
1410
import fr.insee.genesis.domain.model.surveyunit.DataState;
1511
import fr.insee.genesis.domain.model.surveyunit.Mode;
1612
import fr.insee.genesis.domain.model.surveyunit.SurveyUnitModel;

src/test/java/fr/insee/genesis/controller/rest/QuestionnaireMetadataControllerTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ void saveMetadataTest(){
8080
//WHEN
8181
ResponseEntity<Object> response = questionnaireMetadataController.saveMetadata(questionnaireId, mode, metadataModel);
8282

83+
8384
//THEN
8485
Assertions.assertThat(response.getStatusCode().is2xxSuccessful()).isTrue();
8586
Assertions.assertThat(questionnaireMetadataPersistancePortStub.getMongoStub()).hasSize(1);

0 commit comments

Comments
 (0)