Skip to content

Commit a0b4e75

Browse files
committed
Merge branch 'main' into fixGetCollectionInstrumentsWithReview
2 parents f8c6bab + ec8afda commit a0b4e75

32 files changed

Lines changed: 582 additions & 138 deletions

CHANGELOG.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
11
# Changelog
22

3-
## 2.2.0 [TODO]
3+
## 2.2.0 [2026-02-05]
44
### Added
55
- add isCapturedIndirectly variable to responses
6+
### Changed
7+
- Volumetrics endpoint returns content of file after saving
8+
- Count responses now includes collection instrument id
9+
### Fixed
10+
- Raw data volumetrics with modele filiere
611

12+
### Updated
13+
- BPM 1.0.25
714
## 2.1.3 [2026-02-03]
815
### Fixed
916
- Fixed the way we retrieve the data processing context when we process raw responses

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<modelVersion>4.0.0</modelVersion>
55
<groupId>fr.insee.genesis</groupId>
66
<artifactId>genesis-api</artifactId>
7-
<version>2.1.3</version>
7+
<version>2.2.0</version>
88
<packaging>jar</packaging>
99
<name>genesis-api</name>
1010

@@ -36,7 +36,7 @@
3636
<pitest.version>1.22.1</pitest.version>
3737
<pitest.junit.version>1.2.3</pitest.junit.version>
3838
<jackson.version>2.19.0</jackson.version>
39-
<bpm.version>1.0.24</bpm.version>
39+
<bpm.version>1.0.25</bpm.version>
4040
</properties>
4141
<dependencies>
4242
<dependency>

