Skip to content

Commit 1479d16

Browse files
committed
apply some refacto
1 parent cbca6cd commit 1479d16

File tree

4 files changed

+30
-109
lines changed

4 files changed

+30
-109
lines changed

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

Lines changed: 5 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,8 @@ 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+
return ReaderUtils.getMetadataFromDDIAndLunatic(Path.of(metadataFilePath).toFile().toURI().toURL().toString(),
598+
new FileInputStream(metadataFilePath),metadataFilePath).getVariables();
609599
} catch (MetadataParserException e) {
610600
throw new GenesisException(500, e.getMessage());
611601
} catch (FileNotFoundException fnfe){

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

Lines changed: 4 additions & 39 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.model.VariablesMap;
7+
import fr.insee.bpm.metadata.reader.ReaderUtils;
88
import fr.insee.bpm.metadata.reader.ddi.DDIReader;
99
import fr.insee.bpm.metadata.reader.lunatic.LunaticReader;
1010
import fr.insee.genesis.Constants;
@@ -21,12 +21,9 @@
2121

2222
import java.io.FileInputStream;
2323
import java.io.IOException;
24-
import java.io.InputStream;
2524
import java.nio.file.Path;
2625
import java.util.List;
2726

28-
import static fr.insee.bpm.metadata.reader.lunatic.LunaticUtils.addLunaticVariable;
29-
3027
@Service
3128
@AllArgsConstructor
3229
@Slf4j
@@ -60,45 +57,12 @@ public MetadataModel loadAndSaveIfNotExists(String campaignName, String question
6057
} else {
6158
metadataModel = questionnaireMetadataModels.getFirst().metadataModel();
6259
}
63-
String metadataFilePath = fileUtils.getSpecFolder(questionnaireId);
64-
addMissingAndFilterVariables(metadataModel, metadataFilePath);
6560

6661
saveMetadata(questionnaireId.toUpperCase(), mode, metadataModel);
6762

6863
return metadataModel;
6964
}
7065

71-
private void addMissingAndFilterVariables(MetadataModel metadataModel, String metadataFilePath) {
72-
VariablesMap variablesMap = metadataModel.getVariables();
73-
74-
try (InputStream lunaticStream = new FileInputStream(metadataFilePath);
75-
InputStream lunaticStream2 = new FileInputStream(metadataFilePath)) {
76-
77-
List<String> missingVars = LunaticReader.getMissingVariablesFromLunatic(lunaticStream);
78-
List<String> filterVars = LunaticReader.getFilterResultFromLunatic(lunaticStream2);
79-
80-
for (String var : missingVars) {
81-
String missingVarName = var + Constants.MISSING_SUFFIX;
82-
if (!variablesMap.hasVariable(missingVarName)) {
83-
addLunaticVariable(metadataModel, var, Constants.MISSING_SUFFIX, VariableType.STRING);
84-
}
85-
}
86-
87-
for (String var : filterVars) {
88-
String filterVarName = Constants.FILTER_RESULT_PREFIX + var;
89-
if (!variablesMap.hasVariable(filterVarName)) {
90-
addLunaticVariable(metadataModel, var, Constants.FILTER_RESULT_PREFIX, VariableType.BOOLEAN);
91-
}
92-
}
93-
94-
} catch (IOException e) {
95-
log.error("Erreur lecture fichier Lunatic : {}", metadataFilePath, e);
96-
}
97-
}
98-
99-
100-
101-
10266
private void saveMetadata(String questionnaireId, Mode mode, MetadataModel metadataModel) {
10367
questionnaireMetadataPersistancePort.save(
10468
new QuestionnaireMetadataModel(
@@ -162,16 +126,17 @@ private MetadataModel parseMetadata(String metadataFilePath, boolean withDDI) {
162126
try {
163127
log.info("Try to read {} file: {}", withDDI ? "DDI" : "Lunatic", metadataFilePath);
164128
if (withDDI) {
165-
MetadataModel metadataModel = DDIReader.getMetadataFromDDI(
129+
MetadataModel metadataModel = ReaderUtils.getMetadataFromDDIAndLunatic(
166130
Path.of(metadataFilePath).toFile().toURI().toURL().toString(),
167-
new FileInputStream(metadataFilePath));
131+
new FileInputStream(metadataFilePath),metadataFilePath);
168132
// Temporary solution
169133
// the logic of adding variables from lunatic to the ones present in the DDI needs to be implemented in BPM
170134
// (only in Kraftwerk for the moment)
171135
for (String enoVar : Constants.getEnoVariables()){
172136
metadataModel.getVariables().putVariable(new Variable(enoVar, metadataModel.getRootGroup(), VariableType.STRING));
173137
}
174138
return metadataModel;
139+
175140
} else {
176141
return LunaticReader.getMetadataFromLunatic(
177142
new FileInputStream(metadataFilePath));

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

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import fr.insee.bpm.metadata.model.MetadataModel;
44
import fr.insee.bpm.metadata.model.Variable;
55
import fr.insee.bpm.metadata.model.VariableType;
6+
import fr.insee.bpm.metadata.model.VariablesMap;
67
import fr.insee.genesis.domain.model.surveyunit.Mode;
78
import fr.insee.genesis.domain.service.metadata.QuestionnaireMetadataService;
89
import fr.insee.genesis.infrastructure.document.metadata.QuestionnaireMetadataDocument;
@@ -80,6 +81,26 @@ void saveMetadataTest(){
8081
//WHEN
8182
ResponseEntity<Object> response = questionnaireMetadataController.saveMetadata(questionnaireId, mode, metadataModel);
8283

84+
VariablesMap vars =
85+
questionnaireMetadataPersistancePortStub
86+
.getMongoStub()
87+
.getFirst()
88+
.metadataModel()
89+
.getVariables();
90+
91+
Assertions.assertThat(vars.hasVariable(variableName)).isTrue();
92+
93+
boolean hasMissing = vars.getVariables().keySet().stream()
94+
.anyMatch(name -> name.endsWith("_MISSING"));
95+
Assertions.assertThat(hasMissing).isTrue();
96+
97+
boolean hasFilter = vars.getVariables().keySet().stream()
98+
.anyMatch(name -> name.startsWith("FILTER_RESULT_"));
99+
Assertions.assertThat(hasFilter).isTrue();
100+
101+
System.out.println("Variables dans le MetadataModel : " + vars.getVariables().keySet());
102+
103+
83104
//THEN
84105
Assertions.assertThat(response.getStatusCode().is2xxSuccessful()).isTrue();
85106
Assertions.assertThat(questionnaireMetadataPersistancePortStub.getMongoStub()).hasSize(1);

src/test/java/fr/insee/genesis/domain/service/metadata/QuestionnaireMetadataServiceTest.java

Lines changed: 0 additions & 55 deletions
This file was deleted.

0 commit comments

Comments
 (0)