From f89d1261c977ac5ae8379c8de85d4d78f611c060 Mon Sep 17 00:00:00 2001 From: Hajar El Moukh Date: Mon, 22 Dec 2025 17:36:04 +0100 Subject: [PATCH 01/10] get RawResponseData + LunaticJsonRawData by InterrogationId --- .../rest/CombinedRawDataController.java | 41 +++++++ .../surveyunit/rawdata/CombinedRawData.java | 7 ++ .../ports/api/LunaticJsonRawDataApiPort.java | 2 + .../domain/ports/api/RawResponseApiPort.java | 1 + .../LunaticJsonRawDataPersistencePort.java | 1 + .../ports/spi/RawResponsePersistencePort.java | 1 + .../QuestionnaireMetadataService.java | 2 +- .../rawdata/CombinedRawDataService.java | 35 ++++++ .../rawdata/LunaticJsonRawDataService.java | 5 + .../service/rawdata/RawResponseService.java | 5 + .../LunaticJsonRawDataMongoAdapter.java | 6 +- .../adapter/RawResponseMongoAdapter.java | 6 ++ .../LunaticJsonMongoDBRepository.java | 4 + .../repository/RawResponseRepository.java | 2 + .../functional_tests/RawDataDefinitions.java | 5 + .../responses/RawResponseControllerTest.java | 5 + .../rawdata/CombinedRawDataServiceTest.java | 100 ++++++++++++++++++ .../LunaticJsonRawDataServiceTest.java | 41 +++++++ .../LunaticJsonMongoDBRepositoryStub.java | 11 ++ .../LunaticJsonRawDataPersistanceStub.java | 8 ++ 20 files changed, 286 insertions(+), 2 deletions(-) create mode 100644 src/main/java/fr/insee/genesis/controller/rest/CombinedRawDataController.java create mode 100644 src/main/java/fr/insee/genesis/domain/model/surveyunit/rawdata/CombinedRawData.java create mode 100644 src/main/java/fr/insee/genesis/domain/service/rawdata/CombinedRawDataService.java create mode 100644 src/test/java/fr/insee/genesis/domain/service/rawdata/CombinedRawDataServiceTest.java diff --git a/src/main/java/fr/insee/genesis/controller/rest/CombinedRawDataController.java b/src/main/java/fr/insee/genesis/controller/rest/CombinedRawDataController.java new file mode 100644 index 00000000..2db15c1c --- /dev/null +++ b/src/main/java/fr/insee/genesis/controller/rest/CombinedRawDataController.java @@ -0,0 +1,41 @@ +package fr.insee.genesis.controller.rest; + +import fr.insee.genesis.domain.model.surveyunit.rawdata.CombinedRawData; +import fr.insee.genesis.domain.service.rawdata.CombinedRawDataService; +import fr.insee.genesis.exceptions.GenesisException; +import io.swagger.v3.oas.annotations.Operation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; + +@Slf4j +@Controller +@RequestMapping(path = "/combined-raw-data" ) +public class CombinedRawDataController { + + private static final String INTERROGATION_ID = "interrogationId"; + private final CombinedRawDataService combinedRawDataService; + + public CombinedRawDataController(CombinedRawDataService combinedRawDataService) { + this.combinedRawDataService = combinedRawDataService; + } + + @Operation(summary = "Retrieve combined raw responses and Lunatic raw data for a given interrogationId") + @GetMapping + @PreAuthorize("hasAnyRole('ADMIN', 'USER_PLATINE')") + public ResponseEntity getCombinetRawData( + @RequestParam(INTERROGATION_ID) String interrogationId + ){CombinedRawData data = combinedRawDataService.getCombinedRawDataByInterrogationId(interrogationId); + + if (data.rawResponses().isEmpty()) { + return ResponseEntity.notFound().build(); + } + + return ResponseEntity.ok(data); + } + + } diff --git a/src/main/java/fr/insee/genesis/domain/model/surveyunit/rawdata/CombinedRawData.java b/src/main/java/fr/insee/genesis/domain/model/surveyunit/rawdata/CombinedRawData.java new file mode 100644 index 00000000..06014427 --- /dev/null +++ b/src/main/java/fr/insee/genesis/domain/model/surveyunit/rawdata/CombinedRawData.java @@ -0,0 +1,7 @@ +package fr.insee.genesis.domain.model.surveyunit.rawdata; + +import java.util.List; + +public record CombinedRawData(List rawResponses, + List lunaticRawData) { +} diff --git a/src/main/java/fr/insee/genesis/domain/ports/api/LunaticJsonRawDataApiPort.java b/src/main/java/fr/insee/genesis/domain/ports/api/LunaticJsonRawDataApiPort.java index e8bad50c..d928a00e 100644 --- a/src/main/java/fr/insee/genesis/domain/ports/api/LunaticJsonRawDataApiPort.java +++ b/src/main/java/fr/insee/genesis/domain/ports/api/LunaticJsonRawDataApiPort.java @@ -28,6 +28,8 @@ public interface LunaticJsonRawDataApiPort { long countResponsesByQuestionnaireId(String campaignId); Page findRawDataByCampaignIdAndDate(String campaignId, Instant startDt, Instant endDt, Pageable pageable); + List getRawDataByInterrogationId(String interrogationId); + @Deprecated(since = "1.13.0") DataProcessResult processRawData(String campaignName, List interrogationIdList, List errors) throws GenesisException; diff --git a/src/main/java/fr/insee/genesis/domain/ports/api/RawResponseApiPort.java b/src/main/java/fr/insee/genesis/domain/ports/api/RawResponseApiPort.java index d17a1141..191c52c7 100644 --- a/src/main/java/fr/insee/genesis/domain/ports/api/RawResponseApiPort.java +++ b/src/main/java/fr/insee/genesis/domain/ports/api/RawResponseApiPort.java @@ -13,6 +13,7 @@ public interface RawResponseApiPort { List getRawResponses(String collectionInstrumentId, Mode mode, List interrogationIdList); + List getRawResponsesByInterrogationID(String interrogationId); DataProcessResult processRawResponses(String collectionInstrumentId, List interrogationIdList, List errors) throws GenesisException; DataProcessResult processRawResponses(String collectionInstrumentId) throws GenesisException; List convertRawResponse(List rawResponses, VariablesMap variablesMap); diff --git a/src/main/java/fr/insee/genesis/domain/ports/spi/LunaticJsonRawDataPersistencePort.java b/src/main/java/fr/insee/genesis/domain/ports/spi/LunaticJsonRawDataPersistencePort.java index 399fefde..2ca6a82a 100644 --- a/src/main/java/fr/insee/genesis/domain/ports/spi/LunaticJsonRawDataPersistencePort.java +++ b/src/main/java/fr/insee/genesis/domain/ports/spi/LunaticJsonRawDataPersistencePort.java @@ -15,6 +15,7 @@ public interface LunaticJsonRawDataPersistencePort { void save(LunaticJsonRawDataModel rawData); List findRawData(String campaignName, Mode mode, List interrogationIdList); + List findRawDataByInterrogationID(String interrogationId); List getAllUnprocessedData(); void updateProcessDates(String campaignId, Set interrogationIds); Set findDistinctQuestionnaireIds(); diff --git a/src/main/java/fr/insee/genesis/domain/ports/spi/RawResponsePersistencePort.java b/src/main/java/fr/insee/genesis/domain/ports/spi/RawResponsePersistencePort.java index 640bd9b3..ff03bbf2 100644 --- a/src/main/java/fr/insee/genesis/domain/ports/spi/RawResponsePersistencePort.java +++ b/src/main/java/fr/insee/genesis/domain/ports/spi/RawResponsePersistencePort.java @@ -9,6 +9,7 @@ public interface RawResponsePersistencePort { List findRawResponses(String collectionInstrumentId, Mode mode, List interrogationIdList); + List findRawResponsesByInterrogationID(String interrogationId); void updateProcessDates(String collectionInstrumentId, Set interrogationIds); List getUnprocessedCollectionIds(); Set findUnprocessedInterrogationIdsByCollectionInstrumentId(String collectionInstrumentId); diff --git a/src/main/java/fr/insee/genesis/domain/service/metadata/QuestionnaireMetadataService.java b/src/main/java/fr/insee/genesis/domain/service/metadata/QuestionnaireMetadataService.java index 0b1ee957..2dce670e 100644 --- a/src/main/java/fr/insee/genesis/domain/service/metadata/QuestionnaireMetadataService.java +++ b/src/main/java/fr/insee/genesis/domain/service/metadata/QuestionnaireMetadataService.java @@ -58,7 +58,7 @@ public MetadataModel loadAndSaveIfNotExists(String campaignName, String collecti MetadataModel metadataModel = readMetadatas(campaignName, mode.getModeName(), fileUtils, errors); - saveMetadata(questionnaireId.toUpperCase(), mode, metadataModel); + saveMetadata(collectionInstrumentId.toUpperCase(), mode, metadataModel); return metadataModel; } diff --git a/src/main/java/fr/insee/genesis/domain/service/rawdata/CombinedRawDataService.java b/src/main/java/fr/insee/genesis/domain/service/rawdata/CombinedRawDataService.java new file mode 100644 index 00000000..691d75d8 --- /dev/null +++ b/src/main/java/fr/insee/genesis/domain/service/rawdata/CombinedRawDataService.java @@ -0,0 +1,35 @@ +package fr.insee.genesis.domain.service.rawdata; + +import fr.insee.genesis.domain.model.surveyunit.rawdata.CombinedRawData; +import fr.insee.genesis.domain.model.surveyunit.rawdata.LunaticJsonRawDataModel; +import fr.insee.genesis.domain.model.surveyunit.rawdata.RawResponse; +import fr.insee.genesis.domain.ports.spi.LunaticJsonRawDataPersistencePort; +import fr.insee.genesis.domain.ports.spi.RawResponsePersistencePort; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@Slf4j +public class CombinedRawDataService { + + @Qualifier("lunaticJsonMongoAdapterNew") + private final LunaticJsonRawDataPersistencePort lunaticJsonRawDataPersistencePort; + @Qualifier("rawResponseMongoAdapter") + private final RawResponsePersistencePort rawResponsePersistencePort; + + public CombinedRawDataService(LunaticJsonRawDataPersistencePort lunaticJsonRawDataPersistencePort, RawResponsePersistencePort rawResponsePersistencePort) { + this.lunaticJsonRawDataPersistencePort = lunaticJsonRawDataPersistencePort; + this.rawResponsePersistencePort = rawResponsePersistencePort; + } + + public CombinedRawData getCombinedRawDataByInterrogationId(String interrogationId) { + List rawResponses = rawResponsePersistencePort.findRawResponsesByInterrogationID(interrogationId); + List lunaticRawData = lunaticJsonRawDataPersistencePort.findRawDataByInterrogationID(interrogationId); + + return new CombinedRawData(rawResponses, lunaticRawData); + } + +} diff --git a/src/main/java/fr/insee/genesis/domain/service/rawdata/LunaticJsonRawDataService.java b/src/main/java/fr/insee/genesis/domain/service/rawdata/LunaticJsonRawDataService.java index efb17ff4..09c9e1ea 100644 --- a/src/main/java/fr/insee/genesis/domain/service/rawdata/LunaticJsonRawDataService.java +++ b/src/main/java/fr/insee/genesis/domain/service/rawdata/LunaticJsonRawDataService.java @@ -99,6 +99,11 @@ public List getRawData(String campaignName, Mode mode, return lunaticJsonRawDataPersistencePort.findRawData(campaignName, mode, interrogationIdList); } + @Override + public List getRawDataByInterrogationId(String interrogationId) { + return lunaticJsonRawDataPersistencePort.findRawDataByInterrogationID(interrogationId); + } + @Override @Deprecated(since = "1.13.0") public DataProcessResult processRawData(String campaignName, List interrogationIdList, List errors) throws GenesisException { diff --git a/src/main/java/fr/insee/genesis/domain/service/rawdata/RawResponseService.java b/src/main/java/fr/insee/genesis/domain/service/rawdata/RawResponseService.java index 6f343237..acf221e0 100644 --- a/src/main/java/fr/insee/genesis/domain/service/rawdata/RawResponseService.java +++ b/src/main/java/fr/insee/genesis/domain/service/rawdata/RawResponseService.java @@ -71,6 +71,11 @@ public List getRawResponses(String collectionInstrumentId, Mode mod return rawResponsePersistencePort.findRawResponses(collectionInstrumentId,mode,interrogationIdList); } + @Override + public List getRawResponsesByInterrogationID(String interrogationId) { + return rawResponsePersistencePort.findRawResponsesByInterrogationID(interrogationId); + } + @Override public DataProcessResult processRawResponses(String collectionInstrumentId, List interrogationIdList, List errors) throws GenesisException { int dataCount=0; diff --git a/src/main/java/fr/insee/genesis/infrastructure/adapter/LunaticJsonRawDataMongoAdapter.java b/src/main/java/fr/insee/genesis/infrastructure/adapter/LunaticJsonRawDataMongoAdapter.java index 78ca2568..4fa525f3 100644 --- a/src/main/java/fr/insee/genesis/infrastructure/adapter/LunaticJsonRawDataMongoAdapter.java +++ b/src/main/java/fr/insee/genesis/infrastructure/adapter/LunaticJsonRawDataMongoAdapter.java @@ -6,7 +6,6 @@ import fr.insee.genesis.domain.model.surveyunit.rawdata.LunaticJsonRawDataModel; import fr.insee.genesis.domain.ports.spi.LunaticJsonRawDataPersistencePort; import fr.insee.genesis.infrastructure.document.rawdata.LunaticJsonRawDataDocument; -import fr.insee.genesis.infrastructure.document.surveyunit.GroupedInterrogationDocument; import fr.insee.genesis.infrastructure.mappers.GroupedInterrogationDocumentMapper; import fr.insee.genesis.infrastructure.mappers.LunaticJsonRawDataDocumentMapper; import fr.insee.genesis.infrastructure.repository.LunaticJsonMongoDBRepository; @@ -55,6 +54,11 @@ public List findRawData(String campaignName, Mode mode, List rawDataDocs = repository.findModesByCampaignIdAndByModeAndinterrogationIdIninterrogationIdList(campaignName, mode, interrogationIdList);return LunaticJsonRawDataDocumentMapper.INSTANCE.listDocumentToListModel(rawDataDocs); } + @Override + public List findRawDataByInterrogationID(String interrogationId) { + return repository.findByInterrogationId(interrogationId); + } + @Override public void updateProcessDates(String campaignId, Set interrogationIds) { mongoTemplate.updateMulti( diff --git a/src/main/java/fr/insee/genesis/infrastructure/adapter/RawResponseMongoAdapter.java b/src/main/java/fr/insee/genesis/infrastructure/adapter/RawResponseMongoAdapter.java index 77f2d29d..aad41c2e 100644 --- a/src/main/java/fr/insee/genesis/infrastructure/adapter/RawResponseMongoAdapter.java +++ b/src/main/java/fr/insee/genesis/infrastructure/adapter/RawResponseMongoAdapter.java @@ -39,6 +39,12 @@ public List findRawResponses(String collectionInstrumentId, Mode mo return RawResponseDocumentMapper.INSTANCE.listDocumentToListModel(rawDataDocs); } + @Override + public List findRawResponsesByInterrogationID(String interrogationId) { + List rawResponseDocumentList = repository.findByInterrogationId(interrogationId); + return RawResponseDocumentMapper.INSTANCE.listDocumentToListModel(rawResponseDocumentList); + } + @Override public void updateProcessDates(String collectionInstrumentId, Set interrogationIds) { mongoTemplate.updateMulti( diff --git a/src/main/java/fr/insee/genesis/infrastructure/repository/LunaticJsonMongoDBRepository.java b/src/main/java/fr/insee/genesis/infrastructure/repository/LunaticJsonMongoDBRepository.java index 58486bae..1374d31a 100644 --- a/src/main/java/fr/insee/genesis/infrastructure/repository/LunaticJsonMongoDBRepository.java +++ b/src/main/java/fr/insee/genesis/infrastructure/repository/LunaticJsonMongoDBRepository.java @@ -1,6 +1,7 @@ package fr.insee.genesis.infrastructure.repository; import fr.insee.genesis.domain.model.surveyunit.Mode; +import fr.insee.genesis.domain.model.surveyunit.rawdata.LunaticJsonRawDataModel; import fr.insee.genesis.infrastructure.document.rawdata.LunaticJsonRawDataDocument; import fr.insee.genesis.infrastructure.document.surveyunit.GroupedInterrogationDocument; import org.springframework.data.mongodb.repository.Aggregation; @@ -26,6 +27,9 @@ public interface LunaticJsonMongoDBRepository extends MongoRepository findModesByCampaignIdAndByModeAndinterrogationIdIninterrogationIdList(String campaignName, Mode mode, List interrogationIdList); + @Query(value = "{ 'interrogationId': ?0}") + List findByInterrogationId(String interrogationId); + Page findByCampaignIdAndRecordDateBetween(String campagneId, Instant start, Instant end, Pageable pageable); long countByQuestionnaireId(String questionnaireId); @Aggregation(pipeline = { diff --git a/src/main/java/fr/insee/genesis/infrastructure/repository/RawResponseRepository.java b/src/main/java/fr/insee/genesis/infrastructure/repository/RawResponseRepository.java index e09e9fd7..4dd548e4 100644 --- a/src/main/java/fr/insee/genesis/infrastructure/repository/RawResponseRepository.java +++ b/src/main/java/fr/insee/genesis/infrastructure/repository/RawResponseRepository.java @@ -26,4 +26,6 @@ public interface RawResponseRepository extends MongoRepository findInterrogationIdByCollectionInstrumentIdAndProcessDateIsNull(String collectionInstrumentId); + @Query(value = "{ 'interrogationId': ?0}") + List findByInterrogationId(String interrogationId); } diff --git a/src/test/java/cucumber/functional_tests/RawDataDefinitions.java b/src/test/java/cucumber/functional_tests/RawDataDefinitions.java index c2005dba..2dd40bc6 100644 --- a/src/test/java/cucumber/functional_tests/RawDataDefinitions.java +++ b/src/test/java/cucumber/functional_tests/RawDataDefinitions.java @@ -110,6 +110,11 @@ public List getRawResponses(String questionnaireModelId, Mode mode, return List.of(); } + @Override + public List getRawResponsesByInterrogationID(String interrogationId) { + return List.of(); + } + @Override public DataProcessResult processRawResponses(String questionnaireId, List interrogationIdList, List errors) throws GenesisException { return null; diff --git a/src/test/java/fr/insee/genesis/controller/rest/responses/RawResponseControllerTest.java b/src/test/java/fr/insee/genesis/controller/rest/responses/RawResponseControllerTest.java index cca7fa34..93f5d990 100644 --- a/src/test/java/fr/insee/genesis/controller/rest/responses/RawResponseControllerTest.java +++ b/src/test/java/fr/insee/genesis/controller/rest/responses/RawResponseControllerTest.java @@ -83,6 +83,11 @@ public List getRawResponses(String questionnaireModelId, Mode mode, return List.of(); } + @Override + public List getRawResponsesByInterrogationID(String interrogationId) { + return List.of(); + } + @Override public DataProcessResult processRawResponses(String questionnaireId, List interrogationIdList, List errors) throws GenesisException { return null; diff --git a/src/test/java/fr/insee/genesis/domain/service/rawdata/CombinedRawDataServiceTest.java b/src/test/java/fr/insee/genesis/domain/service/rawdata/CombinedRawDataServiceTest.java new file mode 100644 index 00000000..11dc29b6 --- /dev/null +++ b/src/test/java/fr/insee/genesis/domain/service/rawdata/CombinedRawDataServiceTest.java @@ -0,0 +1,100 @@ +package fr.insee.genesis.domain.service.rawdata; + +import fr.insee.genesis.domain.model.surveyunit.Mode; +import fr.insee.genesis.domain.model.surveyunit.rawdata.CombinedRawData; +import fr.insee.genesis.domain.model.surveyunit.rawdata.LunaticJsonRawDataModel; +import fr.insee.genesis.domain.model.surveyunit.rawdata.RawResponse; +import fr.insee.genesis.domain.ports.spi.LunaticJsonRawDataPersistencePort; +import fr.insee.genesis.domain.ports.spi.RawResponsePersistencePort; +import org.assertj.core.api.Assertions; +import org.bson.types.ObjectId; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; + +@ExtendWith(MockitoExtension.class) +class CombinedRawDataServiceTest { + + @Mock + LunaticJsonRawDataPersistencePort lunaticJsonRawDataPersistencePort; + + @Mock + RawResponsePersistencePort rawResponsePersistencePort; + + @InjectMocks + CombinedRawDataService combinedRawDataService; + + @Test + void getCombinedRawDataByInterrogationId_shouldReturnCombinedData() { + // GIVEN + String interrogationId = "INTERROGATION_1"; + + // Mock des RawResponses + RawResponse response1 = new RawResponse( + new ObjectId(), + interrogationId, + "COLLECTION_1", + Mode.WEB, + Map.of("question1", "answer1"), + LocalDateTime.now(), + null + ); + + RawResponse response2 = new RawResponse( + new ObjectId(), + interrogationId, + "COLLECTION_1", + Mode.WEB, + Map.of("question2", "answer2"), + LocalDateTime.now(), + null + ); + + List rawResponses = List.of(response1, response2); + + // Mock des LunaticJsonRawData + LunaticJsonRawDataModel lunatic1 = LunaticJsonRawDataModel.builder() + .campaignId("CAMPAIGN") + .questionnaireId("QUESTIONNAIRE") + .interrogationId(interrogationId) + .data(Map.of("key", "value")) + .mode(Mode.WEB) + .build(); + List lunaticRawData = List.of(lunatic1); + + // WHEN + Mockito.when(rawResponsePersistencePort.findRawResponsesByInterrogationID(interrogationId)) + .thenReturn(rawResponses); + + Mockito.when(lunaticJsonRawDataPersistencePort.findRawDataByInterrogationID(interrogationId)) + .thenReturn(lunaticRawData); + + CombinedRawData result = combinedRawDataService.getCombinedRawDataByInterrogationId(interrogationId); + + // THEN - assertions + Assertions.assertThat(result.rawResponses()).hasSize(2).containsExactlyInAnyOrderElementsOf(rawResponses); + Assertions.assertThat(result.lunaticRawData()).hasSize(1).containsExactlyInAnyOrderElementsOf(lunaticRawData); + } + + @Test + void getCombinedRawData_shouldHandleEmptyLists() { + String interrogationId = "INTERROGATION_EMPTY"; + + Mockito.when(rawResponsePersistencePort.findRawResponsesByInterrogationID(interrogationId)) + .thenReturn(List.of()); + Mockito.when(lunaticJsonRawDataPersistencePort.findRawDataByInterrogationID(interrogationId)) + .thenReturn(List.of()); + CombinedRawData result = combinedRawDataService.getCombinedRawDataByInterrogationId(interrogationId); + + Assertions.assertThat(result.rawResponses()).isEmpty(); + Assertions.assertThat(result.lunaticRawData()).isEmpty(); + } + +} diff --git a/src/test/java/fr/insee/genesis/domain/service/rawdata/LunaticJsonRawDataServiceTest.java b/src/test/java/fr/insee/genesis/domain/service/rawdata/LunaticJsonRawDataServiceTest.java index 7f41b15b..8b87a9c9 100644 --- a/src/test/java/fr/insee/genesis/domain/service/rawdata/LunaticJsonRawDataServiceTest.java +++ b/src/test/java/fr/insee/genesis/domain/service/rawdata/LunaticJsonRawDataServiceTest.java @@ -379,6 +379,47 @@ void convertRawData_if_external_not_present_test() throws Exception { Assertions.assertThat(suModels.getFirst().getExternalVariables()).isEmpty(); } + + @Test + void getRawDataByInterrogationId_shouldReturnOnlyMatchingData() { + // GIVEN + lunaticJsonRawDataPersistanceStub.getMongoStub().clear(); + + String InterrogationId = "INTERROGATION_1"; + String secondInterrogationId = "INTERROGATION_2"; + + LunaticJsonRawDataModel rawData1 = LunaticJsonRawDataModel.builder() + .campaignId("CAMPAIGN") + .questionnaireId("QUESTIONNAIRE") + .interrogationId(InterrogationId) + .data(Map.of("key", "value1")) + .mode(Mode.WEB) + .build(); + + LunaticJsonRawDataModel rawData2 = LunaticJsonRawDataModel.builder() + .campaignId("CAMPAIGN") + .questionnaireId("QUESTIONNAIRE") + .interrogationId(secondInterrogationId) + .data(Map.of("key", "value2")) + .mode(Mode.WEB) + .build(); + + lunaticJsonRawDataService.save(rawData1); + lunaticJsonRawDataService.save(rawData2); + + // WHEN + List result = + lunaticJsonRawDataService.getRawDataByInterrogationId(InterrogationId); + + // THEN + Assertions.assertThat(result) + .hasSize(1) + .allMatch(data -> InterrogationId.equals(data.interrogationId())); + + Assertions.assertThat(result.getFirst().data()) + .containsEntry("key", "value1"); + } + @Test void convertRawData_should_not_throw_exception_if_collected_not_present() throws Exception { //GIVEN diff --git a/src/test/java/fr/insee/genesis/stubs/LunaticJsonMongoDBRepositoryStub.java b/src/test/java/fr/insee/genesis/stubs/LunaticJsonMongoDBRepositoryStub.java index 7a0017a1..3541a1fe 100644 --- a/src/test/java/fr/insee/genesis/stubs/LunaticJsonMongoDBRepositoryStub.java +++ b/src/test/java/fr/insee/genesis/stubs/LunaticJsonMongoDBRepositoryStub.java @@ -1,8 +1,10 @@ package fr.insee.genesis.stubs; import fr.insee.genesis.domain.model.surveyunit.Mode; +import fr.insee.genesis.domain.model.surveyunit.rawdata.LunaticJsonRawDataModel; import fr.insee.genesis.infrastructure.document.rawdata.LunaticJsonRawDataDocument; import fr.insee.genesis.infrastructure.document.surveyunit.GroupedInterrogationDocument; +import fr.insee.genesis.infrastructure.mappers.LunaticJsonRawDataDocumentMapper; import fr.insee.genesis.infrastructure.repository.LunaticJsonMongoDBRepository; import lombok.Getter; import org.springframework.data.domain.Example; @@ -56,6 +58,15 @@ public List findModesByCampaignIdAndByModeAndinterro .toList(); } + @Override + public List findByInterrogationId(String interrogationId) { + return LunaticJsonRawDataDocumentMapper.INSTANCE.listDocumentToListModel( + documents.stream() + .filter(doc -> Objects.equals(doc.interrogationId(), interrogationId)) + .toList() + ); + } + @Override public Page findByCampaignIdAndRecordDateBetween(String campagneId, Instant start, Instant end, Pageable pageable){ return Page.empty(pageable); diff --git a/src/test/java/fr/insee/genesis/stubs/LunaticJsonRawDataPersistanceStub.java b/src/test/java/fr/insee/genesis/stubs/LunaticJsonRawDataPersistanceStub.java index c7244925..d00e7040 100644 --- a/src/test/java/fr/insee/genesis/stubs/LunaticJsonRawDataPersistanceStub.java +++ b/src/test/java/fr/insee/genesis/stubs/LunaticJsonRawDataPersistanceStub.java @@ -52,6 +52,14 @@ public List findRawData(String campaignName, Mode mode, return LunaticJsonRawDataDocumentMapper.INSTANCE.listDocumentToListModel(docs); } + @Override + public List findRawDataByInterrogationID(String interrogationId) { + List docs = mongoStub.stream() + .filter(doc -> interrogationId.equals(doc.interrogationId())) + .toList(); + + return LunaticJsonRawDataDocumentMapper.INSTANCE.listDocumentToListModel(docs); + } @Override public void updateProcessDates(String campaignId, Set interrogationIds) { From b850c95374d07ae885e6731e3da4c3720550e8a6 Mon Sep 17 00:00:00 2001 From: Hajarel-moukh Date: Tue, 23 Dec 2025 11:13:00 +0100 Subject: [PATCH 02/10] add some modifications --- .../adapter/LunaticJsonRawDataMongoAdapter.java | 3 ++- .../repository/LunaticJsonMongoDBRepository.java | 3 +-- .../genesis/stubs/LunaticJsonMongoDBRepositoryStub.java | 9 +++------ 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/src/main/java/fr/insee/genesis/infrastructure/adapter/LunaticJsonRawDataMongoAdapter.java b/src/main/java/fr/insee/genesis/infrastructure/adapter/LunaticJsonRawDataMongoAdapter.java index 4fa525f3..11b65311 100644 --- a/src/main/java/fr/insee/genesis/infrastructure/adapter/LunaticJsonRawDataMongoAdapter.java +++ b/src/main/java/fr/insee/genesis/infrastructure/adapter/LunaticJsonRawDataMongoAdapter.java @@ -56,7 +56,8 @@ public List findRawData(String campaignName, Mode mode, @Override public List findRawDataByInterrogationID(String interrogationId) { - return repository.findByInterrogationId(interrogationId); + List rawDataDocs = repository.findByInterrogationId(interrogationId); + return LunaticJsonRawDataDocumentMapper.INSTANCE.listDocumentToListModel(rawDataDocs); } @Override diff --git a/src/main/java/fr/insee/genesis/infrastructure/repository/LunaticJsonMongoDBRepository.java b/src/main/java/fr/insee/genesis/infrastructure/repository/LunaticJsonMongoDBRepository.java index 1374d31a..3ae9f676 100644 --- a/src/main/java/fr/insee/genesis/infrastructure/repository/LunaticJsonMongoDBRepository.java +++ b/src/main/java/fr/insee/genesis/infrastructure/repository/LunaticJsonMongoDBRepository.java @@ -1,7 +1,6 @@ package fr.insee.genesis.infrastructure.repository; import fr.insee.genesis.domain.model.surveyunit.Mode; -import fr.insee.genesis.domain.model.surveyunit.rawdata.LunaticJsonRawDataModel; import fr.insee.genesis.infrastructure.document.rawdata.LunaticJsonRawDataDocument; import fr.insee.genesis.infrastructure.document.surveyunit.GroupedInterrogationDocument; import org.springframework.data.mongodb.repository.Aggregation; @@ -28,7 +27,7 @@ public interface LunaticJsonMongoDBRepository extends MongoRepository findModesByCampaignIdAndByModeAndinterrogationIdIninterrogationIdList(String campaignName, Mode mode, List interrogationIdList); @Query(value = "{ 'interrogationId': ?0}") - List findByInterrogationId(String interrogationId); + List findByInterrogationId(String interrogationId); Page findByCampaignIdAndRecordDateBetween(String campagneId, Instant start, Instant end, Pageable pageable); long countByQuestionnaireId(String questionnaireId); diff --git a/src/test/java/fr/insee/genesis/stubs/LunaticJsonMongoDBRepositoryStub.java b/src/test/java/fr/insee/genesis/stubs/LunaticJsonMongoDBRepositoryStub.java index 3541a1fe..76822695 100644 --- a/src/test/java/fr/insee/genesis/stubs/LunaticJsonMongoDBRepositoryStub.java +++ b/src/test/java/fr/insee/genesis/stubs/LunaticJsonMongoDBRepositoryStub.java @@ -1,10 +1,8 @@ package fr.insee.genesis.stubs; import fr.insee.genesis.domain.model.surveyunit.Mode; -import fr.insee.genesis.domain.model.surveyunit.rawdata.LunaticJsonRawDataModel; import fr.insee.genesis.infrastructure.document.rawdata.LunaticJsonRawDataDocument; import fr.insee.genesis.infrastructure.document.surveyunit.GroupedInterrogationDocument; -import fr.insee.genesis.infrastructure.mappers.LunaticJsonRawDataDocumentMapper; import fr.insee.genesis.infrastructure.repository.LunaticJsonMongoDBRepository; import lombok.Getter; import org.springframework.data.domain.Example; @@ -59,12 +57,11 @@ public List findModesByCampaignIdAndByModeAndinterro } @Override - public List findByInterrogationId(String interrogationId) { - return LunaticJsonRawDataDocumentMapper.INSTANCE.listDocumentToListModel( - documents.stream() + public List findByInterrogationId(String interrogationId) { + return documents.stream() .filter(doc -> Objects.equals(doc.interrogationId(), interrogationId)) .toList() - ); + ; } @Override From d1281a05e4c6c959fde13fff02bff08275698957 Mon Sep 17 00:00:00 2001 From: Hajarel-moukh Date: Tue, 23 Dec 2025 15:45:58 +0100 Subject: [PATCH 03/10] add modifications after CR --- .../dto/rawdata/CombinedRawDataDto.java | 13 ++++ .../rest/CombinedRawDataController.java | 10 +-- .../surveyunit/rawdata/CombinedRawData.java | 7 -- ...RawResponse.java => RawResponseModel.java} | 2 +- .../rawdata/combinedRawDataModel.java | 7 ++ .../domain/ports/api/RawResponseApiPort.java | 8 +-- .../ports/spi/RawResponsePersistencePort.java | 6 +- .../rawdata/CombinedRawDataService.java | 22 +++++-- .../service/rawdata/RawResponseService.java | 66 +++++++++---------- .../adapter/RawResponseMongoAdapter.java | 6 +- .../rawdata/LunaticJsonRawDataDocument.java | 1 + .../document/rawdata/RawResponseDocument.java | 1 + .../mappers/RawResponseDocumentMapper.java | 10 +-- .../functional_tests/RawDataDefinitions.java | 8 +-- .../responses/RawResponseControllerTest.java | 8 +-- .../rawdata/CombinedRawDataServiceTest.java | 24 +++---- 16 files changed, 111 insertions(+), 88 deletions(-) create mode 100644 src/main/java/fr/insee/genesis/controller/dto/rawdata/CombinedRawDataDto.java delete mode 100644 src/main/java/fr/insee/genesis/domain/model/surveyunit/rawdata/CombinedRawData.java rename src/main/java/fr/insee/genesis/domain/model/surveyunit/rawdata/{RawResponse.java => RawResponseModel.java} (92%) create mode 100644 src/main/java/fr/insee/genesis/domain/model/surveyunit/rawdata/combinedRawDataModel.java diff --git a/src/main/java/fr/insee/genesis/controller/dto/rawdata/CombinedRawDataDto.java b/src/main/java/fr/insee/genesis/controller/dto/rawdata/CombinedRawDataDto.java new file mode 100644 index 00000000..d9a334ac --- /dev/null +++ b/src/main/java/fr/insee/genesis/controller/dto/rawdata/CombinedRawDataDto.java @@ -0,0 +1,13 @@ +package fr.insee.genesis.controller.dto.rawdata; + +import fr.insee.genesis.domain.model.surveyunit.rawdata.LunaticJsonRawDataModel; +import fr.insee.genesis.domain.model.surveyunit.rawdata.RawResponseModel; + +import java.util.List; + +public record CombinedRawDataDto( + List rawResponseModels, + List lunaticRawDataModels +) { +} + diff --git a/src/main/java/fr/insee/genesis/controller/rest/CombinedRawDataController.java b/src/main/java/fr/insee/genesis/controller/rest/CombinedRawDataController.java index 2db15c1c..fd85a41d 100644 --- a/src/main/java/fr/insee/genesis/controller/rest/CombinedRawDataController.java +++ b/src/main/java/fr/insee/genesis/controller/rest/CombinedRawDataController.java @@ -1,8 +1,7 @@ package fr.insee.genesis.controller.rest; -import fr.insee.genesis.domain.model.surveyunit.rawdata.CombinedRawData; +import fr.insee.genesis.controller.dto.rawdata.CombinedRawDataDto; import fr.insee.genesis.domain.service.rawdata.CombinedRawDataService; -import fr.insee.genesis.exceptions.GenesisException; import io.swagger.v3.oas.annotations.Operation; import lombok.extern.slf4j.Slf4j; import org.springframework.http.ResponseEntity; @@ -27,11 +26,12 @@ public CombinedRawDataController(CombinedRawDataService combinedRawDataService) @Operation(summary = "Retrieve combined raw responses and Lunatic raw data for a given interrogationId") @GetMapping @PreAuthorize("hasAnyRole('ADMIN', 'USER_PLATINE')") - public ResponseEntity getCombinetRawData( + public ResponseEntity getCombinetRawData( @RequestParam(INTERROGATION_ID) String interrogationId - ){CombinedRawData data = combinedRawDataService.getCombinedRawDataByInterrogationId(interrogationId); + ){ + CombinedRawDataDto data = combinedRawDataService.getCombinedRawDataByInterrogationId(interrogationId); - if (data.rawResponses().isEmpty()) { + if (data.rawResponseModels().isEmpty()) { return ResponseEntity.notFound().build(); } diff --git a/src/main/java/fr/insee/genesis/domain/model/surveyunit/rawdata/CombinedRawData.java b/src/main/java/fr/insee/genesis/domain/model/surveyunit/rawdata/CombinedRawData.java deleted file mode 100644 index 06014427..00000000 --- a/src/main/java/fr/insee/genesis/domain/model/surveyunit/rawdata/CombinedRawData.java +++ /dev/null @@ -1,7 +0,0 @@ -package fr.insee.genesis.domain.model.surveyunit.rawdata; - -import java.util.List; - -public record CombinedRawData(List rawResponses, - List lunaticRawData) { -} diff --git a/src/main/java/fr/insee/genesis/domain/model/surveyunit/rawdata/RawResponse.java b/src/main/java/fr/insee/genesis/domain/model/surveyunit/rawdata/RawResponseModel.java similarity index 92% rename from src/main/java/fr/insee/genesis/domain/model/surveyunit/rawdata/RawResponse.java rename to src/main/java/fr/insee/genesis/domain/model/surveyunit/rawdata/RawResponseModel.java index 7f50b76c..fdd87038 100644 --- a/src/main/java/fr/insee/genesis/domain/model/surveyunit/rawdata/RawResponse.java +++ b/src/main/java/fr/insee/genesis/domain/model/surveyunit/rawdata/RawResponseModel.java @@ -6,7 +6,7 @@ import java.time.LocalDateTime; import java.util.Map; -public record RawResponse( +public record RawResponseModel( ObjectId id, String interrogationId, String collectionInstrumentId, diff --git a/src/main/java/fr/insee/genesis/domain/model/surveyunit/rawdata/combinedRawDataModel.java b/src/main/java/fr/insee/genesis/domain/model/surveyunit/rawdata/combinedRawDataModel.java new file mode 100644 index 00000000..c66040a0 --- /dev/null +++ b/src/main/java/fr/insee/genesis/domain/model/surveyunit/rawdata/combinedRawDataModel.java @@ -0,0 +1,7 @@ +package fr.insee.genesis.domain.model.surveyunit.rawdata; + +import java.util.List; + +public record combinedRawDataModel(List rawResponseModels, + List lunaticRawDataModels) { +} diff --git a/src/main/java/fr/insee/genesis/domain/ports/api/RawResponseApiPort.java b/src/main/java/fr/insee/genesis/domain/ports/api/RawResponseApiPort.java index 191c52c7..9245c47e 100644 --- a/src/main/java/fr/insee/genesis/domain/ports/api/RawResponseApiPort.java +++ b/src/main/java/fr/insee/genesis/domain/ports/api/RawResponseApiPort.java @@ -4,7 +4,7 @@ import fr.insee.genesis.domain.model.surveyunit.Mode; import fr.insee.genesis.domain.model.surveyunit.SurveyUnitModel; import fr.insee.genesis.domain.model.surveyunit.rawdata.DataProcessResult; -import fr.insee.genesis.domain.model.surveyunit.rawdata.RawResponse; +import fr.insee.genesis.domain.model.surveyunit.rawdata.RawResponseModel; import fr.insee.genesis.exceptions.GenesisError; import fr.insee.genesis.exceptions.GenesisException; @@ -12,11 +12,11 @@ public interface RawResponseApiPort { - List getRawResponses(String collectionInstrumentId, Mode mode, List interrogationIdList); - List getRawResponsesByInterrogationID(String interrogationId); + List getRawResponses(String collectionInstrumentId, Mode mode, List interrogationIdList); + List getRawResponsesByInterrogationID(String interrogationId); DataProcessResult processRawResponses(String collectionInstrumentId, List interrogationIdList, List errors) throws GenesisException; DataProcessResult processRawResponses(String collectionInstrumentId) throws GenesisException; - List convertRawResponse(List rawResponses, VariablesMap variablesMap); + List convertRawResponse(List rawResponses, VariablesMap variablesMap); List getUnprocessedCollectionInstrumentIds(); void updateProcessDates(List surveyUnitModels); diff --git a/src/main/java/fr/insee/genesis/domain/ports/spi/RawResponsePersistencePort.java b/src/main/java/fr/insee/genesis/domain/ports/spi/RawResponsePersistencePort.java index ff03bbf2..512b8f46 100644 --- a/src/main/java/fr/insee/genesis/domain/ports/spi/RawResponsePersistencePort.java +++ b/src/main/java/fr/insee/genesis/domain/ports/spi/RawResponsePersistencePort.java @@ -1,15 +1,15 @@ package fr.insee.genesis.domain.ports.spi; import fr.insee.genesis.domain.model.surveyunit.Mode; -import fr.insee.genesis.domain.model.surveyunit.rawdata.RawResponse; +import fr.insee.genesis.domain.model.surveyunit.rawdata.RawResponseModel; import java.util.List; import java.util.Set; public interface RawResponsePersistencePort { - List findRawResponses(String collectionInstrumentId, Mode mode, List interrogationIdList); - List findRawResponsesByInterrogationID(String interrogationId); + List findRawResponses(String collectionInstrumentId, Mode mode, List interrogationIdList); + List findRawResponsesByInterrogationID(String interrogationId); void updateProcessDates(String collectionInstrumentId, Set interrogationIds); List getUnprocessedCollectionIds(); Set findUnprocessedInterrogationIdsByCollectionInstrumentId(String collectionInstrumentId); diff --git a/src/main/java/fr/insee/genesis/domain/service/rawdata/CombinedRawDataService.java b/src/main/java/fr/insee/genesis/domain/service/rawdata/CombinedRawDataService.java index 691d75d8..0ed48caa 100644 --- a/src/main/java/fr/insee/genesis/domain/service/rawdata/CombinedRawDataService.java +++ b/src/main/java/fr/insee/genesis/domain/service/rawdata/CombinedRawDataService.java @@ -1,8 +1,8 @@ package fr.insee.genesis.domain.service.rawdata; -import fr.insee.genesis.domain.model.surveyunit.rawdata.CombinedRawData; +import fr.insee.genesis.controller.dto.rawdata.CombinedRawDataDto; import fr.insee.genesis.domain.model.surveyunit.rawdata.LunaticJsonRawDataModel; -import fr.insee.genesis.domain.model.surveyunit.rawdata.RawResponse; +import fr.insee.genesis.domain.model.surveyunit.rawdata.RawResponseModel; import fr.insee.genesis.domain.ports.spi.LunaticJsonRawDataPersistencePort; import fr.insee.genesis.domain.ports.spi.RawResponsePersistencePort; import lombok.extern.slf4j.Slf4j; @@ -15,7 +15,7 @@ @Slf4j public class CombinedRawDataService { - @Qualifier("lunaticJsonMongoAdapterNew") + @Qualifier("lunaticJsonMongoAdapter") private final LunaticJsonRawDataPersistencePort lunaticJsonRawDataPersistencePort; @Qualifier("rawResponseMongoAdapter") private final RawResponsePersistencePort rawResponsePersistencePort; @@ -25,11 +25,19 @@ public CombinedRawDataService(LunaticJsonRawDataPersistencePort lunaticJsonRawDa this.rawResponsePersistencePort = rawResponsePersistencePort; } - public CombinedRawData getCombinedRawDataByInterrogationId(String interrogationId) { - List rawResponses = rawResponsePersistencePort.findRawResponsesByInterrogationID(interrogationId); - List lunaticRawData = lunaticJsonRawDataPersistencePort.findRawDataByInterrogationID(interrogationId); + public CombinedRawDataDto getCombinedRawDataByInterrogationId(String interrogationId) { - return new CombinedRawData(rawResponses, lunaticRawData); + List rawResponseModels = + rawResponsePersistencePort.findRawResponsesByInterrogationID(interrogationId); + + List lunaticRawDataModels = + lunaticJsonRawDataPersistencePort.findRawDataByInterrogationID(interrogationId); + + return new CombinedRawDataDto( + rawResponseModels, + lunaticRawDataModels + ); } + } diff --git a/src/main/java/fr/insee/genesis/domain/service/rawdata/RawResponseService.java b/src/main/java/fr/insee/genesis/domain/service/rawdata/RawResponseService.java index acf221e0..fb162266 100644 --- a/src/main/java/fr/insee/genesis/domain/service/rawdata/RawResponseService.java +++ b/src/main/java/fr/insee/genesis/domain/service/rawdata/RawResponseService.java @@ -10,7 +10,7 @@ import fr.insee.genesis.domain.model.surveyunit.SurveyUnitModel; import fr.insee.genesis.domain.model.surveyunit.VariableModel; import fr.insee.genesis.domain.model.surveyunit.rawdata.DataProcessResult; -import fr.insee.genesis.domain.model.surveyunit.rawdata.RawResponse; +import fr.insee.genesis.domain.model.surveyunit.rawdata.RawResponseModel; import fr.insee.genesis.domain.ports.api.RawResponseApiPort; import fr.insee.genesis.domain.ports.spi.RawResponsePersistencePort; import fr.insee.genesis.domain.ports.spi.SurveyUnitQualityToolPort; @@ -67,12 +67,12 @@ public RawResponseService(ControllerUtils controllerUtils, QuestionnaireMetadata } @Override - public List getRawResponses(String collectionInstrumentId, Mode mode, List interrogationIdList) { + public List getRawResponses(String collectionInstrumentId, Mode mode, List interrogationIdList) { return rawResponsePersistencePort.findRawResponses(collectionInstrumentId,mode,interrogationIdList); } @Override - public List getRawResponsesByInterrogationID(String interrogationId) { + public List getRawResponsesByInterrogationID(String interrogationId) { return rawResponsePersistencePort.findRawResponsesByInterrogationID(interrogationId); } @@ -94,10 +94,10 @@ public DataProcessResult processRawResponses(String collectionInstrumentId, List int maxIndex = Math.min(interrogationIdListForMode.size(), config.getRawDataProcessingBatchSize()); List interrogationIdToProcess = interrogationIdListForMode.subList(0, maxIndex); - List rawResponses = getRawResponses(collectionInstrumentId, mode, interrogationIdToProcess); + List rawResponseModels = getRawResponses(collectionInstrumentId, mode, interrogationIdToProcess); List surveyUnitModels = convertRawResponse( - rawResponses, + rawResponseModels, variablesMap ); @@ -187,9 +187,9 @@ public DataProcessResult processRawResponses(String collectionInstrumentId) thro private List getConvertedSurveyUnits(String collectionInstrumentId, Mode mode, List interrogationIdListForMode, int maxIndex, VariablesMap variablesMap) { List interrogationIdToProcess = interrogationIdListForMode.subList(0, maxIndex); - List rawResponses = getRawResponses(collectionInstrumentId, mode, interrogationIdToProcess); + List rawResponseModels = getRawResponses(collectionInstrumentId, mode, interrogationIdToProcess); return convertRawResponse( - rawResponses, + rawResponseModels, variablesMap ); } @@ -207,39 +207,39 @@ private VariablesMap getVariablesMap(String collectionInstrumentId, Mode mode, L } @Override - public List convertRawResponse(List rawResponses, VariablesMap variablesMap) { + public List convertRawResponse(List rawResponseModels, VariablesMap variablesMap) { //Convert to genesis model List surveyUnitModels = new ArrayList<>(); //For each possible data state (we receive COLLECTED or EDITED) for(DataState dataState : List.of(DataState.COLLECTED,DataState.EDITED)){ - for (RawResponse rawResponse : rawResponses) { + for (RawResponseModel rawResponseModel : rawResponseModels) { //Get optional fields - Boolean isCapturedIndirectly = getIsCapturedIndirectly(rawResponse); - LocalDateTime validationDate = getValidationDate(rawResponse); - String usualSurveyUnitId = getStringFieldInPayload(rawResponse,"usualSurveyUnitId"); - String majorModelVersion = getStringFieldInPayload(rawResponse, "majorModelVersion"); + Boolean isCapturedIndirectly = getIsCapturedIndirectly(rawResponseModel); + LocalDateTime validationDate = getValidationDate(rawResponseModel); + String usualSurveyUnitId = getStringFieldInPayload(rawResponseModel,"usualSurveyUnitId"); + String majorModelVersion = getStringFieldInPayload(rawResponseModel, "majorModelVersion"); SurveyUnitModel surveyUnitModel = SurveyUnitModel.builder() - .collectionInstrumentId(rawResponse.collectionInstrumentId()) + .collectionInstrumentId(rawResponseModel.collectionInstrumentId()) .majorModelVersion(majorModelVersion) - .mode(rawResponse.mode()) - .interrogationId(rawResponse.interrogationId()) + .mode(rawResponseModel.mode()) + .interrogationId(rawResponseModel.interrogationId()) .usualSurveyUnitId(usualSurveyUnitId) .validationDate(validationDate) .isCapturedIndirectly(isCapturedIndirectly) .state(dataState) - .fileDate(rawResponse.recordDate()) + .fileDate(rawResponseModel.recordDate()) .recordDate(LocalDateTime.now()) .collectedVariables(new ArrayList<>()) .externalVariables(new ArrayList<>()) .build(); //Data collected variables conversion - convertRawDataCollectedVariables(rawResponse, surveyUnitModel, dataState, variablesMap); + convertRawDataCollectedVariables(rawResponseModel, surveyUnitModel, dataState, variablesMap); //External variables conversion into COLLECTED document if(dataState == DataState.COLLECTED){ - convertRawDataExternalVariables(rawResponse, surveyUnitModel, variablesMap); + convertRawDataExternalVariables(rawResponseModel, surveyUnitModel, variablesMap); } boolean hasNoVariable = surveyUnitModel.getCollectedVariables().isEmpty() @@ -247,7 +247,7 @@ public List convertRawResponse(List rawResponses, if(hasNoVariable){ if(surveyUnitModel.getState() == DataState.COLLECTED){ - log.warn("No collected or external variable for interrogation {}, raw data is ignored.", rawResponse.interrogationId()); + log.warn("No collected or external variable for interrogation {}, raw data is ignored.", rawResponseModel.interrogationId()); } continue;// don't add suModel } @@ -305,29 +305,29 @@ private void sendProcessedIdsToQualityTool(List surveyUnitModel } } - private static Boolean getIsCapturedIndirectly(RawResponse rawResponse) { + private static Boolean getIsCapturedIndirectly(RawResponseModel rawResponseModel) { try{ - return rawResponse.payload().get("isCapturedIndirectly") == null ? null : - Boolean.parseBoolean(rawResponse.payload().get("isCapturedIndirectly").toString()); + return rawResponseModel.payload().get("isCapturedIndirectly") == null ? null : + Boolean.parseBoolean(rawResponseModel.payload().get("isCapturedIndirectly").toString()); }catch(Exception e){ log.warn("Exception when parsing isCapturedIndirectly : {}",e.toString()); return Boolean.FALSE; } } - private static LocalDateTime getValidationDate(RawResponse rawResponse) { + private static LocalDateTime getValidationDate(RawResponseModel rawResponseModel) { try{ - return rawResponse.payload().get("validationDate") == null ? null : - LocalDateTime.parse(rawResponse.payload().get("validationDate").toString()); + return rawResponseModel.payload().get("validationDate") == null ? null : + LocalDateTime.parse(rawResponseModel.payload().get("validationDate").toString()); }catch(Exception e){ log.warn("Exception when parsing validation date : {}",e.toString()); return null; } } - private static String getStringFieldInPayload(RawResponse rawResponse, String field) { + private static String getStringFieldInPayload(RawResponseModel rawResponseModel, String field) { try{ - return rawResponse.payload().get(field).toString(); + return rawResponseModel.payload().get(field).toString(); }catch(Exception e){ log.warn("Exception when parsing {} : {}",field, e.toString()); return null; @@ -336,12 +336,12 @@ private static String getStringFieldInPayload(RawResponse rawResponse, String fi @SuppressWarnings("unchecked") private void convertRawDataCollectedVariables( - RawResponse rawResponse, + RawResponseModel rawResponseModel, SurveyUnitModel dstSurveyUnitModel, DataState dataState, VariablesMap variablesMap ) { - Map dataMap = rawResponse.payload(); + Map dataMap = rawResponseModel.payload(); dataMap = (Map) dataMap.get("data"); dataMap = (Map)dataMap.get("COLLECTED"); @@ -350,7 +350,7 @@ private void convertRawDataCollectedVariables( Map collectedMap = JsonUtils.asMap(dataMap); if (collectedMap == null || collectedMap.isEmpty()){ if(dataState.equals(DataState.COLLECTED)) { - log.warn("No collected data for interrogation {}", rawResponse.interrogationId()); + log.warn("No collected data for interrogation {}", rawResponseModel.interrogationId()); } return; } @@ -420,11 +420,11 @@ private static String getIdLoop(VariablesMap variablesMap, String variableName) @SuppressWarnings("unchecked") private static void convertRawDataExternalVariables( - RawResponse rawResponse, + RawResponseModel rawResponseModel, SurveyUnitModel dstSurveyUnitModel, VariablesMap variablesMap ) { - Map dataMap = rawResponse.payload(); + Map dataMap = rawResponseModel.payload(); dataMap = (Map) dataMap.get("data"); diff --git a/src/main/java/fr/insee/genesis/infrastructure/adapter/RawResponseMongoAdapter.java b/src/main/java/fr/insee/genesis/infrastructure/adapter/RawResponseMongoAdapter.java index aad41c2e..56f5b5e3 100644 --- a/src/main/java/fr/insee/genesis/infrastructure/adapter/RawResponseMongoAdapter.java +++ b/src/main/java/fr/insee/genesis/infrastructure/adapter/RawResponseMongoAdapter.java @@ -2,7 +2,7 @@ import fr.insee.genesis.Constants; import fr.insee.genesis.domain.model.surveyunit.Mode; -import fr.insee.genesis.domain.model.surveyunit.rawdata.RawResponse; +import fr.insee.genesis.domain.model.surveyunit.rawdata.RawResponseModel; import fr.insee.genesis.domain.ports.spi.RawResponsePersistencePort; import fr.insee.genesis.infrastructure.document.rawdata.RawResponseDocument; import fr.insee.genesis.infrastructure.mappers.RawResponseDocumentMapper; @@ -34,13 +34,13 @@ public RawResponseMongoAdapter(RawResponseRepository repository, MongoTemplate m } @Override - public List findRawResponses(String collectionInstrumentId, Mode mode, List interrogationIdList) { + public List findRawResponses(String collectionInstrumentId, Mode mode, List interrogationIdList) { List rawDataDocs = repository.findByCollectionInstrumentIdAndModeAndInterrogationIdList(collectionInstrumentId, mode.getJsonName(), interrogationIdList); return RawResponseDocumentMapper.INSTANCE.listDocumentToListModel(rawDataDocs); } @Override - public List findRawResponsesByInterrogationID(String interrogationId) { + public List findRawResponsesByInterrogationID(String interrogationId) { List rawResponseDocumentList = repository.findByInterrogationId(interrogationId); return RawResponseDocumentMapper.INSTANCE.listDocumentToListModel(rawResponseDocumentList); } diff --git a/src/main/java/fr/insee/genesis/infrastructure/document/rawdata/LunaticJsonRawDataDocument.java b/src/main/java/fr/insee/genesis/infrastructure/document/rawdata/LunaticJsonRawDataDocument.java index 88961d0b..c29536a6 100644 --- a/src/main/java/fr/insee/genesis/infrastructure/document/rawdata/LunaticJsonRawDataDocument.java +++ b/src/main/java/fr/insee/genesis/infrastructure/document/rawdata/LunaticJsonRawDataDocument.java @@ -19,6 +19,7 @@ public record LunaticJsonRawDataDocument( String campaignId, @Indexed String questionnaireId, + @Indexed String interrogationId, String idUE, Mode mode, diff --git a/src/main/java/fr/insee/genesis/infrastructure/document/rawdata/RawResponseDocument.java b/src/main/java/fr/insee/genesis/infrastructure/document/rawdata/RawResponseDocument.java index e62e5a4c..f969c86c 100644 --- a/src/main/java/fr/insee/genesis/infrastructure/document/rawdata/RawResponseDocument.java +++ b/src/main/java/fr/insee/genesis/infrastructure/document/rawdata/RawResponseDocument.java @@ -15,6 +15,7 @@ public record RawResponseDocument ( @Id ObjectId id, + @Indexed String interrogationId, String collectionInstrumentId, String mode, diff --git a/src/main/java/fr/insee/genesis/infrastructure/mappers/RawResponseDocumentMapper.java b/src/main/java/fr/insee/genesis/infrastructure/mappers/RawResponseDocumentMapper.java index 96e5e073..b2103a66 100644 --- a/src/main/java/fr/insee/genesis/infrastructure/mappers/RawResponseDocumentMapper.java +++ b/src/main/java/fr/insee/genesis/infrastructure/mappers/RawResponseDocumentMapper.java @@ -1,7 +1,7 @@ package fr.insee.genesis.infrastructure.mappers; import fr.insee.genesis.domain.model.surveyunit.Mode; -import fr.insee.genesis.domain.model.surveyunit.rawdata.RawResponse; +import fr.insee.genesis.domain.model.surveyunit.rawdata.RawResponseModel; import fr.insee.genesis.infrastructure.document.rawdata.RawResponseDocument; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; @@ -13,10 +13,10 @@ public interface RawResponseDocumentMapper { RawResponseDocumentMapper INSTANCE = Mappers.getMapper(RawResponseDocumentMapper.class); - RawResponse documentToModel(RawResponseDocument document); - RawResponseDocument modelToDocument(RawResponse model); - List listDocumentToListModel(List documentList); - List listModelToListDocument(List modelList); + RawResponseModel documentToModel(RawResponseDocument document); + RawResponseDocument modelToDocument(RawResponseModel model); + List listDocumentToListModel(List documentList); + List listModelToListDocument(List modelList); // --- Custom mapping: String -> Mode default Mode stringToMode(String value) { diff --git a/src/test/java/cucumber/functional_tests/RawDataDefinitions.java b/src/test/java/cucumber/functional_tests/RawDataDefinitions.java index 2dd40bc6..43922a4c 100644 --- a/src/test/java/cucumber/functional_tests/RawDataDefinitions.java +++ b/src/test/java/cucumber/functional_tests/RawDataDefinitions.java @@ -11,7 +11,7 @@ import fr.insee.genesis.domain.model.surveyunit.SurveyUnitModel; import fr.insee.genesis.domain.model.surveyunit.VariableModel; import fr.insee.genesis.domain.model.surveyunit.rawdata.DataProcessResult; -import fr.insee.genesis.domain.model.surveyunit.rawdata.RawResponse; +import fr.insee.genesis.domain.model.surveyunit.rawdata.RawResponseModel; import fr.insee.genesis.domain.ports.api.RawResponseApiPort; import fr.insee.genesis.domain.service.context.DataProcessingContextService; import fr.insee.genesis.domain.service.metadata.QuestionnaireMetadataService; @@ -106,12 +106,12 @@ public void saveAsRawJson(RawResponseDto dto) { RawResponseApiPort rawResponseApiPortStub = new RawResponseApiPort() { @Override - public List getRawResponses(String questionnaireModelId, Mode mode, List interrogationIdList) { + public List getRawResponses(String questionnaireModelId, Mode mode, List interrogationIdList) { return List.of(); } @Override - public List getRawResponsesByInterrogationID(String interrogationId) { + public List getRawResponsesByInterrogationID(String interrogationId) { return List.of(); } @@ -126,7 +126,7 @@ public DataProcessResult processRawResponses(String collectionInstrumentId) thro } @Override - public List convertRawResponse(List rawResponses, VariablesMap variablesMap) { + public List convertRawResponse(List rawResponsModels, VariablesMap variablesMap) { return List.of(); } diff --git a/src/test/java/fr/insee/genesis/controller/rest/responses/RawResponseControllerTest.java b/src/test/java/fr/insee/genesis/controller/rest/responses/RawResponseControllerTest.java index c79dec47..2697c936 100644 --- a/src/test/java/fr/insee/genesis/controller/rest/responses/RawResponseControllerTest.java +++ b/src/test/java/fr/insee/genesis/controller/rest/responses/RawResponseControllerTest.java @@ -10,7 +10,7 @@ import fr.insee.genesis.domain.model.surveyunit.SurveyUnitModel; import fr.insee.genesis.domain.model.surveyunit.rawdata.DataProcessResult; import fr.insee.genesis.domain.model.surveyunit.rawdata.LunaticJsonRawDataModel; -import fr.insee.genesis.domain.model.surveyunit.rawdata.RawResponse; +import fr.insee.genesis.domain.model.surveyunit.rawdata.RawResponseModel; import fr.insee.genesis.domain.ports.api.LunaticJsonRawDataApiPort; import fr.insee.genesis.domain.ports.api.RawResponseApiPort; import fr.insee.genesis.domain.service.context.DataProcessingContextService; @@ -79,12 +79,12 @@ public void saveAsRawJson(RawResponseDto dto) { RawResponseApiPort rawResponseApiPortStub = new RawResponseApiPort() { @Override - public List getRawResponses(String questionnaireModelId, Mode mode, List interrogationIdList) { + public List getRawResponses(String questionnaireModelId, Mode mode, List interrogationIdList) { return List.of(); } @Override - public List getRawResponsesByInterrogationID(String interrogationId) { + public List getRawResponsesByInterrogationID(String interrogationId) { return List.of(); } @@ -99,7 +99,7 @@ public DataProcessResult processRawResponses(String collectionInstrumentId) thro } @Override - public List convertRawResponse(List rawResponses, VariablesMap variablesMap) { + public List convertRawResponse(List rawResponsModels, VariablesMap variablesMap) { return List.of(); } diff --git a/src/test/java/fr/insee/genesis/domain/service/rawdata/CombinedRawDataServiceTest.java b/src/test/java/fr/insee/genesis/domain/service/rawdata/CombinedRawDataServiceTest.java index 11dc29b6..13dd3925 100644 --- a/src/test/java/fr/insee/genesis/domain/service/rawdata/CombinedRawDataServiceTest.java +++ b/src/test/java/fr/insee/genesis/domain/service/rawdata/CombinedRawDataServiceTest.java @@ -1,9 +1,9 @@ package fr.insee.genesis.domain.service.rawdata; +import fr.insee.genesis.controller.dto.rawdata.CombinedRawDataDto; import fr.insee.genesis.domain.model.surveyunit.Mode; -import fr.insee.genesis.domain.model.surveyunit.rawdata.CombinedRawData; import fr.insee.genesis.domain.model.surveyunit.rawdata.LunaticJsonRawDataModel; -import fr.insee.genesis.domain.model.surveyunit.rawdata.RawResponse; +import fr.insee.genesis.domain.model.surveyunit.rawdata.RawResponseModel; import fr.insee.genesis.domain.ports.spi.LunaticJsonRawDataPersistencePort; import fr.insee.genesis.domain.ports.spi.RawResponsePersistencePort; import org.assertj.core.api.Assertions; @@ -37,7 +37,7 @@ void getCombinedRawDataByInterrogationId_shouldReturnCombinedData() { String interrogationId = "INTERROGATION_1"; // Mock des RawResponses - RawResponse response1 = new RawResponse( + RawResponseModel response1 = new RawResponseModel( new ObjectId(), interrogationId, "COLLECTION_1", @@ -47,7 +47,7 @@ void getCombinedRawDataByInterrogationId_shouldReturnCombinedData() { null ); - RawResponse response2 = new RawResponse( + RawResponseModel response2 = new RawResponseModel( new ObjectId(), interrogationId, "COLLECTION_1", @@ -57,7 +57,7 @@ void getCombinedRawDataByInterrogationId_shouldReturnCombinedData() { null ); - List rawResponses = List.of(response1, response2); + List rawResponseModels = List.of(response1, response2); // Mock des LunaticJsonRawData LunaticJsonRawDataModel lunatic1 = LunaticJsonRawDataModel.builder() @@ -71,16 +71,16 @@ void getCombinedRawDataByInterrogationId_shouldReturnCombinedData() { // WHEN Mockito.when(rawResponsePersistencePort.findRawResponsesByInterrogationID(interrogationId)) - .thenReturn(rawResponses); + .thenReturn(rawResponseModels); Mockito.when(lunaticJsonRawDataPersistencePort.findRawDataByInterrogationID(interrogationId)) .thenReturn(lunaticRawData); - CombinedRawData result = combinedRawDataService.getCombinedRawDataByInterrogationId(interrogationId); + CombinedRawDataDto result = combinedRawDataService.getCombinedRawDataByInterrogationId(interrogationId); // THEN - assertions - Assertions.assertThat(result.rawResponses()).hasSize(2).containsExactlyInAnyOrderElementsOf(rawResponses); - Assertions.assertThat(result.lunaticRawData()).hasSize(1).containsExactlyInAnyOrderElementsOf(lunaticRawData); + Assertions.assertThat(result.rawResponseModels()).hasSize(2).containsExactlyInAnyOrderElementsOf(rawResponseModels); + Assertions.assertThat(result.lunaticRawDataModels()).hasSize(1).containsExactlyInAnyOrderElementsOf(lunaticRawData); } @Test @@ -91,10 +91,10 @@ void getCombinedRawData_shouldHandleEmptyLists() { .thenReturn(List.of()); Mockito.when(lunaticJsonRawDataPersistencePort.findRawDataByInterrogationID(interrogationId)) .thenReturn(List.of()); - CombinedRawData result = combinedRawDataService.getCombinedRawDataByInterrogationId(interrogationId); + CombinedRawDataDto result = combinedRawDataService.getCombinedRawDataByInterrogationId(interrogationId); - Assertions.assertThat(result.rawResponses()).isEmpty(); - Assertions.assertThat(result.lunaticRawData()).isEmpty(); + Assertions.assertThat(result.rawResponseModels()).isEmpty(); + Assertions.assertThat(result.lunaticRawDataModels()).isEmpty(); } } From eb544da9c3428deca0959eb8c86a50021da2cb5e Mon Sep 17 00:00:00 2001 From: Hajarel-moukh Date: Mon, 5 Jan 2026 11:43:25 +0100 Subject: [PATCH 04/10] add RequiredArgsConstructor annotation --- .../genesis/controller/rest/CombinedRawDataController.java | 5 ++--- .../domain/service/rawdata/CombinedRawDataService.java | 7 ++----- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/main/java/fr/insee/genesis/controller/rest/CombinedRawDataController.java b/src/main/java/fr/insee/genesis/controller/rest/CombinedRawDataController.java index fd85a41d..a35397ab 100644 --- a/src/main/java/fr/insee/genesis/controller/rest/CombinedRawDataController.java +++ b/src/main/java/fr/insee/genesis/controller/rest/CombinedRawDataController.java @@ -3,6 +3,7 @@ import fr.insee.genesis.controller.dto.rawdata.CombinedRawDataDto; import fr.insee.genesis.domain.service.rawdata.CombinedRawDataService; import io.swagger.v3.oas.annotations.Operation; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; @@ -14,14 +15,12 @@ @Slf4j @Controller @RequestMapping(path = "/combined-raw-data" ) +@RequiredArgsConstructor public class CombinedRawDataController { private static final String INTERROGATION_ID = "interrogationId"; private final CombinedRawDataService combinedRawDataService; - public CombinedRawDataController(CombinedRawDataService combinedRawDataService) { - this.combinedRawDataService = combinedRawDataService; - } @Operation(summary = "Retrieve combined raw responses and Lunatic raw data for a given interrogationId") @GetMapping diff --git a/src/main/java/fr/insee/genesis/domain/service/rawdata/CombinedRawDataService.java b/src/main/java/fr/insee/genesis/domain/service/rawdata/CombinedRawDataService.java index 0ed48caa..a6f4e28a 100644 --- a/src/main/java/fr/insee/genesis/domain/service/rawdata/CombinedRawDataService.java +++ b/src/main/java/fr/insee/genesis/domain/service/rawdata/CombinedRawDataService.java @@ -5,6 +5,7 @@ import fr.insee.genesis.domain.model.surveyunit.rawdata.RawResponseModel; import fr.insee.genesis.domain.ports.spi.LunaticJsonRawDataPersistencePort; import fr.insee.genesis.domain.ports.spi.RawResponsePersistencePort; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; @@ -13,6 +14,7 @@ @Service @Slf4j +@RequiredArgsConstructor public class CombinedRawDataService { @Qualifier("lunaticJsonMongoAdapter") @@ -20,11 +22,6 @@ public class CombinedRawDataService { @Qualifier("rawResponseMongoAdapter") private final RawResponsePersistencePort rawResponsePersistencePort; - public CombinedRawDataService(LunaticJsonRawDataPersistencePort lunaticJsonRawDataPersistencePort, RawResponsePersistencePort rawResponsePersistencePort) { - this.lunaticJsonRawDataPersistencePort = lunaticJsonRawDataPersistencePort; - this.rawResponsePersistencePort = rawResponsePersistencePort; - } - public CombinedRawDataDto getCombinedRawDataByInterrogationId(String interrogationId) { List rawResponseModels = From 6acffa25d0c681406243f7227200096730a47794 Mon Sep 17 00:00:00 2001 From: Hajarel-moukh Date: Mon, 5 Jan 2026 11:51:50 +0100 Subject: [PATCH 05/10] refacto --- .../domain/ports/spi/LunaticJsonRawDataPersistencePort.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/fr/insee/genesis/domain/ports/spi/LunaticJsonRawDataPersistencePort.java b/src/main/java/fr/insee/genesis/domain/ports/spi/LunaticJsonRawDataPersistencePort.java index 2ca6a82a..5116271b 100644 --- a/src/main/java/fr/insee/genesis/domain/ports/spi/LunaticJsonRawDataPersistencePort.java +++ b/src/main/java/fr/insee/genesis/domain/ports/spi/LunaticJsonRawDataPersistencePort.java @@ -6,8 +6,8 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; -import java.time.LocalDateTime; import java.time.Instant; +import java.time.LocalDateTime; import java.util.List; import java.util.Set; From 5ad43aba596ff659132a2c71bbd4c553567021eb Mon Sep 17 00:00:00 2001 From: Hajarel-moukh Date: Mon, 5 Jan 2026 11:57:32 +0100 Subject: [PATCH 06/10] update bpm version --- .../infrastructure/mappers/RundeckExecutionDocumentMapper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/fr/insee/genesis/infrastructure/mappers/RundeckExecutionDocumentMapper.java b/src/main/java/fr/insee/genesis/infrastructure/mappers/RundeckExecutionDocumentMapper.java index f0847f0e..30067d67 100644 --- a/src/main/java/fr/insee/genesis/infrastructure/mappers/RundeckExecutionDocumentMapper.java +++ b/src/main/java/fr/insee/genesis/infrastructure/mappers/RundeckExecutionDocumentMapper.java @@ -13,4 +13,4 @@ public interface RundeckExecutionDocumentMapper { RundeckExecution documentToModel(RundeckExecutionDocument rundeckExecutionDocument); RundeckExecutionDocument modelToDocument(RundeckExecution rundeckExecution); -} +} \ No newline at end of file From c2aae1b56fcc8a04272b79e8e3fb7748046abb26 Mon Sep 17 00:00:00 2001 From: Hajarel-moukh Date: Mon, 5 Jan 2026 12:04:49 +0100 Subject: [PATCH 07/10] update bpm version --- .../java/cucumber/functional_tests/LunaticModelDefinitions.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/java/cucumber/functional_tests/LunaticModelDefinitions.java b/src/test/java/cucumber/functional_tests/LunaticModelDefinitions.java index dca3aac2..16e9c0cd 100644 --- a/src/test/java/cucumber/functional_tests/LunaticModelDefinitions.java +++ b/src/test/java/cucumber/functional_tests/LunaticModelDefinitions.java @@ -125,6 +125,7 @@ public void save_lunatic_model(String questionnaireId) throws Exception { JsonUtils.jsonToMap(lunaticModelSaveBody) ); } + @When("We try to save that lunatic model json file with questionnaire id {string} with Spring context") public void save_lunatic_model_spring(String questionnaireId) throws IOException { lunaticModelSaveBody = Files.readString(lunaticModelJsonPath); From da809cde52a701b4e1f35b92f7df286da41803b2 Mon Sep 17 00:00:00 2001 From: Hajarel-moukh Date: Mon, 5 Jan 2026 13:45:30 +0100 Subject: [PATCH 08/10] refacto --- .../domain/service/surveyunit/SurveyUnitQualityService.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/fr/insee/genesis/domain/service/surveyunit/SurveyUnitQualityService.java b/src/main/java/fr/insee/genesis/domain/service/surveyunit/SurveyUnitQualityService.java index 100eb6c6..9b73551b 100644 --- a/src/main/java/fr/insee/genesis/domain/service/surveyunit/SurveyUnitQualityService.java +++ b/src/main/java/fr/insee/genesis/domain/service/surveyunit/SurveyUnitQualityService.java @@ -25,6 +25,7 @@ public void verifySurveyUnits(List surveyUnitModels, VariablesM * @return A list of variables that are absent in metadata */ public List checkVariablesPresentInMetadata(List variableInputDtos, VariablesMap variablesMap) { + List absentVariableNames = new ArrayList<>(); for(VariableInputDto variableInputDto : variableInputDtos){ From 15aa1cce30061ee2976f864263ebfb80a889e2a3 Mon Sep 17 00:00:00 2001 From: Hajarel-moukh Date: Mon, 5 Jan 2026 13:58:46 +0100 Subject: [PATCH 09/10] upgrade BPM version to 23 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c2fe7695..5af4d45d 100644 --- a/pom.xml +++ b/pom.xml @@ -36,7 +36,7 @@ 1.22.0 1.2.3 2.19.0 - 1.0.21 + 1.0.23 From 4aa5765497e9c81be996b2c17402fbcce1938d3a Mon Sep 17 00:00:00 2001 From: QDIBYS Date: Mon, 5 Jan 2026 16:34:04 +0100 Subject: [PATCH 10/10] fix: RawResponse to rawResponseModel --- .../rawdata/RawResponseServiceUnitTest.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/test/java/fr/insee/genesis/domain/service/rawdata/RawResponseServiceUnitTest.java b/src/test/java/fr/insee/genesis/domain/service/rawdata/RawResponseServiceUnitTest.java index 05082ebf..8bacf28d 100644 --- a/src/test/java/fr/insee/genesis/domain/service/rawdata/RawResponseServiceUnitTest.java +++ b/src/test/java/fr/insee/genesis/domain/service/rawdata/RawResponseServiceUnitTest.java @@ -6,7 +6,7 @@ import fr.insee.genesis.controller.utils.ControllerUtils; import fr.insee.genesis.domain.model.surveyunit.Mode; import fr.insee.genesis.domain.model.surveyunit.SurveyUnitModel; -import fr.insee.genesis.domain.model.surveyunit.rawdata.RawResponse; +import fr.insee.genesis.domain.model.surveyunit.rawdata.RawResponseModel; import fr.insee.genesis.domain.ports.spi.RawResponsePersistencePort; import fr.insee.genesis.domain.ports.spi.SurveyUnitQualityToolPort; import fr.insee.genesis.domain.service.context.DataProcessingContextService; @@ -180,8 +180,8 @@ private void givenOkCase(RawResponseDto.QuestionnaireStateEnum questionnaireStat String validationDate = questionnaireState.equals(RawResponseDto.QuestionnaireStateEnum.FINISHED) ? TEST_VALIDATION_DATE : null; - List rawResponses = new ArrayList<>(); - RawResponse rawResponse = new RawResponse( + List rawResponses = new ArrayList<>(); + RawResponseModel rawResponse = new RawResponseModel( null, TestConstants.DEFAULT_INTERROGATION_ID, TestConstants.DEFAULT_COLLECTION_INSTRUMENT_ID, @@ -214,8 +214,8 @@ private void givenInvalidQuestionnaireState(){ MetadataModel metadataModel = new MetadataModel(); metadataModel.setVariables(variablesMap); - List rawResponses = new ArrayList<>(); - RawResponse rawResponse = new RawResponse( + List rawResponses = new ArrayList<>(); + RawResponseModel rawResponse = new RawResponseModel( null, TestConstants.DEFAULT_INTERROGATION_ID, TestConstants.DEFAULT_COLLECTION_INSTRUMENT_ID, @@ -248,8 +248,8 @@ private void givenInvalidValidationDate(){ MetadataModel metadataModel = new MetadataModel(); metadataModel.setVariables(variablesMap); - List rawResponses = new ArrayList<>(); - RawResponse rawResponse = new RawResponse( + List rawResponses = new ArrayList<>(); + RawResponseModel rawResponse = new RawResponseModel( null, TestConstants.DEFAULT_INTERROGATION_ID, TestConstants.DEFAULT_COLLECTION_INSTRUMENT_ID,