src/main/java/fr/insee/genesis/Constants.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ public class Constants {
2727
public static final String VOLUMETRY_FOLDER_NAME = "genesis_volumetries";
2828
public static final String VOLUMETRY_FILE_SUFFIX = "_VOLUMETRY";
2929
public static final String VOLUMETRY_RAW_FILE_SUFFIX = "_RAW_VOLUMETRY";
30-
public static final String VOLUMETRY_FILE_DATE_FORMAT = "yyyy_MM_dd";
30+
public static final String VOLUMETRY_RAW_TOTAL = "rawResponsesTotal";
31+
public static final String VOLUMETRY_FILE_DATE_FORMAT = "yyyy_MM_dd_HH_mm_ss";
3132
public static final int VOLUMETRY_FILE_EXPIRATION_DAYS = 30;
3233
public static final int MAX_LINKS_ALLOWED = 21;
3334
public static final String PAIRWISE_PREFIX = "LIEN_";

src/main/java/fr/insee/genesis/controller/rest/UtilsController.java

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package fr.insee.genesis.controller.rest;
22

33
import fr.insee.genesis.domain.ports.api.LunaticJsonRawDataApiPort;
4+
import fr.insee.genesis.domain.ports.api.RawResponseApiPort;
45
import fr.insee.genesis.domain.ports.api.SurveyUnitApiPort;
56
import fr.insee.genesis.domain.service.volumetry.VolumetryLogService;
67
import fr.insee.genesis.domain.utils.XMLSplitter;
78
import fr.insee.genesis.exceptions.GenesisException;
89
import io.swagger.v3.oas.annotations.Operation;
910
import io.swagger.v3.oas.annotations.tags.Tag;
11+
import lombok.AllArgsConstructor;
1012
import lombok.extern.slf4j.Slf4j;
1113
import org.springframework.http.ResponseEntity;
1214
import org.springframework.security.access.prepost.PreAuthorize;
@@ -17,24 +19,20 @@
1719

1820
import javax.xml.stream.XMLStreamException;
1921
import java.io.IOException;
22+
import java.util.HashMap;
23+
import java.util.Map;
2024

2125
@RequestMapping(path = "/")
2226
@Controller
27+
@AllArgsConstructor
2328
@Slf4j
2429
@Tag(name = "Technical services")
2530
public class UtilsController implements CommonApiResponse{
2631

2732
private final VolumetryLogService volumetryLogService;
2833
private final SurveyUnitApiPort surveyUnitService;
2934
private final LunaticJsonRawDataApiPort lunaticJsonRawDataService;
30-
31-
32-
33-
public UtilsController(SurveyUnitApiPort surveyUnitService, VolumetryLogService volumetryLogService, LunaticJsonRawDataApiPort lunaticJsonRawDataService) {
34-
this.surveyUnitService = surveyUnitService;
35-
this.volumetryLogService = volumetryLogService;
36-
this.lunaticJsonRawDataService = lunaticJsonRawDataService;
37-
}
35+
private final RawResponseApiPort rawResponseApiPort;
3836

3937

4038

@@ -54,9 +52,17 @@ public ResponseEntity<Object> saveResponsesFromXmlFile(@RequestParam("inputFolde
5452
@PutMapping(path = "/volumetrics/save-all-campaigns")
5553
@PreAuthorize("hasRole('SCHEDULER')")
5654
public ResponseEntity<Object> saveVolumetry() throws IOException {
57-
volumetryLogService.writeVolumetries(surveyUnitService);
58-
volumetryLogService.writeRawDataVolumetries(lunaticJsonRawDataService);
55+
String responsesKeyInReturnedMap = "responsesVolumetrics";
56+
String rawResponsesKeyInReturnedMap = "rawResponsesVolumetrics";
57+
Map<String, Object> volumetricsMap = new HashMap<>();
58+
volumetricsMap.put(
59+
responsesKeyInReturnedMap,
60+
volumetryLogService.writeVolumetries(surveyUnitService));
61+
volumetricsMap.put(
62+
rawResponsesKeyInReturnedMap,
63+
volumetryLogService.writeRawDataVolumetries(lunaticJsonRawDataService, rawResponseApiPort)
64+
);
5965
volumetryLogService.cleanOldFiles();
60-
return ResponseEntity.ok("Volumetric saved");
66+
return ResponseEntity.ok(volumetricsMap);
6167
}
6268
}

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,15 @@ public ResponseEntity<List<InterrogationId>> getAllInterrogationIdsByQuestionnai
5050
//========= OPTIMISATIONS PERFS (START) ==========
5151
/**
5252
* @author Adrien Marchal
53+
* @author Alexis Szmundy
5354
*/
54-
@Operation(summary = "Retrieve number of interrogations for a given questionnaire")
55+
@Operation(summary = "Retrieve number of interrogations for a given questionnaire/collection instrument")
5556
@GetMapping(path = "/by-questionnaire/{questionnaireId}/count")
56-
public ResponseEntity<Long> countAllInterrogationIdsByQuestionnaire(
57-
@Parameter(description = "questionnaireId", required = true) @PathVariable("questionnaireId") String questionnaireId
57+
public ResponseEntity<Long> countAllInterrogationIdsByQuestionnaireOrCollectionInstrument(
58+
@Parameter(description = "questionnaireId/collectionInstrumentId", required = true) @PathVariable("questionnaireId") String questionnaireId
5859
) {
59-
Long response = surveyUnitService.countInterrogationIdsByQuestionnaireId(questionnaireId);
60+
long response = surveyUnitService.countResponsesByQuestionnaireId(questionnaireId);
61+
response += surveyUnitService.countResponsesByCollectionInstrumentId(questionnaireId);
6062
return ResponseEntity.ok(response);
6163
}
6264

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,10 @@ public QuestionnaireController(
3737

3838

3939

40-
@Operation(summary = "List questionnaires from responses database")
40+
@Operation(summary = "List questionnaires/collection instruments from responses database")
4141
@GetMapping(path = "/")
4242
public ResponseEntity<Set<String>> getQuestionnaires() {
43-
Set<String> questionnaires = surveyUnitService.findDistinctQuestionnaireIds();
43+
Set<String> questionnaires = surveyUnitService.findDistinctQuestionnairesAndCollectionInstrumentIds();
4444
return ResponseEntity.ok(questionnaires);
4545
}
4646

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
@@ -27,7 +27,7 @@ public interface LunaticJsonRawDataApiPort {
2727
Set<String> getUnprocessedDataQuestionnaireIds();
2828
void updateProcessDates(List<SurveyUnitModel> surveyUnitModels);
2929
Set<String> findDistinctQuestionnaireIds();
30-
long countResponsesByQuestionnaireId(String campaignId);
30+
long countRawResponsesByQuestionnaireId(String campaignId);
3131
Page<LunaticJsonRawDataModel> findRawDataByCampaignIdAndDate(String campaignId, Instant startDt, Instant endDt, Pageable pageable);
3232

3333
List<LunaticJsonRawDataModel> getRawDataByInterrogationId(String interrogationId);

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
import java.time.Instant;
1414
import java.util.List;
15+
import java.util.Set;
1516

1617
public interface RawResponseApiPort {
1718

@@ -23,6 +24,10 @@ public interface RawResponseApiPort {
2324
List<String> getUnprocessedCollectionInstrumentIds();
2425
void updateProcessDates(List<SurveyUnitModel> surveyUnitModels);
2526
Page<RawResponseModel> findRawResponseDataByCampaignIdAndDate(String campaignId, Instant startDate, Instant endDate, Pageable pageable);
27+
28+
long countByCollectionInstrumentId(String collectionInstrumentId);
29+
30+
Set<String> getDistinctCollectionInstrumentIds();
2631
Page<RawResponseModel> findRawResponseDataByCollectionInstrumentId(String collectionInstrumentId, Pageable pageable);
2732

2833
}

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

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public interface SurveyUnitApiPort {
3838
List<InterrogationId> findDistinctInterrogationIdsByQuestionnaireIdAndDateAfter(String questionnaireId, LocalDateTime since);
3939

4040
//========= OPTIMISATIONS PERFS (START) ==========
41-
long countInterrogationIdsByQuestionnaireId(String questionnaireId);
41+
long countResponsesByCollectionInstrumentId(String questionnaireId);
4242

4343
List<InterrogationId> findDistinctPageableInterrogationIdsByQuestionnaireId(String questionnaireId,
4444
long totalSize, long blockSize, long page);
@@ -67,11 +67,13 @@ List<InterrogationId> findDistinctPageableInterrogationIdsByQuestionnaireId(Stri
6767
Set<String> findQuestionnaireIdsByCampaignIdV2(String campaignId);
6868
//========= OPTIMISATIONS PERFS (END) ==========
6969

70+
@Deprecated
7071
Set<String> findDistinctCampaignIds();
7172

73+
@Deprecated
7274
long countResponsesByCampaignId(String campaignId);
7375

74-
Set<String> findDistinctQuestionnaireIds();
76+
Set<String> findDistinctQuestionnairesAndCollectionInstrumentIds();
7577

7678
List<CampaignWithQuestionnaire> findCampaignsWithQuestionnaires();
7779

@@ -84,4 +86,6 @@ List<SurveyUnitModel> parseEditedVariables(SurveyUnitInputDto surveyUnitInputDto
8486
String findQuestionnaireIdByInterrogationId(String interrogationId) throws GenesisException;
8587

8688
Set<String> findCampaignIdsFrom(SurveyUnitInputDto dto);
89+
90+
long countResponsesByQuestionnaireId(String questionnaireId);
8791
}

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
@@ -24,7 +24,7 @@ public interface LunaticJsonRawDataPersistencePort {
2424
Set<String> findDistinctQuestionnaireIdsByNullProcessDate();
2525
Set<Mode> findModesByQuestionnaire(String questionnaireId);
2626
Page<LunaticJsonRawDataModel> findByCampaignIdAndDate(String campaignId, Instant startDt, Instant endDt, Pageable pageable);
27-
long countResponsesByQuestionnaireId(String questionnaireId);
27+
long countRawResponsesByQuestionnaireId(String questionnaireId);
2828
List<GroupedInterrogation> findProcessedIdsGroupedByQuestionnaireSince(LocalDateTime since);
2929
List<GroupedInterrogation> findUnprocessedIds();
3030
Set<String> findUnprocessedInterrogationIdsByCollectionInstrumentId(String collectionInstrumentId);

0 commit comments

Comments
 (0)