Skip to content

Commit 5f41077

Browse files
committed
refactor: collectionInstrumentId + process raw data
1 parent f855dca commit 5f41077

File tree

9 files changed

+45
-40
lines changed

9 files changed

+45
-40
lines changed

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -182,14 +182,14 @@ public ResponseEntity<String> processJsonRawData(
182182
}
183183

184184
@Operation(summary = "Process raw data of a questionnaire")
185-
@PostMapping(path = "/lunatic-json/{questionnaireId}/process")
185+
@PostMapping(path = "/{collectionInstrumentId}/process")
186186
@PreAuthorize("hasRole('SCHEDULER')")
187187
public ResponseEntity<String> processJsonRawData(
188-
@PathVariable String questionnaireId
188+
@PathVariable String collectionInstrumentId
189189
) {
190-
log.info("Try to process raw JSON datas for questionnaire {}",questionnaireId);
190+
log.info("Try to process raw JSON datas for questionnaire {}",collectionInstrumentId);
191191
try {
192-
DataProcessResult result = lunaticJsonRawDataApiPort.processRawData(questionnaireId);
192+
DataProcessResult result = lunaticJsonRawDataApiPort.processRawData(collectionInstrumentId);
193193
return result.formattedDataCount() == 0 ?
194194
ResponseEntity.ok("%d document(s) processed".formatted(result.dataCount()))
195195
: ResponseEntity.ok("%d document(s) processed, including %d FORMATTED after data verification"

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -466,7 +466,7 @@ private void processCampaignWithMode(String campaignName, Mode mode, String root
466466
}
467467

468468
//Create context if not exist
469-
if(contextService.getContextByPartitionId(campaignName) == null){
469+
if(contextService.getContextByCollectionInstrumentId(campaignName) == null){
470470
contextService.saveContext(campaignName, false);
471471
}
472472

src/main/java/fr/insee/genesis/domain/ports/api/DataProcessingContextApiPort.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ void saveKraftwerkExecutionSchedule(String partitionId,
3131
long countSchedules();
3232

3333
DataProcessingContextModel getContext(String interrogationId) throws GenesisException;
34-
DataProcessingContextModel getContextByPartitionId(String partitionId) throws GenesisException;
34+
DataProcessingContextModel getContextByCollectionInstrumentId(String partitionId) throws GenesisException;
3535
List<String> getPartitionIds(boolean withReview);
3636

3737
/**

src/main/java/fr/insee/genesis/domain/ports/api/LunaticJsonRawDataApiPort.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public interface LunaticJsonRawDataApiPort {
3131
@Deprecated(since = "1.13.0")
3232
DataProcessResult processRawData(String campaignName, List<String> interrogationIdList, List<GenesisError> errors) throws GenesisException;
3333

34-
DataProcessResult processRawData(String questionnaireId) throws GenesisException;
34+
DataProcessResult processRawData(String collectionInstrumentId) throws GenesisException;
3535

3636
Map<String, List<String>> findProcessedIdsgroupedByQuestionnaireSince(LocalDateTime since);
3737
}

src/main/java/fr/insee/genesis/domain/ports/spi/LunaticJsonRawDataPersistencePort.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,5 @@ public interface LunaticJsonRawDataPersistencePort {
2222
long countResponsesByQuestionnaireId(String questionnaireId);
2323
List<GroupedInterrogation> findProcessedIdsGroupedByQuestionnaireSince(LocalDateTime since);
2424
List<GroupedInterrogation> findUnprocessedIds();
25-
Set<String> findUnprocessedInterrogationIdsByQuestionnaire(String questionnaireId);
25+
Set<String> findUnprocessedInterrogationIdsByCollectionInstrumentId(String collectionInstrumentId);
2626
}

src/main/java/fr/insee/genesis/domain/service/context/DataProcessingContextService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ public DataProcessingContextModel getContext(String interrogationId) throws Gene
168168
}
169169

170170
@Override
171-
public DataProcessingContextModel getContextByPartitionId(String partitionId){
171+
public DataProcessingContextModel getContextByCollectionInstrumentId(String partitionId){
172172
return DataProcessingContextMapper.INSTANCE.documentToModel(
173173
dataProcessingContextPersistancePort.findByPartitionId(partitionId)
174174
);

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

Lines changed: 32 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -105,18 +105,11 @@ public DataProcessResult processRawData(String campaignName, List<String> interr
105105
int dataCount=0;
106106
int formattedDataCount=0;
107107
DataProcessingContextModel dataProcessingContext =
108-
dataProcessingContextService.getContextByPartitionId(campaignName);
108+
dataProcessingContextService.getContextByCollectionInstrumentId(campaignName);
109109
List<Mode> modesList = controllerUtils.getModesList(campaignName, null);
110110
for (Mode mode : modesList) {
111111
//Load and save metadata into database, throw exception if none
112-
VariablesMap variablesMap = metadataService.loadAndSaveIfNotExists(campaignName, campaignName, mode, fileUtils,
113-
errors).getVariables();
114-
if (variablesMap == null) {
115-
throw new GenesisException(400,
116-
"Error during metadata parsing for mode %s :%n%s"
117-
.formatted(mode, errors.getLast().getMessage())
118-
);
119-
}
112+
VariablesMap variablesMap = getVariablesMap(campaignName, mode, errors);
120113
int totalBatchs = Math.ceilDiv(interrogationIdList.size() , config.getRawDataProcessingBatchSize());
121114
int batchNumber = 1;
122115
List<String> interrogationIdListForMode = new ArrayList<>(interrogationIdList);
@@ -165,36 +158,28 @@ public DataProcessResult processRawData(String questionnaireId) throws GenesisEx
165158
int dataCount=0;
166159
int formattedDataCount=0;
167160
DataProcessingContextModel dataProcessingContext =
168-
dataProcessingContextService.getContextByPartitionId(questionnaireId);
161+
dataProcessingContextService.getContextByCollectionInstrumentId(questionnaireId);
169162
List<GenesisError> errors = new ArrayList<>();
170163

171164
List<Mode> modesList = controllerUtils.getModesList(questionnaireId, null);
172165
for (Mode mode : modesList) {
173166
//Load and save metadata into database, throw exception if none
174-
VariablesMap variablesMap = metadataService.loadAndSaveIfNotExists(questionnaireId, questionnaireId, mode, fileUtils,
175-
errors).getVariables();
176-
if (variablesMap == null) {
177-
throw new GenesisException(400,
178-
"Error during metadata parsing for mode %s :%n%s"
179-
.formatted(mode, errors.getLast().getMessage())
180-
);
181-
}
167+
VariablesMap variablesMap = getVariablesMap(questionnaireId, mode, errors);
182168
Set<String> interrogationIds =
183-
lunaticJsonRawDataPersistencePort.findUnprocessedInterrogationIdsByQuestionnaire(questionnaireId);
184-
169+
lunaticJsonRawDataPersistencePort.findUnprocessedInterrogationIdsByCollectionInstrumentId(questionnaireId);
185170

186171
int totalBatchs = Math.ceilDiv(interrogationIds.size() , config.getRawDataProcessingBatchSize());
187172
int batchNumber = 1;
188173
List<String> interrogationIdListForMode = new ArrayList<>(interrogationIds);
189174
while(!interrogationIdListForMode.isEmpty()){
190175
log.info("Processing raw data batch {}/{}", batchNumber, totalBatchs);
191-
int maxIndex = Math.min(interrogationIdListForMode.size(), config.getRawDataProcessingBatchSize());
192-
List<String> interrogationIdToProcess = interrogationIdListForMode.subList(0, maxIndex);
193176

194-
List<LunaticJsonRawDataModel> rawData = getRawData(questionnaireId, mode, interrogationIdToProcess);
195-
196-
List<SurveyUnitModel> surveyUnitModels = convertRawData(
197-
rawData,
177+
int maxIndex = Math.min(interrogationIdListForMode.size(), config.getRawDataProcessingBatchSize());
178+
List<SurveyUnitModel> surveyUnitModels = getConvertedSurveyUnits(
179+
questionnaireId,
180+
mode,
181+
interrogationIdListForMode,
182+
maxIndex,
198183
variablesMap
199184
);
200185

@@ -219,13 +204,33 @@ public DataProcessResult processRawData(String questionnaireId) throws GenesisEx
219204

220205
//Remove processed ids from list
221206
interrogationIdListForMode = interrogationIdListForMode.subList(maxIndex, interrogationIdListForMode.size());
222-
223207
batchNumber++;
224208
}
225209
}
226210
return new DataProcessResult(dataCount, formattedDataCount, errors);
227211
}
228212

213+
private VariablesMap getVariablesMap(String questionnaireId, Mode mode, List<GenesisError> errors) throws GenesisException {
214+
VariablesMap variablesMap = metadataService.loadAndSaveIfNotExists(questionnaireId, questionnaireId, mode, fileUtils,
215+
errors).getVariables();
216+
if (variablesMap == null) {
217+
throw new GenesisException(400,
218+
"Error during metadata parsing for mode %s :%n%s"
219+
.formatted(mode, errors.getLast().getMessage())
220+
);
221+
}
222+
return variablesMap;
223+
}
224+
225+
private List<SurveyUnitModel> getConvertedSurveyUnits(String questionnaireId, Mode mode, List<String> interrogationIdListForMode, int maxIndex, VariablesMap variablesMap) {
226+
List<String> interrogationIdToProcess = interrogationIdListForMode.subList(0, maxIndex);
227+
List<LunaticJsonRawDataModel> rawData = getRawData(questionnaireId, mode, interrogationIdToProcess);
228+
return convertRawData(
229+
rawData,
230+
variablesMap
231+
);
232+
}
233+
229234
private void sendProcessedIdsToQualityTool(List<SurveyUnitModel> surveyUnitModels) {
230235
try {
231236
ResponseEntity<Object> response =

src/main/java/fr/insee/genesis/infrastructure/adapter/LunaticJsonRawDataMongoAdapter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,10 +98,10 @@ public List<GroupedInterrogation> findUnprocessedIds() {
9898
}
9999

100100
@Override
101-
public Set<String> findUnprocessedInterrogationIdsByQuestionnaire(String questionnaireId) {
101+
public Set<String> findUnprocessedInterrogationIdsByCollectionInstrumentId(String collectionInstrumentId) {
102102
Set<String> interrogationIds = new HashSet<>();
103103

104-
repository.aggregateRawGroupedWithNullProcessDate(questionnaireId).forEach(
104+
repository.aggregateRawGroupedWithNullProcessDate(collectionInstrumentId).forEach(
105105
groupedInterrogationDocument -> interrogationIds.addAll(groupedInterrogationDocument.getInterrogationIds())
106106
);
107107

src/test/java/fr/insee/genesis/stubs/LunaticJsonRawDataPersistanceStub.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,11 +177,11 @@ public List<GroupedInterrogation> findUnprocessedIds() {
177177
}
178178

179179
@Override
180-
public Set<String> findUnprocessedInterrogationIdsByQuestionnaire(String questionnaireId) {
180+
public Set<String> findUnprocessedInterrogationIdsByCollectionInstrumentId(String collectionInstrumentId) {
181181
List<LunaticJsonRawDataDocument> unprocessedDocuments =
182182
mongoStub.stream().filter(
183183
lunaticJsonDataDocument -> lunaticJsonDataDocument.processDate() == null
184-
&& lunaticJsonDataDocument.questionnaireId().equals(questionnaireId)
184+
&& lunaticJsonDataDocument.questionnaireId().equals(collectionInstrumentId)
185185
).toList();
186186
Set<String> interrogationIds = new HashSet<>();
187187
unprocessedDocuments.forEach(doc -> interrogationIds.add(doc.interrogationId()));

0 commit comments

Comments
 (0)