Skip to content

Commit c07fdea

Browse files
committed
Add exception management + fix after mongo tests
1 parent e44151b commit c07fdea

File tree

4 files changed

+35
-29
lines changed

4 files changed

+35
-29
lines changed

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

Lines changed: 30 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -234,40 +234,44 @@ public ResponseEntity<Object> processJsonRawData(
234234
@RequestParam("campaignName") String campaignName,
235235
@RequestParam("questionnaireId") String questionnaireId,
236236
@RequestBody List<String> idUEList
237-
) throws GenesisException {
237+
){
238238
log.info("Try to get process raw JSON datas for campaign {} and {} idUEs", campaignName, idUEList.size());
239239

240240
int dataCount = 0;
241241
List<GenesisError> errors = new ArrayList<>();
242242

243-
List<Mode> modesList = controllerUtils.getModesList(campaignName, null);
244-
for(Mode mode: modesList){
245-
//Load and save metadatas into database, throw exception if none
246-
VariablesMap variablesMap = readMetadatas(campaignName, mode, errors, true);
247-
if(variablesMap == null){
248-
throw new GenesisException(400,
249-
"Error during metadata parsing for mode %s :%n%s"
250-
.formatted(mode, errors.getLast().toString())
243+
try {
244+
List<Mode> modesList = controllerUtils.getModesList(campaignName, null);
245+
for (Mode mode : modesList) {
246+
//Load and save metadatas into database, throw exception if none
247+
VariablesMap variablesMap = readMetadatas(campaignName, mode, errors, true);
248+
if (variablesMap == null) {
249+
throw new GenesisException(400,
250+
"Error during metadata parsing for mode %s :%n%s"
251+
.formatted(mode, errors.getLast().getMessage())
252+
);
253+
}
254+
255+
//Save converted data
256+
List<SurveyUnitModel> surveyUnitModels = lunaticJsonRawDataApiPort.parseRawData(
257+
campaignName,
258+
mode,
259+
idUEList,
260+
variablesMap
251261
);
252-
}
262+
surveyUnitService.saveSurveyUnits(surveyUnitModels);
253263

254-
//Save converted data
255-
List<SurveyUnitModel> surveyUnitModels = lunaticJsonRawDataApiPort.parseRawData(
256-
campaignName,
257-
mode,
258-
idUEList,
259-
variablesMap
260-
);
261-
surveyUnitService.saveSurveyUnits(surveyUnitModels);
262-
263-
//Update process dates
264-
lunaticJsonRawDataApiPort.updateProcessDates(surveyUnitModels);
265-
266-
//Save metadatas
267-
variableTypeApiPort.saveMetadatas(campaignName, questionnaireId, mode, variablesMap);
268-
dataCount += surveyUnitModels.size();
264+
//Update process dates
265+
lunaticJsonRawDataApiPort.updateProcessDates(surveyUnitModels);
266+
267+
//Save metadatas
268+
variableTypeApiPort.saveMetadatas(campaignName, questionnaireId, mode, variablesMap);
269+
dataCount += surveyUnitModels.size();
270+
}
271+
return ResponseEntity.ok("%d document(s) processed".formatted(dataCount));
272+
}catch (GenesisException e){ //TODO replace with spring exception handler
273+
return ResponseEntity.status(e.getStatus()).body(e.getMessage());
269274
}
270-
return ResponseEntity.ok("%d document(s) processed".formatted(dataCount));
271275
}
272276

273277

src/main/java/fr/insee/genesis/controller/utils/ControllerUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public ControllerUtils(FileUtils fileUtils) {
2424
public List<Mode> getModesList(String campaign, Mode modeSpecified) throws GenesisException {
2525
// If a mode is specified, we treat only this mode.
2626
// If no mode is specified, we treat all modes in the campaign.
27-
// If no node is specified and no specs are found, we return an error
27+
// If no mode is specified and no specs are found, we return an error
2828
if (modeSpecified != null){
2929
return Collections.singletonList(modeSpecified);
3030
}

src/main/java/fr/insee/genesis/domain/service/rawdata/LunaticJsonRawDataService.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.fasterxml.jackson.databind.DeserializationFeature;
66
import com.fasterxml.jackson.databind.ObjectMapper;
77
import fr.insee.bpm.metadata.model.VariablesMap;
8+
import fr.insee.genesis.Constants;
89
import fr.insee.genesis.controller.dto.rawdata.LunaticJsonRawDataUnprocessedDto;
910
import fr.insee.genesis.domain.model.surveyunit.CollectedVariable;
1011
import fr.insee.genesis.domain.model.surveyunit.DataState;
@@ -96,7 +97,9 @@ public List<SurveyUnitModel> parseRawData(
9697
CollectedVariable collectedVariable = CollectedVariable.collectedVariableBuilder()
9798
.idVar(variableName)
9899
.values(new ArrayList<>())
99-
.idLoop(variablesMap.getVariable(variableName).getGroupName())
100+
.idLoop(variablesMap.getVariable(variableName) == null ?
101+
Constants.ROOT_GROUP_NAME : //TODO What do we do if null ? Exception ?
102+
variablesMap.getVariable(variableName).getGroupName())
100103
.idParent(LoopIdentifier.getRelatedVariableName(variableName, variablesMap))
101104
.build();
102105

src/main/java/fr/insee/genesis/domain/service/variabletype/VariableTypeService.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import org.springframework.beans.factory.annotation.Qualifier;
1111
import org.springframework.stereotype.Service;
1212

13-
import java.util.HashMap;
1413
import java.util.LinkedHashMap;
1514

1615
@Service

0 commit comments

Comments
 (0)