Skip to content

Commit 7d70248

Browse files
committed
refactor : optimize metadata readings
1 parent 667885e commit 7d70248

File tree

4 files changed

+7
-40
lines changed

4 files changed

+7
-40
lines changed

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

Lines changed: 3 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -121,8 +121,7 @@ private ResponseEntity<Object> processXmlDataFile(String xmlFile, Mode modeSpeci
121121
@Operation(summary = "Save multiple files to Genesis Database from the campaign root folder")
122122
@PutMapping(path = "/lunatic-xml/save-folder")
123123
public ResponseEntity<Object> saveResponsesFromXmlCampaignFolder(@RequestParam("campaignName") String campaignName,
124-
@RequestParam(value = "mode", required = false) Mode modeSpecified,
125-
@RequestParam(value = "withDDI", defaultValue = "true") boolean withDDI
124+
@RequestParam(value = "mode", required = false) Mode modeSpecified
126125
)throws Exception {
127126
List<GenesisError> errors = new ArrayList<>();
128127
boolean isAnyDataSaved = false;
@@ -132,7 +131,7 @@ public ResponseEntity<Object> saveResponsesFromXmlCampaignFolder(@RequestParam("
132131
List<Mode> modesList = controllerUtils.getModesList(campaignName, modeSpecified);
133132
for (Mode currentMode : modesList) {
134133
try {
135-
processCampaignWithMode(campaignName, currentMode, errors, null, withDDI);
134+
processCampaignWithMode(campaignName, currentMode, errors, null);
136135
isAnyDataSaved = true;
137136
}catch (NoDataException nde){
138137
//Don't stop if NoDataError thrown
@@ -353,43 +352,13 @@ public ResponseEntity<Object> saveEditedVariables(
353352
}
354353

355354
//Utilities
356-
357-
/**
358-
* Checks if DDI is present for a campaign and mode or not and processes it accordingly
359-
* @param campaignName name of campaign
360-
* @param currentMode mode of collected data
361-
* @param errors error list to fill
362-
*/
363-
private void processCampaignWithMode(String campaignName, Mode currentMode, List<GenesisError> errors, String rootDataFolder) throws GenesisException,
364-
SAXException, XMLStreamException, NoDataException {
365-
try {
366-
fileUtils.findFile(String.format(S_S, fileUtils.getSpecFolder(campaignName),currentMode), DDI_REGEX);
367-
//DDI if DDI file found
368-
processCampaignWithMode(campaignName, currentMode, errors, rootDataFolder, true);
369-
}catch (RuntimeException re){
370-
//Lunatic if no DDI
371-
log.info("No DDI File found for {}, {} mode. Will try to use Lunatic...", campaignName,
372-
currentMode.getModeName());
373-
try{
374-
processCampaignWithMode(campaignName, currentMode, errors, rootDataFolder, false);
375-
} catch (IOException | ParserConfigurationException e) {
376-
throw new GenesisException(500, e.toString());
377-
}
378-
}catch (IOException | ParserConfigurationException e){
379-
log.error(e.toString());
380-
throw new GenesisException(500, e.toString());
381-
}
382-
}
383-
384-
385355
/**
386356
* Process a campaign with a specific mode
387357
* @param campaignName name of campaign
388358
* @param mode mode of collected data
389359
* @param errors error list to fill
390-
* @param withDDI true if it uses DDI, false if Lunatic
391360
*/
392-
private void processCampaignWithMode(String campaignName, Mode mode, List<GenesisError> errors, String rootDataFolder, boolean withDDI)
361+
private void processCampaignWithMode(String campaignName, Mode mode, List<GenesisError> errors, String rootDataFolder)
393362
throws IOException, ParserConfigurationException, SAXException, XMLStreamException, NoDataException {
394363
log.info("Try to import data for mode : {}", mode.getModeName());
395364
String dataFolder = rootDataFolder == null ?

src/main/java/fr/insee/genesis/controller/services/MetadataService.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,10 @@ public VariablesMap readMetadatas(String campaignName, String modeName, FileUtil
6363
variablesMap = parseMetadata(ddiFilePath.toString(), true);
6464

6565
} catch (IOException e) {
66-
log.warn("Can't find DDI, trying with lunatic...");
66+
log.warn("No DDI File found for {}, {} mode. Will try to use Lunatic...", campaignName, modeName);
6767
}
68-
if(variablesMap == null){
69-
log.warn("DDI not found or error occurred. Trying Lunatic metadata...");
68+
if(variablesMap == null ){
69+
log.warn("DDI not found or error occurred. Trying Lunatic metadata...for {}, {} mode", campaignName, modeName);
7070
try {
7171
Path lunaticFilePath = fileUtils.findFile(String.format("%s/%s", fileUtils.getSpecFolder(campaignName), modeName), LUNATIC_FILE_PATTERN);
7272
return parseMetadata(lunaticFilePath.toString(), false);

src/test/java/cucumber/functional_tests/MainDefinitions.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ public void get_models(String fileName, String ddiName) throws IOException, Pars
122122

123123
@When("We save data from that directory")
124124
public void get_su_models_from_folder() throws Exception {
125-
responseController.saveResponsesFromXmlCampaignFolder(this.inDirectory.getFileName().toString(), null, true);
125+
responseController.saveResponsesFromXmlCampaignFolder(this.inDirectory.getFileName().toString(), null);
126126
}
127127

128128
@When("We delete that directory")

src/test/java/fr/insee/genesis/controller/rest/responses/ResponseControllerTest.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,6 @@ void saveResponsesFromXmlCampaignFolderTest() throws Exception {
115115
responseControllerStatic.saveResponsesFromXmlCampaignFolder(
116116
"SAMPLETEST-PARADATA-v1"
117117
, Mode.WEB
118-
, true
119118
);
120119

121120
Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub()).isNotEmpty();
@@ -128,7 +127,6 @@ void saveResponsesFromXmlCampaignFolderTest_noData() throws Exception {
128127
responseControllerStatic.saveResponsesFromXmlCampaignFolder(
129128
"TESTNODATA"
130129
, Mode.WEB
131-
, true
132130
);
133131

134132
Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub()).isEmpty();

0 commit comments

Comments
 (0)