Skip to content

Commit 9ffcb6c

Browse files
committed
Revert "feat(responses): get responses by list of ids"
This reverts commit a6e2669.
1 parent a6e2669 commit 9ffcb6c

9 files changed

Lines changed: 29 additions & 359 deletions

File tree

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,7 @@ public ResponseEntity<Object> findResponsesByInterrogationAndCollectionInstrumen
286286
@PreAuthorize("hasRole('ADMIN')")
287287
public ResponseEntity<List<SurveyUnitModel>> getLatestByInterrogationAndCollectionInstrument(@RequestParam("interrogationId") String interrogationId,
288288
@RequestParam("collectionInstrumentId") String collectionInstrumentId) {
289-
List<SurveyUnitModel> responses = surveyUnitService.findLatestByInterrogationIdAndCollectionInstrumentId(interrogationId, collectionInstrumentId);
289+
List<SurveyUnitModel> responses = surveyUnitService.findLatestByIdAndByCollectionInstrumentId(interrogationId, collectionInstrumentId);
290290
return ResponseEntity.ok(responses);
291291
}
292292

@@ -300,7 +300,7 @@ public ResponseEntity<List<SurveyUnitModel>> getLatestByInterrogationAndCollecti
300300
public ResponseEntity<SurveyUnitSimplifiedDto> getLatestByInterrogationOneObject(@RequestParam("interrogationId") String interrogationId,
301301
@RequestParam("collectionInstrumentId") String collectionInstrumentId,
302302
@RequestParam("mode") Mode mode) {
303-
List<SurveyUnitModel> responses = surveyUnitService.findLatestByInterrogationIdAndCollectionInstrumentId(interrogationId, collectionInstrumentId);
303+
List<SurveyUnitModel> responses = surveyUnitService.findLatestByIdAndByCollectionInstrumentId(interrogationId, collectionInstrumentId);
304304
List<VariableModel> outputVariables = new ArrayList<>();
305305
List<VariableModel> outputExternalVariables = new ArrayList<>();
306306
RawResponseDto.QuestionnaireStateEnum questionnaireState = null;
@@ -365,7 +365,7 @@ public ResponseEntity<List<SurveyUnitSimplifiedDto>> getLatestForInterrogationLi
365365
List<SurveyUnitSimplifiedDto> results = new ArrayList<>();
366366
List<Mode> modes = surveyUnitService.findModesByCollectionInstrumentId(collectionInstrumentId);
367367
interrogationIds.forEach(interrogationId -> {
368-
List<SurveyUnitModel> responses = surveyUnitService.findLatestByInterrogationIdAndCollectionInstrumentId(
368+
List<SurveyUnitModel> responses = surveyUnitService.findLatestByIdAndByCollectionInstrumentId(
369369
interrogationId.getInterrogationId(), collectionInstrumentId
370370
);
371371
modes.forEach(mode -> {

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

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,7 @@ public interface SurveyUnitApiPort {
2626

2727
List<SurveyUnitModel> findByInterrogationId(String interrogationId);
2828

29-
List<SurveyUnitModel> findLatestByInterrogationIdAndCollectionInstrumentId(String interrogationId, String collectionInstrumentId);
30-
List<SurveyUnitModel> findLatestByInterrogationIds(
31-
String collectionInstrumentOrQuestionnaireId,
32-
Set<String> interrogationIds
33-
);
29+
List<SurveyUnitModel> findLatestByIdAndByCollectionInstrumentId(String interrogationId, String collectionInstrumentId);
3430

3531
SurveyUnitSimplifiedDto findSimplified(
3632
String collectionInstrumentId,

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@ public interface SurveyUnitPersistencePort {
1717

1818
List<SurveyUnitModel> findByUsualSurveyUnitAndCollectionInstrumentIds(String usualSurveyUnitId, String collectionInstrumentId);
1919

20+
//========= OPTIMISATIONS PERFS (START) ==========
2021
/**
2122
* @author Adrien Marchal
2223
*/
23-
List<SurveyUnitModel> findByQuestionnaireIdAndModeAndInterrogationIds(String questionnaireId, String mode, List<String> interrogationIdSet);
24-
25-
List<SurveyUnitModel> findByCollectionInstrumentOrQuestionnaireIdAndInterrogationIds(String collectionInstrumentOrQuestionnaireId, List<String> interrogationIdSet);
24+
List<SurveyUnitModel> findBySetOfIdsAndQuestionnaireIdAndMode(String questionnaireId, String mode, List<String> interrogationIdSet);
25+
//========= OPTIMISATIONS PERFS (START) ==========
2626

2727
List<SurveyUnitModel> findByInterrogationId(String interrogationId);
2828

src/main/java/fr/insee/genesis/domain/service/surveyunit/SurveyUnitService.java

Lines changed: 7 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -88,32 +88,9 @@ public List<SurveyUnitModel> findByInterrogationId(String interrogationId) {
8888
* @return the latest update for each variable of a survey unit
8989
*/
9090
@Override
91-
public List<SurveyUnitModel> findLatestByInterrogationIdAndCollectionInstrumentId(String interrogationId, String collectionInstrumentId) {
91+
public List<SurveyUnitModel> findLatestByIdAndByCollectionInstrumentId(String interrogationId, String collectionInstrumentId) {
92+
List<SurveyUnitModel> latestUpdatesbyVariables = new ArrayList<>();
9293
List<SurveyUnitModel> surveyUnitModels = surveyUnitPersistencePort.findByIds(interrogationId, collectionInstrumentId);
93-
return getLatestSurveyUnitModels(surveyUnitModels);
94-
}
95-
96-
/**
97-
* @param collectionInstrumentOrQuestionnaireId : Collection instrument id/questionnaire id
98-
* @param interrogationIdSet : Interrogation ids
99-
* @return the latest updates for given interrogationIds
100-
*/
101-
@Override
102-
public List<SurveyUnitModel> findLatestByInterrogationIds(
103-
String collectionInstrumentOrQuestionnaireId,
104-
Set<String> interrogationIdSet
105-
) {
106-
List<SurveyUnitModel> surveyUnitModels = surveyUnitPersistencePort.findByCollectionInstrumentOrQuestionnaireIdAndInterrogationIds(
107-
collectionInstrumentOrQuestionnaireId,
108-
interrogationIdSet.stream().toList()
109-
);
110-
111-
return getLatestSurveyUnitModels(surveyUnitModels);
112-
}
113-
114-
private List<SurveyUnitModel> getLatestSurveyUnitModels(List<SurveyUnitModel> surveyUnitModels) {
115-
List<SurveyUnitModel> latestUpdatesByVariables = new ArrayList<>();
116-
11794
List<Mode> modes = getDistinctsModes(surveyUnitModels);
11895
modes.forEach(mode ->{
11996
List<SurveyUnitModel> suByMode = surveyUnitModels.stream()
@@ -122,7 +99,7 @@ private List<SurveyUnitModel> getLatestSurveyUnitModels(List<SurveyUnitModel> su
12299
.toList();
123100

124101
//We had all the variables of the oldest update
125-
latestUpdatesByVariables.add(suByMode.getFirst());
102+
latestUpdatesbyVariables.add(suByMode.getFirst());
126103
//We keep the name of already added variables to skip them in older updates
127104
Set<VarIdScopeTuple> addedVariables = new HashSet<>();
128105
SurveyUnitModel latestUpdate = suByMode.getFirst();
@@ -175,11 +152,11 @@ private List<SurveyUnitModel> getLatestSurveyUnitModels(List<SurveyUnitModel> su
175152
if (!collectedVariablesToKeep.isEmpty() || !externalVariablesToKeep.isEmpty()){
176153
surveyUnitModel.setCollectedVariables(collectedVariablesToKeep);
177154
surveyUnitModel.setExternalVariables(externalVariablesToKeep);
178-
latestUpdatesByVariables.add(surveyUnitModel);
155+
latestUpdatesbyVariables.add(surveyUnitModel);
179156
}
180157
});
181158
});
182-
return latestUpdatesByVariables;
159+
return latestUpdatesbyVariables;
183160
}
184161

185162
private void addDataStateIntoList(List<VariableModel> variableModelList, DataState state){
@@ -220,7 +197,7 @@ public SurveyUnitSimplifiedDto findSimplified(
220197
String interrogationId,
221198
Mode mode,
222199
Instant recordedBefore) throws NoDataException {
223-
List<SurveyUnitModel> responses = findLatestByInterrogationIdAndCollectionInstrumentId(interrogationId, collectionInstrumentId);
200+
List<SurveyUnitModel> responses = findLatestByIdAndByCollectionInstrumentId(interrogationId, collectionInstrumentId);
224201

225202
if(responses.isEmpty()){
226203
String errorMessage = "No response found for interrogation %s".formatted(interrogationId);
@@ -317,7 +294,7 @@ public List<List<SurveyUnitModel>> findLatestByIdAndByQuestionnaireIdAndModeOrde
317294
List<String> queryInParam = interrogationIds.stream().map(InterrogationId::getInterrogationId).toList();
318295

319296
//Get !!!all versions!!! of a set of "interrogationIds"
320-
List<SurveyUnitModel> allResponsesVersionsSet = surveyUnitPersistencePort.findByQuestionnaireIdAndModeAndInterrogationIds(questionnaireId, mode, queryInParam);
297+
List<SurveyUnitModel> allResponsesVersionsSet = surveyUnitPersistencePort.findBySetOfIdsAndQuestionnaireIdAndMode(questionnaireId, mode, queryInParam);
321298

322299
//2) FILTER BY interrogationId AND ORDER BY DATE (MOST RECENT FIRST, oldest last)
323300
interrogationIds.forEach(interrogationId -> {

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

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -73,24 +73,12 @@ public List<SurveyUnitModel> findByUsualSurveyUnitAndCollectionInstrumentIds(Str
7373
* @author Adrien Marchal
7474
*/
7575
@Override
76-
public List<SurveyUnitModel> findByQuestionnaireIdAndModeAndInterrogationIds(String questionnaireId, String mode, List<String> interrogationIdSet) {
76+
public List<SurveyUnitModel> findBySetOfIdsAndQuestionnaireIdAndMode(String questionnaireId, String mode, List<String> interrogationIdSet) {
7777
List<SurveyUnitDocument> surveyUnits = mongoRepository.findBySetOfIdsAndQuestionnaireIdAndMode(questionnaireId, mode, interrogationIdSet);
7878
return surveyUnits.isEmpty() ? Collections.emptyList() : SurveyUnitDocumentMapper.INSTANCE.listDocumentToListModel(surveyUnits);
7979
}
8080
//========= OPTIMISATIONS PERFS (END) ==========
8181

82-
@Override
83-
public List<SurveyUnitModel> findByCollectionInstrumentOrQuestionnaireIdAndInterrogationIds(
84-
String collectionInstrumentOrQuestionnaireId, List<String> interrogationIds
85-
) {
86-
List<SurveyUnitDocument> surveyUnits = new ArrayList<>();
87-
88-
surveyUnits.addAll(mongoRepository.findByQuestionnaireIdAndInterrogationIds(collectionInstrumentOrQuestionnaireId, interrogationIds));
89-
surveyUnits.addAll(mongoRepository.findByCollectionInstrumentIdAndInterrogationIds(collectionInstrumentOrQuestionnaireId, interrogationIds));
90-
91-
return surveyUnits.isEmpty() ? Collections.emptyList() : SurveyUnitDocumentMapper.INSTANCE.listDocumentToListModel(surveyUnits);
92-
}
93-
9482
@Override
9583
public List<SurveyUnitModel> findByInterrogationId(String interrogationId) {
9684
List<SurveyUnitDocument> surveyUnits = mongoRepository.findByInterrogationId(interrogationId);

src/main/java/fr/insee/genesis/infrastructure/repository/SurveyUnitMongoDBRepository.java

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -30,25 +30,9 @@ public interface SurveyUnitMongoDBRepository extends MongoRepository<SurveyUnitD
3030
* @author Adrien Marchal
3131
*/
3232
@Query("{ 'questionnaireId' : ?0, 'mode' : ?1, 'interrogationId' : { $in: ?2 } }")
33-
List<SurveyUnitDocument> findBySetOfIdsAndQuestionnaireIdAndMode(
34-
String questionnaireId,
35-
String mode,
36-
List<String> interrogationIds
37-
);
33+
List<SurveyUnitDocument> findBySetOfIdsAndQuestionnaireIdAndMode(String questionnaireId, String mode, List<String> interrogationIdSet);
3834
//========= OPTIMISATIONS PERFS (END) ==========
3935

40-
@Query("{ 'questionnaireId' : ?0, 'interrogationId' : { $in: ?2 } }")
41-
List<SurveyUnitDocument> findByQuestionnaireIdAndInterrogationIds(
42-
String questionnaireId,
43-
List<String> interrogationIds
44-
);
45-
@Query("{ 'collectionInstrumentId' : ?0, 'interrogationId' : { $in: ?2 } }")
46-
List<SurveyUnitDocument> findByCollectionInstrumentIdAndInterrogationIds(
47-
String collectionInstrumentId,
48-
List<String> interrogationIds
49-
);
50-
51-
5236
@Query(value = "{ 'questionnaireId' : ?0 }", fields = "{ 'interrogationId' : 1, 'mode' : 1 }")
5337
List<SurveyUnitDocument> findInterrogationIdsByQuestionnaireId(String questionnaireId);
5438

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,7 @@ class GetLatestByInterrogationAndCollectionInstrumentTests {
278278
@DisplayName("Should return 200 with list of models")
279279
void getLatest_shouldReturn200() throws Exception {
280280
// GIVEN
281-
when(surveyUnitApiPort.findLatestByInterrogationIdAndCollectionInstrumentId("INTERRO01", "QUEST01"))
281+
when(surveyUnitApiPort.findLatestByIdAndByCollectionInstrumentId("INTERRO01", "QUEST01"))
282282
.thenReturn(List.of());
283283

284284
// WHEN / THEN
@@ -298,7 +298,7 @@ class GetLatestByInterrogationOneObjectTests {
298298
void getLatestOneObject_shouldReturn200AndAggregateVariables() throws Exception {
299299
// GIVEN
300300
SurveyUnitModel model = buildSurveyUnitModel("INTERRO01", "QUEST01", Mode.WEB, DataState.COLLECTED);
301-
when(surveyUnitApiPort.findLatestByInterrogationIdAndCollectionInstrumentId("INTERRO01", "QUEST01"))
301+
when(surveyUnitApiPort.findLatestByIdAndByCollectionInstrumentId("INTERRO01", "QUEST01"))
302302
.thenReturn(List.of(model));
303303

304304
// WHEN / THEN
@@ -316,7 +316,7 @@ void getLatestOneObject_shouldFilterByMode() throws Exception {
316316
// GIVEN
317317
SurveyUnitModel webModel = buildSurveyUnitModel("INTERRO01", "QUEST01", Mode.WEB, DataState.COLLECTED);
318318
SurveyUnitModel paperModel = buildSurveyUnitModel("INTERRO01", "QUEST01", Mode.PAPER, DataState.COLLECTED);
319-
when(surveyUnitApiPort.findLatestByInterrogationIdAndCollectionInstrumentId("INTERRO01", "QUEST01"))
319+
when(surveyUnitApiPort.findLatestByIdAndByCollectionInstrumentId("INTERRO01", "QUEST01"))
320320
.thenReturn(List.of(webModel, paperModel));
321321

322322
// WHEN / THEN
@@ -374,7 +374,7 @@ void getLatestList_shouldReturn200() throws Exception {
374374
SurveyUnitModel model = buildSurveyUnitModel("INTERRO01", "QUEST01", Mode.WEB, DataState.COLLECTED);
375375
when(surveyUnitApiPort.findModesByCollectionInstrumentId("QUEST01"))
376376
.thenReturn(List.of(Mode.WEB));
377-
when(surveyUnitApiPort.findLatestByInterrogationIdAndCollectionInstrumentId("INTERRO01", "QUEST01"))
377+
when(surveyUnitApiPort.findLatestByIdAndByCollectionInstrumentId("INTERRO01", "QUEST01"))
378378
.thenReturn(List.of(model));
379379

380380
// WHEN / THEN
@@ -399,7 +399,7 @@ void getLatestList_noVariables_shouldReturnEmptyList() throws Exception {
399399
.build();
400400
when(surveyUnitApiPort.findModesByCollectionInstrumentId("QUEST01"))
401401
.thenReturn(List.of(Mode.WEB));
402-
when(surveyUnitApiPort.findLatestByInterrogationIdAndCollectionInstrumentId("INTERRO01", "QUEST01"))
402+
when(surveyUnitApiPort.findLatestByIdAndByCollectionInstrumentId("INTERRO01", "QUEST01"))
403403
.thenReturn(List.of(modelNoVars));
404404

405405
// WHEN / THEN

0 commit comments

Comments
 (0)