diff --git a/src/main/java/fr/insee/genesis/controller/adapter/LunaticXmlAdapter.java b/src/main/java/fr/insee/genesis/controller/adapter/LunaticXmlAdapter.java index fbe8d0b6..fd9f7019 100644 --- a/src/main/java/fr/insee/genesis/controller/adapter/LunaticXmlAdapter.java +++ b/src/main/java/fr/insee/genesis/controller/adapter/LunaticXmlAdapter.java @@ -2,36 +2,35 @@ import fr.insee.bpm.metadata.model.VariablesMap; import fr.insee.genesis.controller.sources.xml.LunaticXmlCollectedData; +import fr.insee.genesis.controller.sources.xml.LunaticXmlOtherData; import fr.insee.genesis.controller.sources.xml.LunaticXmlSurveyUnit; import fr.insee.genesis.controller.sources.xml.ValueType; import fr.insee.genesis.domain.model.surveyunit.SurveyUnitModel; import fr.insee.genesis.domain.utils.LoopIdentifier; -import fr.insee.genesis.domain.model.surveyunit.CollectedVariable; import fr.insee.genesis.domain.model.surveyunit.DataState; import fr.insee.genesis.domain.model.surveyunit.Mode; -import fr.insee.genesis.domain.model.surveyunit.Variable; +import fr.insee.genesis.domain.model.surveyunit.VariableModel; import lombok.experimental.UtilityClass; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; -import java.util.Objects; @UtilityClass public class LunaticXmlAdapter { /** - * Convert a Lunatic XML survey unit into a genesis survey unit DTO + * Convert a Lunatic XML survey unit into a genesis survey unit model * @param su Lunatic XML survey unit to convert * @param variablesMap variable definitions (used for loops) * @param idCampaign survey id - * @return a genesis survey unit DTO + * @return Genesis SurveyUnitModels for each data state */ public static List convert(LunaticXmlSurveyUnit su, VariablesMap variablesMap, String idCampaign, Mode mode){ //Get COLLECTED Data and external variables List surveyUnitModelList = new ArrayList<>(); SurveyUnitModel surveyUnitModel = getStateDataFromSurveyUnit(su, variablesMap, idCampaign, DataState.COLLECTED, mode); - getExternalDataFromSurveyUnit(su, surveyUnitModel); + getExternalDataFromSurveyUnit(su, surveyUnitModel, variablesMap); surveyUnitModelList.add(surveyUnitModel); @@ -65,8 +64,8 @@ public static List convert(LunaticXmlSurveyUnit su, VariablesMa * @param su source XML Survey Unit * @param variablesMap variable definitions (used for loops) * @param idCampaign survey id - * @param dataState state of the DTO to generate - * @return Survey Unit DTO with a specific state + * @param dataState state of the SurveyUnitModel to generate + * @return SurveyUnitModel with a specific state */ private static SurveyUnitModel getStateDataFromSurveyUnit(LunaticXmlSurveyUnit su, VariablesMap variablesMap, String idCampaign, DataState dataState, Mode mode) { SurveyUnitModel surveyUnitModel = SurveyUnitModel.builder() @@ -84,15 +83,15 @@ private static SurveyUnitModel getStateDataFromSurveyUnit(LunaticXmlSurveyUnit s /** - * Gets data from a specific state and put it into DTO's data + * Gets data from a specific state and put it into Model's data * @param su XML survey unit to extract from - * @param surveyUnitModel DTO to aliment + * @param surveyUnitModel Model to aliment * @param variablesMap variables definitions (used for loops) * @param dataState data state from XML - * @return the DTO containing data, null if no data and not COLLECTED + * @return the SurveyUnitModel containing data, null if no data and not COLLECTED */ private static SurveyUnitModel getCollectedDataFromSurveyUnit(LunaticXmlSurveyUnit su, SurveyUnitModel surveyUnitModel, VariablesMap variablesMap, DataState dataState) { - List variablesUpdate = new ArrayList<>(); + List variableModels = new ArrayList<>(); int dataCount = 0; for (LunaticXmlCollectedData lunaticXmlCollectedData : su.getData().getCollected()){ @@ -116,23 +115,24 @@ private static SurveyUnitModel getCollectedDataFromSurveyUnit(LunaticXmlSurveyUn default: return null; } - if(valueTypeList != null) { - for (int i = 1; i <= valueTypeList.size(); i++) { - List variableValues = new ArrayList<>(); - if (valueTypeList.get(i-1).getValue()!=null) { - variableValues.add(valueTypeList.get(i-1).getValue()); - variablesUpdate.add(CollectedVariable.collectedVariableBuilder() - .idVar(lunaticXmlCollectedData.getVariableName()) - .values(variableValues) - .idLoop(LoopIdentifier.getLoopIdentifier(lunaticXmlCollectedData.getVariableName(), variablesMap, i)) - .idParent(LoopIdentifier.getRelatedVariableName(lunaticXmlCollectedData.getVariableName(), variablesMap)) - .build()); - dataCount++; - } + if(valueTypeList == null) { + continue; //Go to next data + } + for (int i = 1; i <= valueTypeList.size(); i++) { + List variableValues = new ArrayList<>(); + if (valueTypeList.get(i-1).getValue()!=null) { + variableValues.add(valueTypeList.get(i-1).getValue()); + variableModels.add(VariableModel.builder() + .idVar(lunaticXmlCollectedData.getVariableName()) + .values(variableValues) + .idLoop(LoopIdentifier.getLoopIdentifier(lunaticXmlCollectedData.getVariableName(), variablesMap, i)) + .idParent(LoopIdentifier.getRelatedVariableName(lunaticXmlCollectedData.getVariableName(), variablesMap)) + .build()); + dataCount++; } } } - surveyUnitModel.setCollectedVariables(variablesUpdate); + surveyUnitModel.setCollectedVariables(variableModels); //Return null if no data and not COLLECTED if(dataCount > 0 || dataState.equals(DataState.COLLECTED)){ @@ -144,29 +144,31 @@ private static SurveyUnitModel getCollectedDataFromSurveyUnit(LunaticXmlSurveyUn /** - * Extract external data from XML survey unit and put it into DTO + * Extract external data from XML survey unit and put it into Model * @param su XML survey unit - * @param surveyUnitModel DTO to aliment + * @param surveyUnitModel Model to aliment */ - private static void getExternalDataFromSurveyUnit(LunaticXmlSurveyUnit su, SurveyUnitModel surveyUnitModel) { - List externalVariables = new ArrayList<>(); - su.getData().getExternal().forEach(lunaticXmlExternalData -> - externalVariables.add(Variable.builder() - .idVar(lunaticXmlExternalData.getVariableName()) - .values(getValuesFromValueTypeList(lunaticXmlExternalData.getValues())) - .build()) - ); - surveyUnitModel.setExternalVariables(externalVariables); - } + private static void getExternalDataFromSurveyUnit(LunaticXmlSurveyUnit su, SurveyUnitModel surveyUnitModel, VariablesMap variablesMap) { + List variableModels = new ArrayList<>(); - private static List getValuesFromValueTypeList(List valueTypeList) { - if (!valueTypeList.isEmpty()){ - return valueTypeList.stream() - .map(ValueType::getValue) - .filter(Objects::nonNull) - .toList(); + for(LunaticXmlOtherData lunaticXmlExternalData : su.getData().getExternal()){ + List valueTypeList = lunaticXmlExternalData.getValues(); + if(valueTypeList == null) { + continue; //Go to next data + } + for (int i = 1; i <= valueTypeList.size(); i++) { + List variableValues = new ArrayList<>(); + if (valueTypeList.get(i-1).getValue()!=null) { + variableValues.add(valueTypeList.get(i-1).getValue()); + variableModels.add(VariableModel.builder() + .idVar(lunaticXmlExternalData.getVariableName()) + .values(variableValues) + .idLoop(LoopIdentifier.getLoopIdentifier(lunaticXmlExternalData.getVariableName(), variablesMap, i)) + .idParent(LoopIdentifier.getRelatedVariableName(lunaticXmlExternalData.getVariableName(), variablesMap)) + .build()); + } + } } - return List.of(); + surveyUnitModel.setExternalVariables(variableModels); } - } diff --git a/src/main/java/fr/insee/genesis/controller/dto/SurveyUnitSimplified.java b/src/main/java/fr/insee/genesis/controller/dto/SurveyUnitSimplified.java index cdec5d58..005f8f59 100644 --- a/src/main/java/fr/insee/genesis/controller/dto/SurveyUnitSimplified.java +++ b/src/main/java/fr/insee/genesis/controller/dto/SurveyUnitSimplified.java @@ -1,7 +1,6 @@ package fr.insee.genesis.controller.dto; -import fr.insee.genesis.domain.model.surveyunit.CollectedVariable; -import fr.insee.genesis.domain.model.surveyunit.Variable; +import fr.insee.genesis.domain.model.surveyunit.VariableModel; import fr.insee.genesis.domain.model.surveyunit.Mode; import lombok.Builder; import lombok.Data; @@ -16,6 +15,6 @@ public class SurveyUnitSimplified { private String idCampaign; private String idUE; private Mode mode; - private List variablesUpdate; - private List externalVariables; + private List variablesUpdate; + private List externalVariables; } diff --git a/src/main/java/fr/insee/genesis/controller/rest/responses/ResponseController.java b/src/main/java/fr/insee/genesis/controller/rest/responses/ResponseController.java index e2c5cbbe..393d1350 100644 --- a/src/main/java/fr/insee/genesis/controller/rest/responses/ResponseController.java +++ b/src/main/java/fr/insee/genesis/controller/rest/responses/ResponseController.java @@ -17,10 +17,9 @@ import fr.insee.genesis.controller.sources.xml.LunaticXmlSurveyUnit; import fr.insee.genesis.controller.utils.AuthUtils; import fr.insee.genesis.controller.utils.ControllerUtils; -import fr.insee.genesis.domain.model.surveyunit.CollectedVariable; import fr.insee.genesis.domain.model.surveyunit.Mode; import fr.insee.genesis.domain.model.surveyunit.SurveyUnitModel; -import fr.insee.genesis.domain.model.surveyunit.Variable; +import fr.insee.genesis.domain.model.surveyunit.VariableModel; import fr.insee.genesis.domain.ports.api.LunaticJsonRawDataApiPort; import fr.insee.genesis.domain.ports.api.LunaticXmlRawDataApiPort; import fr.insee.genesis.domain.ports.api.SurveyUnitApiPort; @@ -319,8 +318,8 @@ public ResponseEntity getLatestByUEOneObject(@RequestParam @RequestParam("idQuestionnaire") String idQuestionnaire, @RequestParam("mode") Mode mode) { List responses = surveyUnitService.findLatestByIdAndByIdQuestionnaire(idUE, idQuestionnaire); - List outputVariables = new ArrayList<>(); - List outputExternalVariables = new ArrayList<>(); + List outputVariables = new ArrayList<>(); + List outputExternalVariables = new ArrayList<>(); responses.stream().filter(rep -> rep.getMode().equals(mode)).forEach(response -> { outputVariables.addAll(response.getCollectedVariables()); outputExternalVariables.addAll(response.getExternalVariables()); @@ -346,8 +345,8 @@ public ResponseEntity> getLatestForUEList(@RequestPar idUEs.forEach(idUE -> { List responses = surveyUnitService.findLatestByIdAndByIdQuestionnaire(idUE.getIdUE(), idQuestionnaire); modes.forEach(mode -> { - List outputVariables = new ArrayList<>(); - List outputExternalVariables = new ArrayList<>(); + List outputVariables = new ArrayList<>(); + List outputExternalVariables = new ArrayList<>(); responses.stream().filter(rep -> rep.getMode().equals(mode)).forEach(response -> { outputVariables.addAll(response.getCollectedVariables()); outputExternalVariables.addAll(response.getExternalVariables()); diff --git a/src/main/java/fr/insee/genesis/domain/model/surveyunit/CollectedVariable.java b/src/main/java/fr/insee/genesis/domain/model/surveyunit/CollectedVariable.java deleted file mode 100644 index 2d88a2d1..00000000 --- a/src/main/java/fr/insee/genesis/domain/model/surveyunit/CollectedVariable.java +++ /dev/null @@ -1,24 +0,0 @@ -package fr.insee.genesis.domain.model.surveyunit; - -import lombok.Builder; -import lombok.Getter; -import lombok.Setter; - -import java.util.List; - - -@Getter -@Setter -public class CollectedVariable extends Variable { - - private String idLoop; - private String idParent; - - @Builder(builderMethodName = "collectedVariableBuilder") - public CollectedVariable(String idVar, List values, String idLoop, String idParent) { - super(idVar, values); - this.idLoop = idLoop; - this.idParent = idParent; - } - -} diff --git a/src/main/java/fr/insee/genesis/domain/model/surveyunit/SurveyUnitModel.java b/src/main/java/fr/insee/genesis/domain/model/surveyunit/SurveyUnitModel.java index 48cad798..13d1b389 100644 --- a/src/main/java/fr/insee/genesis/domain/model/surveyunit/SurveyUnitModel.java +++ b/src/main/java/fr/insee/genesis/domain/model/surveyunit/SurveyUnitModel.java @@ -26,8 +26,8 @@ public class SurveyUnitModel { @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'hh:mm") private LocalDateTime fileDate; - private List collectedVariables; - private List externalVariables; + private List collectedVariables; + private List externalVariables; private String modifiedBy; diff --git a/src/main/java/fr/insee/genesis/domain/model/surveyunit/Variable.java b/src/main/java/fr/insee/genesis/domain/model/surveyunit/Variable.java deleted file mode 100644 index c5066b23..00000000 --- a/src/main/java/fr/insee/genesis/domain/model/surveyunit/Variable.java +++ /dev/null @@ -1,17 +0,0 @@ -package fr.insee.genesis.domain.model.surveyunit; - -import lombok.Builder; -import lombok.Getter; -import lombok.Setter; - -import java.util.List; - -@Builder -@Getter -@Setter -public class Variable { - - private String idVar; - private List values; - -} diff --git a/src/main/java/fr/insee/genesis/domain/model/surveyunit/VariableModel.java b/src/main/java/fr/insee/genesis/domain/model/surveyunit/VariableModel.java new file mode 100644 index 00000000..c78e7e75 --- /dev/null +++ b/src/main/java/fr/insee/genesis/domain/model/surveyunit/VariableModel.java @@ -0,0 +1,13 @@ +package fr.insee.genesis.domain.model.surveyunit; + +import lombok.Builder; + +import java.util.List; + +@Builder +public record VariableModel( + String idVar, + List values, + String idLoop, + String idParent +) {} diff --git a/src/main/java/fr/insee/genesis/domain/service/surveyunit/SurveyUnitService.java b/src/main/java/fr/insee/genesis/domain/service/surveyunit/SurveyUnitService.java index 689f8e84..b4d8125f 100644 --- a/src/main/java/fr/insee/genesis/domain/service/surveyunit/SurveyUnitService.java +++ b/src/main/java/fr/insee/genesis/domain/service/surveyunit/SurveyUnitService.java @@ -9,12 +9,11 @@ import fr.insee.genesis.controller.dto.VariableDto; import fr.insee.genesis.controller.dto.VariableInputDto; import fr.insee.genesis.controller.dto.VariableStateDto; -import fr.insee.genesis.domain.model.surveyunit.CollectedVariable; import fr.insee.genesis.domain.model.surveyunit.DataState; import fr.insee.genesis.domain.model.surveyunit.IdLoopTuple; import fr.insee.genesis.domain.model.surveyunit.Mode; import fr.insee.genesis.domain.model.surveyunit.SurveyUnitModel; -import fr.insee.genesis.domain.model.surveyunit.Variable; +import fr.insee.genesis.domain.model.surveyunit.VariableModel; import fr.insee.genesis.domain.ports.api.SurveyUnitApiPort; import fr.insee.genesis.domain.ports.spi.SurveyUnitPersistencePort; import fr.insee.genesis.domain.utils.LoopIdentifier; @@ -93,32 +92,33 @@ public List findLatestByIdAndByIdQuestionnaire(String idUE, Str if(latestUpdate.getExternalVariables() == null){ latestUpdate.setExternalVariables(new ArrayList<>()); } - latestUpdate.getCollectedVariables().forEach(colVar -> addedVariables.add(new IdLoopTuple(colVar.getIdVar(), colVar.getIdLoop()))); - latestUpdate.getExternalVariables().forEach(extVar -> addedVariables.add(new IdLoopTuple(extVar.getIdVar(), ""))); + latestUpdate.getCollectedVariables().forEach(colVar -> addedVariables.add(new IdLoopTuple(colVar.idVar(), + colVar.idLoop()))); + latestUpdate.getExternalVariables().forEach(extVar -> addedVariables.add(new IdLoopTuple(extVar.idVar(), ""))); suByMode.forEach(surveyUnitModel -> { - List variablesToKeep = new ArrayList<>(); - List externalToKeep = new ArrayList<>(); + List collectedVariablesToKeep = new ArrayList<>(); + List externalVariablesToKeep = new ArrayList<>(); // We iterate over the variables of the update and add them to the list if they are not already added surveyUnitModel.getCollectedVariables().stream() - .filter(colVar -> !addedVariables.contains(new IdLoopTuple(colVar.getIdVar(), colVar.getIdLoop()))) + .filter(colVar -> !addedVariables.contains(new IdLoopTuple(colVar.idVar(), colVar.idLoop()))) .forEach(colVar -> { - variablesToKeep.add(colVar); - addedVariables.add(new IdLoopTuple(colVar.getIdVar(), colVar.getIdLoop())); + collectedVariablesToKeep.add(colVar); + addedVariables.add(new IdLoopTuple(colVar.idVar(), colVar.idLoop())); }); if (surveyUnitModel.getExternalVariables() != null){ surveyUnitModel.getExternalVariables().stream() - .filter(extVar -> !addedVariables.contains(new IdLoopTuple(extVar.getIdVar(), ""))) + .filter(extVar -> !addedVariables.contains(new IdLoopTuple(extVar.idVar(), ""))) .forEach(extVar -> { - externalToKeep.add(extVar); - addedVariables.add(new IdLoopTuple(extVar.getIdVar(), "")); + externalVariablesToKeep.add(extVar); + addedVariables.add(new IdLoopTuple(extVar.idVar(), "")); }); } // If there are new variables, we add the update to the list of latest updates - if (!variablesToKeep.isEmpty() || !externalToKeep.isEmpty()){ - surveyUnitModel.setCollectedVariables(variablesToKeep); - surveyUnitModel.setExternalVariables(externalToKeep); + if (!collectedVariablesToKeep.isEmpty() || !externalVariablesToKeep.isEmpty()){ + surveyUnitModel.setCollectedVariables(collectedVariablesToKeep); + surveyUnitModel.setExternalVariables(externalVariablesToKeep); latestUpdatesbyVariables.add(surveyUnitModel); } }); @@ -136,7 +136,7 @@ public SurveyUnitDto findLatestValuesByStateByIdAndByIdQuestionnaire(String idUE //Extract variables Map collectedVariableMap = new HashMap<>(); - Map externalVariableMap = new HashMap<>(); + Map externalVariableMap = new HashMap<>(); List surveyUnitModels = surveyUnitPersistencePort.findByIds(idUE, idQuest); List modes = getDistinctsModes(surveyUnitModels); modes.forEach(mode -> { @@ -272,14 +272,14 @@ public List parseEditedVariables( //Collected variables management for(VariableInputDto editedVariableDto : editedCollectedVariables){ - CollectedVariable collectedVariable = CollectedVariable.collectedVariableBuilder() + VariableModel collectedVariable = VariableModel.builder() .idVar(editedVariableDto.getVariableName()) .values(new ArrayList<>()) .idParent(LoopIdentifier.getRelatedVariableName(editedVariableDto.getVariableName(), variablesMap)) .idLoop(editedVariableDto.getIdLoop()) .build(); - collectedVariable.getValues().add(editedVariableDto.getVariableStateInputDto().getValue()); + collectedVariable.values().add(editedVariableDto.getVariableStateInputDto().getValue()); surveyUnitModel.getCollectedVariables().add(collectedVariable); @@ -305,31 +305,31 @@ private static List getDistinctsModes(List surveyUnitMode */ private void extractVariables(SurveyUnitModel surveyUnitModel, Map collectedVariableMap, - Map externalVariableMap) { + Map externalVariableMap) { if(surveyUnitModel.getCollectedVariables() == null){ surveyUnitModel.setCollectedVariables(new ArrayList<>()); } - for (CollectedVariable collectedVariable : surveyUnitModel.getCollectedVariables()) { - IdLoopTuple idLoopTuple = new IdLoopTuple(collectedVariable.getIdVar(), collectedVariable.getIdLoop()); + for (VariableModel collectedVariable : surveyUnitModel.getCollectedVariables()) { + IdLoopTuple idLoopTuple = new IdLoopTuple(collectedVariable.idVar(), collectedVariable.idLoop()); VariableDto variableDto = collectedVariableMap.get(idLoopTuple); //Create variable into map if not exists if (variableDto == null) { variableDto = VariableDto.builder() - .variableName(collectedVariable.getIdVar()) - .idLoop(collectedVariable.getIdLoop()) + .variableName(collectedVariable.idVar()) + .idLoop(collectedVariable.idLoop()) .variableStateDtoList(new ArrayList<>()) .build(); collectedVariableMap.put(idLoopTuple, variableDto); } //Extract variable state - if (!collectedVariable.getValues().isEmpty() && isMostRecentForSameState(surveyUnitModel, variableDto)) { + if (!collectedVariable.values().isEmpty() && isMostRecentForSameState(surveyUnitModel, variableDto)) { variableDto.getVariableStateDtoList().add( VariableStateDto.builder() .state(surveyUnitModel.getState()) .active(isLastVariableState(surveyUnitModel, variableDto)) - .value(collectedVariable.getValues().getFirst()) + .value(collectedVariable.values().getFirst()) .date(surveyUnitModel.getRecordDate()) .build() ); @@ -339,24 +339,26 @@ private void extractVariables(SurveyUnitModel surveyUnitModel, if(surveyUnitModel.getExternalVariables() == null){ surveyUnitModel.setExternalVariables(new ArrayList<>()); } - for(Variable externalVariable : surveyUnitModel.getExternalVariables()){ - VariableDto variableDto = externalVariableMap.get(externalVariable.getIdVar()); + for(VariableModel externalVariable : surveyUnitModel.getExternalVariables()){ + IdLoopTuple idLoopTuple = new IdLoopTuple(externalVariable.idVar(), externalVariable.idLoop()); + VariableDto variableDto = externalVariableMap.get(idLoopTuple); //Create variable into map if not exists if(variableDto == null){ variableDto = VariableDto.builder() - .variableName(externalVariable.getIdVar()) + .variableName(externalVariable.idVar()) + .idLoop(externalVariable.idLoop()) .variableStateDtoList(new ArrayList<>()) .build(); - externalVariableMap.put(externalVariable.getIdVar(), variableDto); + externalVariableMap.put(idLoopTuple, variableDto); } //Extract variable state - if(!externalVariable.getValues().isEmpty() && isMostRecentForSameState(surveyUnitModel, variableDto)){ + if(!externalVariable.values().isEmpty() && isMostRecentForSameState(surveyUnitModel, variableDto)){ variableDto.getVariableStateDtoList().add( VariableStateDto.builder() .state(surveyUnitModel.getState()) .active(isLastVariableState(surveyUnitModel, variableDto)) - .value(externalVariable.getValues().getFirst()) + .value(externalVariable.values().getFirst()) .date(surveyUnitModel.getRecordDate()) .build() ); diff --git a/src/main/java/fr/insee/genesis/domain/utils/DataVerifier.java b/src/main/java/fr/insee/genesis/domain/utils/DataVerifier.java index ab9a5b6d..72953946 100644 --- a/src/main/java/fr/insee/genesis/domain/utils/DataVerifier.java +++ b/src/main/java/fr/insee/genesis/domain/utils/DataVerifier.java @@ -1,10 +1,9 @@ package fr.insee.genesis.domain.utils; import fr.insee.genesis.Constants; -import fr.insee.genesis.domain.model.surveyunit.CollectedVariable; import fr.insee.genesis.domain.model.surveyunit.DataState; import fr.insee.genesis.domain.model.surveyunit.SurveyUnitModel; -import fr.insee.genesis.domain.model.surveyunit.Variable; +import fr.insee.genesis.domain.model.surveyunit.VariableModel; import fr.insee.bpm.metadata.model.VariableType; import fr.insee.bpm.metadata.model.VariablesMap; import lombok.extern.slf4j.Slf4j; @@ -49,8 +48,8 @@ public static void verifySurveyUnits(List suDtosList, Variables for(String idUE : getIdUEs(suDtosList)) { // For each id of the list List srcSuDtosOfIdUE = suDtosList.stream().filter(element -> element.getIdUE().equals(idUE)).toList(); - List correctedCollectedVariables = new ArrayList<>(); - List correctedExternalVariables = new ArrayList<>(); + List correctedCollectedVariables = new ArrayList<>(); + List correctedExternalVariables = new ArrayList<>(); //Get corrected variables collectedVariablesManagement(srcSuDtosOfIdUE, variablesMap, correctedCollectedVariables); @@ -68,8 +67,8 @@ public static void verifySurveyUnits(List suDtosList, Variables private static SurveyUnitModel createForcedDto( List suDtosList, String idUE, - List correctedCollectedVariables, - List correctedExternalVariables + List correctedCollectedVariables, + List correctedExternalVariables ) { SurveyUnitModel sampleSuDto = suDtosList.stream().filter(element -> element.getIdUE().equals(idUE)).toList().getFirst(); SurveyUnitModel newForcedSuDto = SurveyUnitModel.builder() @@ -84,21 +83,24 @@ private static SurveyUnitModel createForcedDto( .externalVariables(new ArrayList<>()) .build(); - for(CollectedVariable correctedCollectedVariable : correctedCollectedVariables){ + for(VariableModel correctedCollectedVariable : correctedCollectedVariables){ newForcedSuDto.getCollectedVariables().add( - new CollectedVariable(correctedCollectedVariable.getIdVar(), - correctedCollectedVariable.getValues() - ,correctedCollectedVariable.getIdLoop() - ,correctedCollectedVariable.getIdParent() - ) + VariableModel.builder() + .idVar(correctedCollectedVariable.idVar()) + .values(correctedCollectedVariable.values()) + .idLoop(correctedCollectedVariable.idLoop()) + .idParent(correctedCollectedVariable.idParent()) + .build() ); } - for(Variable correctedExternalVariable : correctedExternalVariables){ + for(VariableModel correctedExternalVariable : correctedExternalVariables){ newForcedSuDto.getExternalVariables().add( - Variable.builder() - .idVar(correctedExternalVariable.getIdVar()) - .values(correctedExternalVariable.getValues()) + VariableModel.builder() + .idVar(correctedExternalVariable.idVar()) + .values(correctedExternalVariable.values()) + .idLoop(correctedExternalVariable.idLoop()) + .idParent(correctedExternalVariable.idParent()) .build() ); } @@ -126,30 +128,30 @@ private static Set getIdUEs(List suDtosList) { * @param variablesMap variables definitions * @param correctedCollectedVariables FORCED document variables */ - private static void collectedVariablesManagement(List srcSuDtosOfIdUE, VariablesMap variablesMap, List correctedCollectedVariables){ + private static void collectedVariablesManagement(List srcSuDtosOfIdUE, VariablesMap variablesMap, List correctedCollectedVariables){ Set variableNames = new HashSet<>(); - List variablesToVerify = new ArrayList<>(); + List variablesToVerify = new ArrayList<>(); //Sort from more priority to less List sortedSuDtos = srcSuDtosOfIdUE.stream().sorted(Comparator.comparing(surveyUnitDto -> dataStatesPriority.get(surveyUnitDto.getState()))).toList(); //Get more priority variables to verify for(SurveyUnitModel srcSuDto : sortedSuDtos){ - for(CollectedVariable collectedVariable : srcSuDto.getCollectedVariables()){ - if(!variableNames.contains(collectedVariable.getIdVar())){ - variableNames.add(collectedVariable.getIdVar()); + for(VariableModel collectedVariable : srcSuDto.getCollectedVariables()){ + if(!variableNames.contains(collectedVariable.idVar())){ + variableNames.add(collectedVariable.idVar()); variablesToVerify.add(collectedVariable); } } } //Verify variables - for(CollectedVariable collectedVariableToVerify : variablesToVerify){ - if(variablesMap.hasVariable(collectedVariableToVerify.getIdVar())) + for(VariableModel collectedVariableToVerify : variablesToVerify){ + if(variablesMap.hasVariable(collectedVariableToVerify.idVar())) { - CollectedVariable correctedCollectedVariable = verifyCollectedVariable( + VariableModel correctedCollectedVariable = verifyCollectedVariable( collectedVariableToVerify, - variablesMap.getVariable(collectedVariableToVerify.getIdVar()) + variablesMap.getVariable(collectedVariableToVerify.idVar()) ); if(correctedCollectedVariable != null){ @@ -159,11 +161,11 @@ private static void collectedVariablesManagement(List srcSuDtos } } - private static CollectedVariable verifyCollectedVariable(CollectedVariable collectedVariable, fr.insee.bpm.metadata.model.Variable variableDefinition) { + private static VariableModel verifyCollectedVariable(VariableModel collectedVariable, fr.insee.bpm.metadata.model.Variable variableDefinition) { List newValues = new ArrayList<>(); boolean isInvalid = false; - for (String value : collectedVariable.getValues()){ + for (String value : collectedVariable.values()){ if(isParseError(value, variableDefinition.getType())){ isInvalid = true; newValues.add(""); @@ -172,15 +174,16 @@ private static CollectedVariable verifyCollectedVariable(CollectedVariable colle } } - return isInvalid ? new CollectedVariable( - collectedVariable.getIdVar(), - newValues, - collectedVariable.getIdLoop(), - collectedVariable.getIdParent() - ) : null; + + return isInvalid ? VariableModel.builder() + .idVar(collectedVariable.idVar()) + .values(newValues) + .idLoop(collectedVariable.idLoop()) + .idParent(collectedVariable.idParent()) + .build() : null; } - private static void externalVariablesManagement(List srcSuDtosOfIdUE, VariablesMap variablesMap, List correctedExternalVariables) { + private static void externalVariablesManagement(List srcSuDtosOfIdUE, VariablesMap variablesMap, List correctedExternalVariables) { //COLLECTED only Optional collectedSuDtoOpt = srcSuDtosOfIdUE.stream().filter( suDto -> suDto.getState().equals(DataState.COLLECTED) @@ -188,11 +191,11 @@ private static void externalVariablesManagement(List srcSuDtosO //Verify variables if(collectedSuDtoOpt.isPresent()){ - for(Variable variable: collectedSuDtoOpt.get().getExternalVariables()){ - if(variablesMap.hasVariable(variable.getIdVar())) { - Variable correctedExternalVariable = verifyExternalVariable( + for(VariableModel variable: collectedSuDtoOpt.get().getExternalVariables()){ + if(variablesMap.hasVariable(variable.idVar())) { + VariableModel correctedExternalVariable = verifyExternalVariable( variable, - variablesMap.getVariable(variable.getIdVar()) + variablesMap.getVariable(variable.idVar()) ); if (correctedExternalVariable != null) { correctedExternalVariables.add(correctedExternalVariable); @@ -208,11 +211,11 @@ private static void externalVariablesManagement(List srcSuDtosO * @param variableDefinition variable definition of the variable * @return a corrected external variable if there is any parsing error, null otherwise */ - private static Variable verifyExternalVariable(Variable externalVariable, fr.insee.bpm.metadata.model.Variable variableDefinition) { + private static VariableModel verifyExternalVariable(VariableModel externalVariable, fr.insee.bpm.metadata.model.Variable variableDefinition) { List newValues = new ArrayList<>(); boolean isInvalid = false; - for (String value : externalVariable.getValues()){ + for (String value : externalVariable.values()){ if(isParseError(value, variableDefinition.getType())){ isInvalid = true; newValues.add(""); @@ -221,8 +224,8 @@ private static Variable verifyExternalVariable(Variable externalVariable, fr.ins } } - return isInvalid ? Variable.builder() - .idVar(externalVariable.getIdVar()) + return isInvalid ? VariableModel.builder() + .idVar(externalVariable.idVar()) .values(newValues) .build() : null; } diff --git a/src/main/java/fr/insee/genesis/infrastructure/document/surveyunit/ExternalVariable.java b/src/main/java/fr/insee/genesis/infrastructure/document/surveyunit/ExternalVariable.java deleted file mode 100644 index 197c7a98..00000000 --- a/src/main/java/fr/insee/genesis/infrastructure/document/surveyunit/ExternalVariable.java +++ /dev/null @@ -1,16 +0,0 @@ -package fr.insee.genesis.infrastructure.document.surveyunit; - -import lombok.Data; - -import java.io.Serial; -import java.io.Serializable; -import java.util.List; - -@Data -public class ExternalVariable implements Serializable { - - @Serial - private static final long serialVersionUID = 6267528628435012000L; - private String idVar; - private List values; -} \ No newline at end of file diff --git a/src/main/java/fr/insee/genesis/infrastructure/document/surveyunit/SurveyUnitDocument.java b/src/main/java/fr/insee/genesis/infrastructure/document/surveyunit/SurveyUnitDocument.java index 924f0dc5..2f7e47e1 100644 --- a/src/main/java/fr/insee/genesis/infrastructure/document/surveyunit/SurveyUnitDocument.java +++ b/src/main/java/fr/insee/genesis/infrastructure/document/surveyunit/SurveyUnitDocument.java @@ -21,7 +21,7 @@ public class SurveyUnitDocument { private String mode; private LocalDateTime recordDate; private LocalDateTime fileDate; - private List collectedVariables; - private List externalVariables; + private List collectedVariables; + private List externalVariables; private String modifiedBy; } diff --git a/src/main/java/fr/insee/genesis/infrastructure/document/surveyunit/VariableState.java b/src/main/java/fr/insee/genesis/infrastructure/document/surveyunit/VariableDocument.java similarity index 86% rename from src/main/java/fr/insee/genesis/infrastructure/document/surveyunit/VariableState.java rename to src/main/java/fr/insee/genesis/infrastructure/document/surveyunit/VariableDocument.java index cf177107..cb562581 100644 --- a/src/main/java/fr/insee/genesis/infrastructure/document/surveyunit/VariableState.java +++ b/src/main/java/fr/insee/genesis/infrastructure/document/surveyunit/VariableDocument.java @@ -7,7 +7,7 @@ import lombok.Data; @Data -public class VariableState implements Serializable { +public class VariableDocument implements Serializable { @Serial private static final long serialVersionUID = -1576556180669134053L; diff --git a/src/test/java/cucumber/functional_tests/MainDefinitions.java b/src/test/java/cucumber/functional_tests/MainDefinitions.java index 8c60292d..11e8f5c3 100644 --- a/src/test/java/cucumber/functional_tests/MainDefinitions.java +++ b/src/test/java/cucumber/functional_tests/MainDefinitions.java @@ -12,11 +12,10 @@ import fr.insee.genesis.controller.sources.xml.LunaticXmlSurveyUnit; import fr.insee.genesis.controller.utils.AuthUtils; import fr.insee.genesis.controller.utils.ControllerUtils; -import fr.insee.genesis.domain.model.surveyunit.CollectedVariable; import fr.insee.genesis.domain.model.surveyunit.DataState; import fr.insee.genesis.domain.model.surveyunit.Mode; +import fr.insee.genesis.domain.model.surveyunit.VariableModel; import fr.insee.genesis.domain.model.surveyunit.SurveyUnitModel; -import fr.insee.genesis.domain.model.surveyunit.Variable; import fr.insee.genesis.domain.service.rawdata.LunaticJsonRawDataService; import fr.insee.genesis.domain.service.rawdata.LunaticXmlRawDataService; import fr.insee.genesis.domain.service.surveyunit.SurveyUnitQualityService; @@ -29,6 +28,7 @@ import fr.insee.genesis.stubs.SurveyUnitPersistencePortStub; import io.cucumber.java.After; import io.cucumber.java.Before; +import io.cucumber.java.en.And; import io.cucumber.java.en.Given; import io.cucumber.java.en.Then; import io.cucumber.java.en.When; @@ -44,6 +44,7 @@ import java.nio.file.StandardCopyOption; import java.util.ArrayList; import java.util.List; +import java.util.Objects; import java.util.Optional; public class MainDefinitions { @@ -79,6 +80,13 @@ public void init_folder(String directory) throws IOException { Files.createDirectories(inDirectory); } + @Given("We copy data file {string} to that directory") + public void copy_data_file(String dataFile) throws IOException { + Path dataFilePath = Paths.get(TestConstants.TEST_RESOURCES_DIRECTORY).resolve(dataFile); + Files.copy(dataFilePath, this.inDirectory.resolve(dataFilePath.getFileName().toString()), + StandardCopyOption.REPLACE_EXISTING); + } + @When("We create DTOs from file {string} with DDI {string}") public void get_dtos(String fileName, String ddiName) throws IOException, ParserConfigurationException, SAXException, GenesisException, MetadataParserException { @@ -102,13 +110,6 @@ public void get_dtos(String fileName, String ddiName) throws IOException, Parser } } - @When("We copy data file {string} to that directory") - public void copy_data_file(String dataFile) throws IOException { - Path dataFilePath = Paths.get(TestConstants.TEST_RESOURCES_DIRECTORY).resolve(dataFile); - Files.copy(dataFilePath, this.inDirectory.resolve(dataFilePath.getFileName().toString()), - StandardCopyOption.REPLACE_EXISTING); - } - @When("We save data from that directory") public void get_dtos_from_folder() throws Exception { responseController.saveResponsesFromXmlCampaignFolder(this.inDirectory.getFileName().toString(), null, true); @@ -152,99 +153,127 @@ public void check_survey_unit_dto_content(String dataState, String surveyUnitId, && surveyUnitDto.getIdUE().equals(surveyUnitId) ).isNotEmpty(); - Optional concernedDtoOptional = this.surveyUnitModels.stream().filter(dto -> + Optional concernedSurveyUnitModelOptional = this.surveyUnitModels.stream().filter(dto -> dto.getState().toString().equals(dataState) && dto.getIdUE().equals(surveyUnitId) ).findFirst(); - Assertions.assertThat(concernedDtoOptional).isPresent(); + Assertions.assertThat(concernedSurveyUnitModelOptional).isPresent(); - SurveyUnitModel concernedDto = concernedDtoOptional.get(); + SurveyUnitModel concernedSurveyUnitModel = concernedSurveyUnitModelOptional.get(); //Get Variable - Assertions.assertThat(concernedDto.getCollectedVariables()).filteredOn(collectedVariableDto -> - collectedVariableDto.getIdVar().equals(variableName)).isNotEmpty(); + Assertions.assertThat(concernedSurveyUnitModel.getCollectedVariables()).filteredOn(collectedvariableModel -> + collectedvariableModel.idVar().equals(variableName)).isNotEmpty(); - Optional concernedVariableOptional = concernedDto.getCollectedVariables().stream().filter(variable -> - variable.getIdVar().equals(variableName) + Optional concernedCollectedVariableOptional = concernedSurveyUnitModel.getCollectedVariables().stream().filter(variable -> + variable.idVar().equals(variableName) ).findFirst(); - Assertions.assertThat(concernedVariableOptional).isPresent(); + Assertions.assertThat(concernedCollectedVariableOptional).isPresent(); - CollectedVariable concernedVariable = concernedVariableOptional.get(); + VariableModel concernedCollectedVariable = concernedCollectedVariableOptional.get(); //Value assertion - Assertions.assertThat(concernedVariable.getValues()).hasSizeGreaterThan(expectedIndex); + Assertions.assertThat(concernedCollectedVariable.values()).hasSizeGreaterThan(expectedIndex); - Assertions.assertThat(concernedVariable.getValues().get(expectedIndex)).isEqualTo(expectedValue); + Assertions.assertThat(concernedCollectedVariable.values().get(expectedIndex)).isEqualTo(expectedValue); } @Then("We should have {int} values for external variable {string} for survey unit {string}") - public void external_variable_volumetric_check(int expectedNumberOfValues, String externalVariableName, String surveyUnitId) { - //Get DTO - Assertions.assertThat(this.surveyUnitModels).filteredOn(surveyUnitDto -> - surveyUnitDto.getState().equals(DataState.COLLECTED) - && surveyUnitDto.getIdUE().equals(surveyUnitId) - ).isNotEmpty(); - - Optional concernedDtoOptional = this.surveyUnitModels.stream().filter(dto -> - dto.getState().equals(DataState.COLLECTED) - && dto.getIdUE().equals(surveyUnitId) - ).findFirst(); - - Assertions.assertThat(concernedDtoOptional).isPresent(); - - SurveyUnitModel concernedDto = concernedDtoOptional.get(); + public void external_variable_volumetric_check(int expectedNumberOfValues, String externalVariableName, + String interrogationId) { + //Get SurveyUnitModel + Assertions.assertThat(surveyUnitPersistence.getMongoStub()).filteredOn(surveyUnitModel -> + surveyUnitModel.getState().equals(DataState.COLLECTED) + && surveyUnitModel.getIdUE().equals(interrogationId) + ).isNotEmpty().hasSize(1); + + SurveyUnitModel surveyUnitModel = surveyUnitPersistence.getMongoStub().stream().filter(surveyUnitModel1 -> + surveyUnitModel1.getState().equals(DataState.COLLECTED) + && surveyUnitModel1.getIdUE().equals(interrogationId) + ).toList().getFirst(); //Get Variable - Assertions.assertThat(concernedDto.getExternalVariables()).filteredOn(variableDto -> - variableDto.getIdVar().equals(externalVariableName)).isNotEmpty(); + Assertions.assertThat(surveyUnitModel.getExternalVariables()).filteredOn(variableModel -> + variableModel.idVar().equals(externalVariableName)).isNotEmpty(); - Optional concernedVariableOptional = concernedDto.getExternalVariables().stream().filter(variable -> - variable.getIdVar().equals(externalVariableName) + Optional concernedVariableOptional = surveyUnitModel.getExternalVariables().stream().filter(variable -> + variable.idVar().equals(externalVariableName) ).findFirst(); Assertions.assertThat(concernedVariableOptional).isPresent(); - Variable concernedVariable = concernedVariableOptional.get(); + VariableModel concernedVariable = concernedVariableOptional.get(); //Values count assertion - Assertions.assertThat(concernedVariable.getValues()).hasSize(expectedNumberOfValues); + Assertions.assertThat(concernedVariable.values()).hasSize(expectedNumberOfValues); } - @Then("For external variable {string} in survey unit {string} we should have {string} as value number {int}") - public void external_variable_content_check(String externalVariableName, String surveyUnitId, String expectedValue, int expectedValueIndex) { - //Get DTO - Assertions.assertThat(this.surveyUnitModels).filteredOn(surveyUnitDto -> + @And("For external variable {string} in survey unit {string} we should have {string} and loopId {string}") + public void forExternalVariableInSurveyUnitWeShouldHaveForLoop(String externalVariableName, + String interrogationId, + String expectedValue, + String expectedLoopId) { + //Get SurveyUnitModel + Assertions.assertThat(surveyUnitPersistence.getMongoStub()).filteredOn(surveyUnitDto -> surveyUnitDto.getState().equals(DataState.COLLECTED) - && surveyUnitDto.getIdUE().equals(surveyUnitId) - ).isNotEmpty(); + && surveyUnitDto.getIdUE().equals(interrogationId) + ).isNotEmpty().hasSize(1); - Optional concernedDtoOptional = this.surveyUnitModels.stream().filter(dto -> + SurveyUnitModel surveyUnitModel = surveyUnitPersistence.getMongoStub().stream().filter(dto -> dto.getState().equals(DataState.COLLECTED) - && dto.getIdUE().equals(surveyUnitId) - ).findFirst(); + && dto.getIdUE().equals(interrogationId) + ).toList().getFirst(); - Assertions.assertThat(concernedDtoOptional).isPresent(); + //Get Variable + Assertions.assertThat(surveyUnitModel.getExternalVariables()).filteredOn(variableModel -> + variableModel.idVar().equals(externalVariableName) + && Objects.equals(variableModel.idLoop(), expectedLoopId) + ).isNotEmpty().hasSize(1); - SurveyUnitModel concernedDto = concernedDtoOptional.get(); + VariableModel concernedExternalVariable = surveyUnitModel.getExternalVariables().stream().filter(variableModel -> + variableModel.idVar().equals(externalVariableName) + && Objects.equals(variableModel.idLoop(), expectedLoopId) + ).toList().getFirst(); - //Get Variable - Assertions.assertThat(concernedDto.getExternalVariables()).filteredOn(variableDto -> - variableDto.getIdVar().equals(externalVariableName)).isNotEmpty(); + //Value content assertion + Assertions.assertThat(concernedExternalVariable.values()).hasSize(1); + Assertions.assertThat(concernedExternalVariable.values().getFirst()).isEqualTo(expectedValue); + Assertions.assertThat(concernedExternalVariable.idLoop()).isNotNull().isEqualTo(expectedLoopId); + } - Optional concernedVariableOptional = concernedDto.getExternalVariables().stream().filter(variable -> - variable.getIdVar().equals(externalVariableName) - ).findFirst(); + @Then("For external variable {string} in survey unit {string} we should have {string} as idLoop and {string} as first " + + "value") + public void check_idLoop_and_value(String externalVariableName, String interrogationId, String expectedLoopId, + String expectedValue) { + //Get SurveyUnitModel + Assertions.assertThat(surveyUnitPersistence.getMongoStub()).filteredOn(surveyUnitDto -> + surveyUnitDto.getState().equals(DataState.COLLECTED) + && surveyUnitDto.getIdUE().equals(interrogationId) + ).isNotEmpty().hasSize(1); - Assertions.assertThat(concernedVariableOptional).isPresent(); + SurveyUnitModel surveyUnitModel = surveyUnitPersistence.getMongoStub().stream().filter(dto -> + dto.getState().equals(DataState.COLLECTED) + && dto.getIdUE().equals(interrogationId) + ).toList().getFirst(); + + //Get Variable + Assertions.assertThat(surveyUnitModel.getExternalVariables()).filteredOn(variableModel -> + variableModel.idVar().equals(externalVariableName) + && Objects.equals(variableModel.idLoop(), expectedLoopId) + ).isNotEmpty().hasSize(1); - Variable concernedVariable = concernedVariableOptional.get(); + VariableModel concernedExternalVariable = surveyUnitModel.getExternalVariables().stream().filter(variableModel -> + variableModel.idVar().equals(externalVariableName) + && Objects.equals(variableModel.idLoop(), expectedLoopId) + ).toList().getFirst(); //Value content assertion - Assertions.assertThat(concernedVariable.getValues()).hasSizeGreaterThan(expectedValueIndex); - Assertions.assertThat(concernedVariable.getValues().get(expectedValueIndex)).isEqualTo(expectedValue); + Assertions.assertThat(concernedExternalVariable.idLoop()).isNotNull().isEqualTo(expectedLoopId); + Assertions.assertThat(concernedExternalVariable.values()).hasSize(1); + Assertions.assertThat(concernedExternalVariable.values().getFirst()).isEqualTo(expectedValue); } @After diff --git a/src/test/java/fr/insee/genesis/controller/adapter/LunaticXmlAdapterTest.java b/src/test/java/fr/insee/genesis/controller/adapter/LunaticXmlAdapterTest.java index 29ddd262..3d84db65 100644 --- a/src/test/java/fr/insee/genesis/controller/adapter/LunaticXmlAdapterTest.java +++ b/src/test/java/fr/insee/genesis/controller/adapter/LunaticXmlAdapterTest.java @@ -11,10 +11,10 @@ import fr.insee.genesis.controller.sources.xml.LunaticXmlOtherData; import fr.insee.genesis.controller.sources.xml.LunaticXmlSurveyUnit; import fr.insee.genesis.controller.sources.xml.ValueType; -import fr.insee.genesis.domain.model.surveyunit.CollectedVariable; import fr.insee.genesis.domain.model.surveyunit.DataState; import fr.insee.genesis.domain.model.surveyunit.Mode; import fr.insee.genesis.domain.model.surveyunit.SurveyUnitModel; +import fr.insee.genesis.domain.model.surveyunit.VariableModel; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -36,6 +36,7 @@ class LunaticXmlAdapterTest { LunaticXmlSurveyUnit lunaticXmlSurveyUnit7 = new LunaticXmlSurveyUnit(); MetadataModel metadataModel = new MetadataModel(); LunaticXmlSurveyUnit lunaticXmlSurveyUnit8 = new LunaticXmlSurveyUnit(); + LunaticXmlSurveyUnit lunaticXmlSurveyUnit9 = new LunaticXmlSurveyUnit(); @BeforeEach void setUp() { @@ -191,12 +192,27 @@ void setUp() { lunaticXmlSurveyUnit8.setQuestionnaireModelId("idQuest1"); lunaticXmlSurveyUnit8.setData(lunaticXmlData); + //SurveyUnit 9 : External data only + lunaticXmlData = new LunaticXmlData(); + collected = List.of(); + lunaticXmlData.setCollected(collected); + LunaticXmlOtherData lunaticXmlOtherData = new LunaticXmlOtherData(); + lunaticXmlOtherData.setVariableName("extvar1"); + lunaticXmlOtherData.setValues(List.of(new ValueType("ext", "string"))); + external = List.of(lunaticXmlOtherData); + lunaticXmlData.setExternal(external); + lunaticXmlSurveyUnit9.setId("idUE1"); + lunaticXmlSurveyUnit9.setQuestionnaireModelId("idQuest1"); + lunaticXmlSurveyUnit9.setData(lunaticXmlData); + //VariablesMap Group group = new Group(LOOP_NAME, Constants.ROOT_GROUP_NAME); Variable var1 = new Variable("var1", group, VariableType.STRING, "1"); Variable var2 = new Variable("var2", metadataModel.getRootGroup(), VariableType.STRING, "1"); + Variable extvar1 = new Variable("extvar1", group, VariableType.STRING, "1"); metadataModel.getVariables().putVariable(var1); metadataModel.getVariables().putVariable(var2); + metadataModel.getVariables().putVariable(extvar1); } @Test @@ -252,8 +268,8 @@ void test05() { Assertions.assertThat(editedDTO).isPresent(); //Content check - for (CollectedVariable collectedVariable : editedDTO.get().getCollectedVariables()) { - Assertions.assertThat(collectedVariable.getValues()).containsAnyOf("1e", "2e").doesNotContain("1", "2"); + for (VariableModel collectedVariable : editedDTO.get().getCollectedVariables()) { + Assertions.assertThat(collectedVariable.values()).containsAnyOf("1e", "2e").doesNotContain("1", "2"); } } @@ -315,11 +331,11 @@ void test09() { Assertions.assertThat(suDtos).hasSize(1); Assertions.assertThat(suDtos.getFirst().getCollectedVariables()).filteredOn(collectedVariableDto -> - collectedVariableDto.getIdVar().equals("var3")).isNotEmpty(); + collectedVariableDto.idVar().equals("var3")).isNotEmpty(); Assertions.assertThat(suDtos.getFirst().getCollectedVariables().stream().filter(collectedVariableDto -> - collectedVariableDto.getIdVar().equals("var3")).toList().getFirst().getIdParent()).isNull(); + collectedVariableDto.idVar().equals("var3")).toList().getFirst().idParent()).isNull(); Assertions.assertThat(suDtos.getFirst().getCollectedVariables().stream().filter(collectedVariableDto -> - collectedVariableDto.getIdVar().equals("var3")).toList().getFirst().getIdLoop()).isEqualTo(Constants.ROOT_GROUP_NAME); + collectedVariableDto.idVar().equals("var3")).toList().getFirst().idLoop()).isEqualTo(Constants.ROOT_GROUP_NAME); } @Test @@ -332,11 +348,11 @@ void test10() { Assertions.assertThat(suDtos).hasSize(1); Assertions.assertThat(suDtos.getFirst().getCollectedVariables()).filteredOn(collectedVariableDto -> - collectedVariableDto.getIdVar().equals("var1_MISSING")).isNotEmpty(); + collectedVariableDto.idVar().equals("var1_MISSING")).isNotEmpty(); Assertions.assertThat(suDtos.getFirst().getCollectedVariables().stream().filter(collectedVariableDto -> - collectedVariableDto.getIdVar().equals("var1_MISSING")).toList().getFirst().getIdParent()).isNotNull().isEqualTo("var1"); + collectedVariableDto.idVar().equals("var1_MISSING")).toList().getFirst().idParent()).isNotNull().isEqualTo("var1"); Assertions.assertThat(suDtos.getFirst().getCollectedVariables().stream().filter(collectedVariableDto -> - collectedVariableDto.getIdVar().equals("var1_MISSING")).toList().getFirst().getIdLoop()).isNotEqualTo(Constants.ROOT_GROUP_NAME).isEqualTo(LOOP_NAME); + collectedVariableDto.idVar().equals("var1_MISSING")).toList().getFirst().idLoop()).isNotEqualTo(Constants.ROOT_GROUP_NAME).isEqualTo(LOOP_NAME); } @Test @@ -348,13 +364,29 @@ void test11(){ Assertions.assertThat(suDtos).hasSize(1); Assertions.assertThat(suDtos.getFirst().getCollectedVariables()).hasSize(3); Assertions.assertThat(suDtos.getFirst().getCollectedVariables()).filteredOn(collectedVariableDto -> - collectedVariableDto.getIdVar().equals("var1")).isNotEmpty(); + collectedVariableDto.idVar().equals("var1")).isNotEmpty(); Assertions.assertThat(suDtos.getFirst().getCollectedVariables()).filteredOn(collectedVariableDto -> - collectedVariableDto.getIdLoop().equals("BOUCLE1_1")).isEmpty(); + collectedVariableDto.idLoop().equals("BOUCLE1_1")).isEmpty(); Assertions.assertThat(suDtos.getFirst().getCollectedVariables().stream().filter(collectedVariableDto -> - collectedVariableDto.getIdLoop().equals("BOUCLE1_2")).toList().getFirst().getValues().getFirst()).isEqualTo("1"); + collectedVariableDto.idLoop().equals("BOUCLE1_2")).toList().getFirst().values().getFirst()).isEqualTo("1"); Assertions.assertThat(suDtos.getFirst().getCollectedVariables().stream().filter(collectedVariableDto -> - collectedVariableDto.getIdLoop().equals("BOUCLE1_3")).toList().getFirst().getValues().getFirst()).isEqualTo("2"); + collectedVariableDto.idLoop().equals("BOUCLE1_3")).toList().getFirst().values().getFirst()).isEqualTo("2"); + + } + @Test + @DisplayName("External value should be affected in the good loop iteration") + void test12(){ + // When + List suDtos = LunaticXmlAdapter.convert(lunaticXmlSurveyUnit9, metadataModel.getVariables(), ID_CAMPAIGN, Mode.WEB); + // Then + Assertions.assertThat(suDtos).hasSize(1); + Assertions.assertThat(suDtos.getFirst().getCollectedVariables()).isEmpty(); + Assertions.assertThat(suDtos.getFirst().getExternalVariables()).hasSize(1); + Assertions.assertThat(suDtos.getFirst().getExternalVariables().getFirst().idVar()).isEqualTo("extvar1"); + Assertions.assertThat(suDtos.getFirst().getExternalVariables().getFirst().values()).hasSize(1); + Assertions.assertThat(suDtos.getFirst().getExternalVariables().getFirst().values().getFirst()).isEqualTo("ext"); + Assertions.assertThat(suDtos.getFirst().getExternalVariables().getFirst().idLoop()).isEqualTo(LOOP_NAME+"_1"); + Assertions.assertThat(suDtos.getFirst().getExternalVariables().getFirst().idParent()).isEqualTo(Constants.ROOT_GROUP_NAME); } } diff --git a/src/test/java/fr/insee/genesis/controller/rest/HealthCheckControllerTest.java b/src/test/java/fr/insee/genesis/controller/rest/HealthCheckControllerTest.java index 8b85eac3..1dd54314 100644 --- a/src/test/java/fr/insee/genesis/controller/rest/HealthCheckControllerTest.java +++ b/src/test/java/fr/insee/genesis/controller/rest/HealthCheckControllerTest.java @@ -1,10 +1,9 @@ package fr.insee.genesis.controller.rest; -import fr.insee.genesis.domain.model.surveyunit.CollectedVariable; import fr.insee.genesis.domain.model.surveyunit.DataState; import fr.insee.genesis.domain.model.surveyunit.Mode; import fr.insee.genesis.domain.model.surveyunit.SurveyUnitModel; -import fr.insee.genesis.domain.model.surveyunit.Variable; +import fr.insee.genesis.domain.model.surveyunit.VariableModel; import fr.insee.genesis.domain.ports.api.SurveyUnitApiPort; import fr.insee.genesis.domain.service.surveyunit.SurveyUnitService; import fr.insee.genesis.stubs.ScheduleApiPortStub; @@ -30,12 +29,19 @@ class HealthCheckControllerTest { static void init() { surveyUnitPersistencePortStub = new SurveyUnitPersistencePortStub(); SurveyUnitApiPort surveyUnitApiPort = new SurveyUnitService(surveyUnitPersistencePortStub); - List externalVariableList = new ArrayList<>(); - Variable variable = Variable.builder().idVar("TESTIDVAR").values(List.of(new String[]{"V1", "V2"})).build(); + List externalVariableList = new ArrayList<>(); + VariableModel variable = VariableModel.builder().idVar("TESTIDVAR").values(List.of(new String[]{"V1", "V2"})).build(); externalVariableList.add(variable); - List collectedVariableList = new ArrayList<>(); - CollectedVariable collectedVariable = new CollectedVariable("TESTIDVAR", List.of(new String[]{"V1", "V2"}), "TESTIDLOOP", "TESTIDPARENT"); + List collectedVariableList = new ArrayList<>(); + VariableModel collectedVariable = VariableModel.builder() + .idVar("TESTIDVAR") + .values(List.of(new String[]{"V1", "V2"})) + .idLoop("TESTIDLOOP") + .idParent("TESTIDPARENT") + .build(); + + collectedVariableList.add(collectedVariable); surveyUnitPersistencePortStub.getMongoStub().add(SurveyUnitModel.builder() .idCampaign("TESTIDCAMPAIGN") diff --git a/src/test/java/fr/insee/genesis/controller/rest/UtilsControllerTest.java b/src/test/java/fr/insee/genesis/controller/rest/UtilsControllerTest.java index 9867067a..74e1a571 100644 --- a/src/test/java/fr/insee/genesis/controller/rest/UtilsControllerTest.java +++ b/src/test/java/fr/insee/genesis/controller/rest/UtilsControllerTest.java @@ -3,11 +3,10 @@ import cucumber.TestConstants; import fr.insee.genesis.Constants; import fr.insee.genesis.controller.dto.SurveyUnitId; -import fr.insee.genesis.domain.model.surveyunit.CollectedVariable; import fr.insee.genesis.domain.model.surveyunit.DataState; import fr.insee.genesis.domain.model.surveyunit.Mode; import fr.insee.genesis.domain.model.surveyunit.SurveyUnitModel; -import fr.insee.genesis.domain.model.surveyunit.Variable; +import fr.insee.genesis.domain.model.surveyunit.VariableModel; import fr.insee.genesis.domain.ports.api.SurveyUnitApiPort; import fr.insee.genesis.domain.service.surveyunit.SurveyUnitService; import fr.insee.genesis.domain.service.volumetry.VolumetryLogService; @@ -60,12 +59,18 @@ void reset() throws IOException { //MongoDB stub management surveyUnitPersistencePortStub.getMongoStub().clear(); - List externalVariableList = new ArrayList<>(); - Variable variable = Variable.builder().idVar("TESTIDVAR").values(List.of(new String[]{"V1", "V2"})).build(); + List externalVariableList = new ArrayList<>(); + VariableModel variable = VariableModel.builder().idVar("TESTIDVAR").values(List.of(new String[]{"V1", "V2"})).build(); externalVariableList.add(variable); - List collectedVariableList = new ArrayList<>(); - CollectedVariable collectedVariable = new CollectedVariable("TESTIDVAR", List.of(new String[]{"V1", "V2"}), "TESTIDLOOP", "TESTIDPARENT"); + List collectedVariableList = new ArrayList<>(); + VariableModel collectedVariable = VariableModel.builder() + .idVar("TESTIDVAR") + .values(List.of(new String[]{"V1", "V2"})) + .idLoop("TESTIDLOOP") + .idParent("TESTIDPARENT") + .build(); + collectedVariableList.add(collectedVariable); surveyUnitPersistencePortStub.getMongoStub().add(SurveyUnitModel.builder() .idCampaign("TESTIDCAMPAIGN") @@ -347,12 +352,17 @@ private void addAdditionalDtoToMongoStub(String idQuestionnaire) { } private void addAdditionalDtoToMongoStub(String idCampaign, String idQuestionnaire) { - List externalVariableList = new ArrayList<>(); - Variable variable = Variable.builder().idVar("TESTIDVAR").values(List.of(new String[]{"V1", "V2"})).build(); + List externalVariableList = new ArrayList<>(); + VariableModel variable = VariableModel.builder().idVar("TESTIDVAR").values(List.of(new String[]{"V1", "V2"})).build(); externalVariableList.add(variable); - List collectedVariableList = new ArrayList<>(); - CollectedVariable collectedVariable = new CollectedVariable("TESTIDVAR", List.of(new String[]{"V1", "V2"}), "TESTIDLOOP", "TESTIDPARENT"); + List collectedVariableList = new ArrayList<>(); + VariableModel collectedVariable = VariableModel.builder() + .idVar("TESTIDVAR") + .values(List.of(new String[]{"V1", "V2"})) + .idLoop("TESTIDLOOP") + .idParent("TESTIDPARENT") + .build(); collectedVariableList.add(collectedVariable); SurveyUnitModel recentDTO = SurveyUnitModel.builder() diff --git a/src/test/java/fr/insee/genesis/controller/rest/responses/ResponseControllerTest.java b/src/test/java/fr/insee/genesis/controller/rest/responses/ResponseControllerTest.java index c1cb23a2..3745e026 100644 --- a/src/test/java/fr/insee/genesis/controller/rest/responses/ResponseControllerTest.java +++ b/src/test/java/fr/insee/genesis/controller/rest/responses/ResponseControllerTest.java @@ -432,11 +432,11 @@ void saveEditedTest() { Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getFirst().getExternalVariables()).isEmpty(); Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getFirst().getCollectedVariables()).hasSize(1); - Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getFirst().getCollectedVariables().getFirst().getIdVar()).isEqualTo(idVar); - Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getFirst().getCollectedVariables().getFirst().getIdLoop()).isEqualTo(idLoop); - Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getFirst().getCollectedVariables().getFirst().getIdParent()).isEqualTo(Constants.ROOT_GROUP_NAME); - Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getFirst().getCollectedVariables().getFirst().getValues()).hasSize(1); - Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getFirst().getCollectedVariables().getFirst().getValues().getFirst()).isEqualTo(editedValue); + Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getFirst().getCollectedVariables().getFirst().idVar()).isEqualTo(idVar); + Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getFirst().getCollectedVariables().getFirst().idLoop()).isEqualTo(idLoop); + Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getFirst().getCollectedVariables().getFirst().idParent()).isEqualTo(Constants.ROOT_GROUP_NAME); + Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getFirst().getCollectedVariables().getFirst().values()).hasSize(1); + Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getFirst().getCollectedVariables().getFirst().values().getFirst()).isEqualTo(editedValue); Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getFirst().getModifiedBy()).isNull(); } @@ -498,11 +498,11 @@ void saveEditedTest_DocumentEdited() { Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getFirst().getExternalVariables()).isEmpty(); Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getFirst().getCollectedVariables()).hasSize(2); - Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getFirst().getCollectedVariables().getFirst().getIdVar()).isEqualTo(idVar); - Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getFirst().getCollectedVariables().getFirst().getIdLoop()).isEqualTo(idLoop); - Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getFirst().getCollectedVariables().getFirst().getIdParent()).isEqualTo(Constants.ROOT_GROUP_NAME); - Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getFirst().getCollectedVariables().getFirst().getValues()).hasSize(1); - Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getFirst().getCollectedVariables().getFirst().getValues().getFirst()).isEqualTo(editedValue); + Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getFirst().getCollectedVariables().getFirst().idVar()).isEqualTo(idVar); + Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getFirst().getCollectedVariables().getFirst().idLoop()).isEqualTo(idLoop); + Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getFirst().getCollectedVariables().getFirst().idParent()).isEqualTo(Constants.ROOT_GROUP_NAME); + Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getFirst().getCollectedVariables().getFirst().values()).hasSize(1); + Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getFirst().getCollectedVariables().getFirst().values().getFirst()).isEqualTo(editedValue); Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getFirst().getModifiedBy()).isNull(); } @@ -564,11 +564,11 @@ void saveEditedTest_DocumentForced() { Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getLast().getExternalVariables()).isEmpty(); Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getLast().getCollectedVariables()).hasSize(1); - Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getLast().getCollectedVariables().getFirst().getIdVar()).isEqualTo(idVar2); - Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getLast().getCollectedVariables().getFirst().getIdLoop()).isEqualTo(idLoop); - Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getLast().getCollectedVariables().getFirst().getIdParent()).isEqualTo(Constants.ROOT_GROUP_NAME); - Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getLast().getCollectedVariables().getFirst().getValues()).hasSize(1); - Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getLast().getCollectedVariables().getFirst().getValues().getFirst()).isNotNull().isEmpty(); + Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getLast().getCollectedVariables().getFirst().idVar()).isEqualTo(idVar2); + Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getLast().getCollectedVariables().getFirst().idLoop()).isEqualTo(idLoop); + Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getLast().getCollectedVariables().getFirst().idParent()).isEqualTo(Constants.ROOT_GROUP_NAME); + Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getLast().getCollectedVariables().getFirst().values()).hasSize(1); + Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getLast().getCollectedVariables().getFirst().values().getFirst()).isNotNull().isEmpty(); Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub().getLast().getModifiedBy()).isNull(); } @Test diff --git a/src/test/java/fr/insee/genesis/controller/rest/responses/Utils.java b/src/test/java/fr/insee/genesis/controller/rest/responses/Utils.java index 424bb4b0..e3681493 100644 --- a/src/test/java/fr/insee/genesis/controller/rest/responses/Utils.java +++ b/src/test/java/fr/insee/genesis/controller/rest/responses/Utils.java @@ -1,11 +1,10 @@ package fr.insee.genesis.controller.rest.responses; import cucumber.TestConstants; -import fr.insee.genesis.domain.model.surveyunit.CollectedVariable; import fr.insee.genesis.domain.model.surveyunit.DataState; import fr.insee.genesis.domain.model.surveyunit.Mode; import fr.insee.genesis.domain.model.surveyunit.SurveyUnitModel; -import fr.insee.genesis.domain.model.surveyunit.Variable; +import fr.insee.genesis.domain.model.surveyunit.VariableModel; import fr.insee.genesis.stubs.SurveyUnitPersistencePortStub; import java.io.File; @@ -184,12 +183,19 @@ static void addAdditionalDtoToMongoStub(String idCampaign, String idQuestionnair static void addAdditionalDtoToMongoStub(String idCampaign, String idQuestionnaire, LocalDateTime fileDate, LocalDateTime recordDate, SurveyUnitPersistencePortStub surveyUnitPersistencePortStub) { - List externalVariableList = new ArrayList<>(); - Variable variable = Variable.builder().idVar("TESTIDVAR").values(List.of(new String[]{"V1", "V2"})).build(); - externalVariableList.add(variable); + List externalVariableList = new ArrayList<>(); + VariableModel externalVariable = VariableModel.builder().idVar("TESTIDVAR").values(List.of(new String[]{"V1", "V2"})).build(); + externalVariableList.add(externalVariable); + + List collectedVariableList = new ArrayList<>(); + VariableModel collectedVariable = VariableModel.builder() + .idVar("TESTIDVAR") + .values(List.of(new String[]{"V1", "V2"})) + .idLoop("TESTIDLOOP") + .idParent("TESTIDPARENT") + .build(); + - List collectedVariableList = new ArrayList<>(); - CollectedVariable collectedVariable = new CollectedVariable("TESTIDVAR", List.of(new String[]{"V1", "V2"}), "TESTIDLOOP", "TESTIDPARENT"); collectedVariableList.add(collectedVariable); SurveyUnitModel recentDTO = SurveyUnitModel.builder() @@ -214,12 +220,18 @@ static void addAdditionalDtoToMongoStub(DataState state, LocalDateTime fileDate, LocalDateTime recordDate, SurveyUnitPersistencePortStub surveyUnitPersistencePortStub) { - List externalVariableList = new ArrayList<>(); - Variable variable = Variable.builder().idVar("TESTIDVAR").values(List.of(new String[]{externalVariableValue})).build(); + List externalVariableList = new ArrayList<>(); + VariableModel variable = VariableModel.builder().idVar("TESTIDVAR").values(List.of(new String[]{externalVariableValue})).build(); externalVariableList.add(variable); - List collectedVariableList = new ArrayList<>(); - CollectedVariable collectedVariable = new CollectedVariable("TESTIDVAR", List.of(new String[]{collectedVariableValue}), "TESTIDLOOP", "TESTIDPARENT"); + List collectedVariableList = new ArrayList<>(); + VariableModel collectedVariable = VariableModel.builder() + .idVar("TESTIDVAR") + .values(List.of(new String[]{collectedVariableValue})) + .idLoop("TESTIDLOOP") + .idParent("TESTIDPARENT") + .build(); + collectedVariableList.add(collectedVariable); SurveyUnitModel recentDTO = SurveyUnitModel.builder() diff --git a/src/test/java/fr/insee/genesis/controller/utils/DataVerifierTest.java b/src/test/java/fr/insee/genesis/controller/utils/DataVerifierTest.java index fef9c86c..de6f3006 100644 --- a/src/test/java/fr/insee/genesis/controller/utils/DataVerifierTest.java +++ b/src/test/java/fr/insee/genesis/controller/utils/DataVerifierTest.java @@ -4,11 +4,10 @@ import fr.insee.bpm.metadata.model.MetadataModel; import fr.insee.bpm.metadata.model.VariableType; import fr.insee.bpm.metadata.model.VariablesMap; -import fr.insee.genesis.domain.model.surveyunit.CollectedVariable; import fr.insee.genesis.domain.model.surveyunit.DataState; import fr.insee.genesis.domain.model.surveyunit.Mode; import fr.insee.genesis.domain.model.surveyunit.SurveyUnitModel; -import fr.insee.genesis.domain.model.surveyunit.Variable; +import fr.insee.genesis.domain.model.surveyunit.VariableModel; import fr.insee.genesis.domain.utils.DataVerifier; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.DisplayName; @@ -92,14 +91,14 @@ static void setUp() { surveyUnitDto.getIdUE().equals("TestUE5") ).toList().getFirst(); - suDto.getCollectedVariables().get(1).getValues().set(0,"1"); + suDto.getCollectedVariables().get(1).values().set(0,"1"); suDto = testSurveyUnitModels.stream().filter(surveyUnitDto -> surveyUnitDto.getIdUE().equals("TestUE13") ).toList().getFirst(); - suDto.getCollectedVariables().get(1).getValues().set(0,"1"); - suDto.getExternalVariables().get(1).getValues().set(0,"1"); + suDto.getCollectedVariables().get(1).values().set(0,"1"); + suDto.getExternalVariables().get(1).values().set(0,"1"); //Valid EDITED variables on 3rd and 7th case for priority test @@ -108,15 +107,15 @@ static void setUp() { && surveyUnitDto.getState().equals(DataState.EDITED) ).toList().getFirst(); - suDtoEdited.getCollectedVariables().getFirst().getValues().set(0,"1"); + suDtoEdited.getCollectedVariables().getFirst().values().set(0,"1"); suDtoEdited = testSurveyUnitModels.stream().filter(surveyUnitDto -> surveyUnitDto.getIdUE().equals("TestUE7") && surveyUnitDto.getState().equals(DataState.EDITED) ).toList().getFirst(); - suDtoEdited.getCollectedVariables().get(0).getValues().set(0,"1"); - suDtoEdited.getCollectedVariables().get(1).getValues().set(0,"1"); + suDtoEdited.getCollectedVariables().get(0).values().set(0,"1"); + suDtoEdited.getCollectedVariables().get(1).values().set(0,"1"); //Remove EDITED variable on 8th case suDtoEdited = testSurveyUnitModels.stream().filter(surveyUnitDto -> @@ -132,8 +131,8 @@ static void setUp() { private static void createCase(int variableNumber, int stateNumber, int valueNumber, boolean hasIncorrectValues, boolean hasExternalVariables, String idUE, List testSurveyUnitModels, VariablesMap variablesMap) { for(int stateIndex = 0; stateIndex < stateNumber; stateIndex++){ - List variableUpdates = new ArrayList<>(); - List externalVariables = new ArrayList<>(); + List collectedVariables = new ArrayList<>(); + List externalVariables = new ArrayList<>(); for(int variableIndex = 0; variableIndex < variableNumber; variableIndex++){ List values = new ArrayList<>(); @@ -149,14 +148,14 @@ private static void createCase(int variableNumber, int stateNumber, int valueNum ? "?" : String.valueOf(valueIndex + 1)); } - variableUpdates.add(CollectedVariable.collectedVariableBuilder() + collectedVariables.add(VariableModel.builder() .idVar("testInteger" + variableIndex) .values(new ArrayList<>(values)) .build() ); if(hasExternalVariables){ - externalVariables.add(Variable.builder() + externalVariables.add(VariableModel.builder() .idVar("testInteger" + variableIndex) .values(new ArrayList<>(values)) .build() @@ -171,11 +170,11 @@ private static void createCase(int variableNumber, int stateNumber, int valueNum .state(stateIndex % 2 == 0 ? DataState.COLLECTED : DataState.EDITED) .mode(Mode.WEB) .recordDate(LocalDateTime.now()) - .collectedVariables(new ArrayList<>(variableUpdates)) + .collectedVariables(new ArrayList<>(collectedVariables)) .externalVariables(new ArrayList<>(externalVariables)) .build(); - variableUpdates.clear(); + collectedVariables.clear(); externalVariables.clear(); testSurveyUnitModels.add(surveyUnitModel); @@ -210,16 +209,16 @@ private void assertCollectedVariableContent(List testSurveyUnit SurveyUnitModel suDto = suDtoOpt.get(); assertThat(suDto.getCollectedVariables().stream().filter(collectedVariableDto -> - collectedVariableDto.getIdVar().equals(variableName) + collectedVariableDto.idVar().equals(variableName) )).isNotEmpty(); assertThat(suDto.getCollectedVariables().stream().filter(collectedVariableDto -> - collectedVariableDto.getIdVar().equals(variableName) + collectedVariableDto.idVar().equals(variableName) ).findFirst()).isPresent(); assertThat(suDto.getCollectedVariables().stream().filter(collectedVariableDto -> - collectedVariableDto.getIdVar().equals(variableName) - ).findFirst().get().getValues().get(valueIndex)).isEqualTo(expectedContent); + collectedVariableDto.idVar().equals(variableName) + ).findFirst().get().values().get(valueIndex)).isEqualTo(expectedContent); } private void assertForcedCollectedVariableExistence(List testSurveyUnitModels, String idUE, String variableName, boolean hasToExist) { @@ -232,9 +231,9 @@ private void assertForcedCollectedVariableExistence(List testSu SurveyUnitModel suDto = suDtoOpt.get(); if(hasToExist) - assertThat(suDto.getCollectedVariables().stream().filter(collectedVariableDto -> collectedVariableDto.getIdVar().equals(variableName)).toList()).isNotEmpty(); + assertThat(suDto.getCollectedVariables().stream().filter(collectedVariableDto -> collectedVariableDto.idVar().equals(variableName)).toList()).isNotEmpty(); else - assertThat(suDto.getCollectedVariables().stream().filter(collectedVariableDto -> collectedVariableDto.getIdVar().equals(variableName)).toList()).isEmpty(); + assertThat(suDto.getCollectedVariables().stream().filter(collectedVariableDto -> collectedVariableDto.idVar().equals(variableName)).toList()).isEmpty(); } private void assertForcedExternalVariableExistence(List testSurveyUnitModels, String idUE, String variableName, boolean hasToExist) { @@ -247,9 +246,9 @@ private void assertForcedExternalVariableExistence(List testSur SurveyUnitModel suDto = suDtoOpt.get(); if(hasToExist) - assertThat(suDto.getExternalVariables().stream().filter(variableDto -> variableDto.getIdVar().equals(variableName)).toList()).isNotEmpty(); + assertThat(suDto.getExternalVariables().stream().filter(variableDto -> variableDto.idVar().equals(variableName)).toList()).isNotEmpty(); else - assertThat(suDto.getExternalVariables().stream().filter(variableDto -> variableDto.getIdVar().equals(variableName)).toList()).isEmpty(); + assertThat(suDto.getExternalVariables().stream().filter(variableDto -> variableDto.idVar().equals(variableName)).toList()).isEmpty(); } private void assertExternalVariableContent(List testSurveyUnitModels, String idUE, String variableName, int valueIndex, String expectedContent) { @@ -265,16 +264,16 @@ private void assertExternalVariableContent(List testSurveyUnitM SurveyUnitModel suDto = suDtoOpt.get(); assertThat(suDto.getExternalVariables().stream().filter(variableDto -> - variableDto.getIdVar().equals(variableName) + variableDto.idVar().equals(variableName) )).isNotEmpty(); assertThat(suDto.getExternalVariables().stream().filter(variableDto -> - variableDto.getIdVar().equals(variableName) + variableDto.idVar().equals(variableName) ).findFirst()).isPresent(); assertThat(suDto.getExternalVariables().stream().filter(variableDto -> - variableDto.getIdVar().equals(variableName) - ).findFirst().get().getValues().get(valueIndex)).isEqualTo(expectedContent); + variableDto.idVar().equals(variableName) + ).findFirst().get().values().get(valueIndex)).isEqualTo(expectedContent); } //Tests diff --git a/src/test/java/fr/insee/genesis/domain/model/surveyunit/SurveyUnitModelTest.java b/src/test/java/fr/insee/genesis/domain/model/surveyunit/SurveyUnitModelTest.java index 7e99578f..afb85ce5 100644 --- a/src/test/java/fr/insee/genesis/domain/model/surveyunit/SurveyUnitModelTest.java +++ b/src/test/java/fr/insee/genesis/domain/model/surveyunit/SurveyUnitModelTest.java @@ -12,12 +12,22 @@ public class SurveyUnitModelTest { @Test public void toJSONTest() throws JsonProcessingException { - List externalVariableList = new ArrayList<>(); - Variable variable = Variable.builder().idVar("TESTIDVAR").values(List.of(new String[]{"V1", "V2"})).build(); - externalVariableList.add(variable); - - List collectedVariableList = new ArrayList<>(); - CollectedVariable collectedVariable = new CollectedVariable("TESTIDVAR", List.of(new String[]{"V1", "V2"}),"TESTIDLOOP","TESTIDPARENT"); + List externalVariableList = new ArrayList<>(); + VariableModel externalVariable = VariableModel.builder() + .idVar("TESTIDVAREXT") + .values(List.of(new String[]{"V1","V2"})) + .idLoop("TESTIDLOOP") + .idParent("TESTIDPARENT") + .build(); + externalVariableList.add(externalVariable); + + List collectedVariableList = new ArrayList<>(); + VariableModel collectedVariable = VariableModel.builder() + .idVar("TESTIDVAR") + .values(List.of(new String[]{"V1","V2"})) + .idLoop("TESTIDLOOP") + .idParent("TESTIDPARENT") + .build(); collectedVariableList.add(collectedVariable); SurveyUnitModel surveyUnitModel = SurveyUnitModel.builder() @@ -35,9 +45,9 @@ public void toJSONTest() throws JsonProcessingException { Assertions.assertNotNull(surveyUnitModel); ObjectMapper objectMapper = new ObjectMapper(); objectMapper.findAndRegisterModules(); - +//TODO ASSERT ID LOOP & ID PARENT Assertions.assertEquals( - objectMapper.readTree("{\"idQuest\":\"TESTIDQUEST\",\"idCampaign\":\"TESTIDCAMPAIGN\",\"idUE\":\"TESTIDUE\",\"state\":\"COLLECTED\",\"mode\":\"WEB\",\"recordDate\":\"2000-01-01T12:00\",\"fileDate\":\"2000-01-01T12:00\",\"collectedVariables\":[{\"idVar\":\"TESTIDVAR\",\"values\":[\"V1\",\"V2\"],\"idLoop\":\"TESTIDLOOP\",\"idParent\":\"TESTIDPARENT\"}],\"externalVariables\":[{\"idVar\":\"TESTIDVAR\",\"values\":[\"V1\",\"V2\"]}], \"modifiedBy\": null}"), + objectMapper.readTree("{\"idQuest\":\"TESTIDQUEST\",\"idCampaign\":\"TESTIDCAMPAIGN\",\"idUE\":\"TESTIDUE\",\"state\":\"COLLECTED\",\"mode\":\"WEB\",\"recordDate\":\"2000-01-01T12:00\",\"fileDate\":\"2000-01-01T12:00\",\"collectedVariables\":[{\"idVar\":\"TESTIDVAR\",\"values\":[\"V1\",\"V2\"],\"idLoop\":\"TESTIDLOOP\",\"idParent\":\"TESTIDPARENT\"}],\"externalVariables\":[{\"idVar\":\"TESTIDVAREXT\",\"values\":[\"V1\",\"V2\"],\"idLoop\":\"TESTIDLOOP\",\"idParent\":\"TESTIDPARENT\"}],\"modifiedBy\": null}"), objectMapper.readTree(objectMapper.writeValueAsString(surveyUnitModel)) ); } diff --git a/src/test/java/fr/insee/genesis/domain/model/surveyunit/CollectedVariableTest.java b/src/test/java/fr/insee/genesis/domain/model/surveyunit/VariableModelTest.java similarity index 84% rename from src/test/java/fr/insee/genesis/domain/model/surveyunit/CollectedVariableTest.java rename to src/test/java/fr/insee/genesis/domain/model/surveyunit/VariableModelTest.java index 0a560c3e..37c67adb 100644 --- a/src/test/java/fr/insee/genesis/domain/model/surveyunit/CollectedVariableTest.java +++ b/src/test/java/fr/insee/genesis/domain/model/surveyunit/VariableModelTest.java @@ -8,10 +8,10 @@ import java.util.ArrayList; import java.util.List; -class CollectedVariableTest { +class VariableModelTest { @Test void toJSONTest() throws JsonProcessingException { - CollectedVariable collectedVariable = CollectedVariable.collectedVariableBuilder() + VariableModel variable = VariableModel.builder() .idVar("TESTIDVAR") .idParent("TESTIDPARENT") .idLoop("TESTIDLOOP") @@ -21,8 +21,7 @@ void toJSONTest() throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.findAndRegisterModules(); - Assertions.assertEquals(objectMapper.readTree(objectMapper.writeValueAsString(collectedVariable)), + Assertions.assertEquals(objectMapper.readTree(objectMapper.writeValueAsString(variable)), objectMapper.readTree("{\"values\":[\"V1\",\"V2\"],\"idVar\":\"TESTIDVAR\",\"idLoop\":\"TESTIDLOOP\",\"idParent\":\"TESTIDPARENT\"}")); - } -} +} \ No newline at end of file diff --git a/src/test/java/fr/insee/genesis/domain/model/surveyunit/VariableTest.java b/src/test/java/fr/insee/genesis/domain/model/surveyunit/VariableTest.java deleted file mode 100644 index 640ff5d4..00000000 --- a/src/test/java/fr/insee/genesis/domain/model/surveyunit/VariableTest.java +++ /dev/null @@ -1,21 +0,0 @@ -package fr.insee.genesis.domain.model.surveyunit; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; - -import java.util.ArrayList; -import java.util.List; - -class VariableTest { - @Test - void toJSONTest() throws JsonProcessingException { - Variable variable = new Variable("TESTIDVAR", new ArrayList<>(List.of(new String[]{"V1", "V2"}))); - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.findAndRegisterModules(); - Assertions.assertEquals(objectMapper.readTree(objectMapper.writeValueAsString(variable)), - objectMapper.readTree("{\"values\":[\"V1\",\"V2\"],\"idVar\":\"TESTIDVAR\"}")); - - } -} diff --git a/src/test/java/fr/insee/genesis/domain/service/SurveyUnitServiceTest.java b/src/test/java/fr/insee/genesis/domain/service/SurveyUnitServiceTest.java index 5ccd0ce1..82fa9cf4 100644 --- a/src/test/java/fr/insee/genesis/domain/service/SurveyUnitServiceTest.java +++ b/src/test/java/fr/insee/genesis/domain/service/SurveyUnitServiceTest.java @@ -1,11 +1,10 @@ package fr.insee.genesis.domain.service; import fr.insee.genesis.controller.dto.SurveyUnitDto; -import fr.insee.genesis.domain.model.surveyunit.CollectedVariable; import fr.insee.genesis.domain.model.surveyunit.DataState; import fr.insee.genesis.domain.model.surveyunit.Mode; import fr.insee.genesis.domain.model.surveyunit.SurveyUnitModel; -import fr.insee.genesis.domain.model.surveyunit.Variable; +import fr.insee.genesis.domain.model.surveyunit.VariableModel; import fr.insee.genesis.domain.service.surveyunit.SurveyUnitService; import fr.insee.genesis.stubs.SurveyUnitPersistencePortStub; import org.assertj.core.api.Assertions; @@ -13,7 +12,6 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import org.springframework.http.ResponseEntity; import java.time.LocalDateTime; import java.time.Month; @@ -30,8 +28,8 @@ class SurveyUnitServiceTest { static SurveyUnitPersistencePortStub surveyUnitPersistencePortStub; //Constants - static final String defaultIdUE = "TESTIDUE"; - static final String defaultIdQuest = "TESTIDQUESTIONNAIRE"; + static final String DEFAULT_ID_UE = "TESTIDUE"; + static final String DEFAULT_ID_QUEST = "TESTIDQUESTIONNAIRE"; @BeforeAll static void init(){ @@ -43,18 +41,27 @@ static void init(){ @BeforeEach void reset(){ surveyUnitPersistencePortStub.getMongoStub().clear(); - List externalVariableList = new ArrayList<>(); - Variable variable = Variable.builder().idVar("TESTIDVAR").values(List.of(new String[]{"V1", "V2"})).build(); + List externalVariableList = new ArrayList<>(); + VariableModel variable = VariableModel.builder() + .idVar("TESTIDVAR") + .values(List.of(new String[]{"V1", "V2"})).build(); externalVariableList.add(variable); - List collectedVariableList = new ArrayList<>(); - CollectedVariable collectedVariable = new CollectedVariable("TESTIDVAR", List.of(new String[]{"V1", "V2"}),"TESTIDLOOP","TESTIDPARENT"); + List collectedVariableList = new ArrayList<>(); + VariableModel collectedVariable = VariableModel.builder() + .idVar("TESTIDVAR") + .values(List.of(new String[]{"V1", "V2"})) + .idLoop("TESTIDLOOP") + .idParent("TESTIDPARENT") + .build(); + + collectedVariableList.add(collectedVariable); surveyUnitPersistencePortStub.getMongoStub().add(SurveyUnitModel.builder() .idCampaign("TESTIDCAMPAIGN") .mode(Mode.WEB) - .idUE(defaultIdUE) - .idQuest(defaultIdQuest) + .idUE(DEFAULT_ID_UE) + .idQuest(DEFAULT_ID_QUEST) .state(DataState.COLLECTED) .fileDate(LocalDateTime.of(2023,1,1,0,0,0)) .recordDate(LocalDateTime.of(2024,1,1,0,0,0)) @@ -69,20 +76,28 @@ void reset(){ void saveAllTest(){ List newSurveyUnitModelList = new ArrayList<>(); - List externalVariableList = new ArrayList<>(); - Variable variable = Variable.builder().idVar("TESTIDVAR").values(List.of(new String[]{"V1", "V2"})).build(); - externalVariableList.add(variable); + List externalVariableList = new ArrayList<>(); + VariableModel externalVariableModel = VariableModel.builder() + .idVar("TESTIDVAR") + .values(List.of(new String[]{"V1", "V2"})).build(); + externalVariableList.add(externalVariableModel); + + List collectedVariableList = new ArrayList<>(); + VariableModel collectedVariableModel = VariableModel.builder() + .idVar("TESTIDVAR") + .values(List.of(new String[]{"V1", "V2"})) + .idLoop("TESTIDLOOP") + .idParent("TESTIDPARENT") + .build(); - List collectedVariableList = new ArrayList<>(); - CollectedVariable collectedVariableDto = new CollectedVariable("TESTIDVAR", List.of(new String[]{"V1", "V2"}),"TESTIDLOOP","TESTIDPARENT"); - collectedVariableList.add(collectedVariableDto); + collectedVariableList.add(collectedVariableModel); newSurveyUnitModelList.add( SurveyUnitModel.builder() .idCampaign("TESTIDCAMPAIGN") .mode(Mode.WEB) .idUE("TESTIDUE2") - .idQuest(defaultIdQuest) + .idQuest(DEFAULT_ID_QUEST) .state(DataState.COLLECTED) .fileDate(LocalDateTime.of(2023,1,1,0,0,0)) .recordDate(LocalDateTime.of(2024,1,1,0,0,0)) @@ -93,46 +108,46 @@ void saveAllTest(){ surveyUnitServiceStatic.saveSurveyUnits(newSurveyUnitModelList); - Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub()).filteredOn(surveyUnitDto -> - surveyUnitDto.getIdCampaign().equals("TESTIDCAMPAIGN") - && surveyUnitDto.getMode().equals(Mode.WEB) - && surveyUnitDto.getIdUE().equals("TESTIDUE2") - && surveyUnitDto.getIdQuest().equals(defaultIdQuest) - && surveyUnitDto.getState().equals(DataState.COLLECTED) - && surveyUnitDto.getFileDate().equals(LocalDateTime.of(2023,1,1,0,0,0)) - && surveyUnitDto.getRecordDate().equals(LocalDateTime.of(2024,1,1,0,0,0)) - && !surveyUnitDto.getExternalVariables().stream().filter( - externalVariable -> externalVariable.getIdVar().equals("TESTIDVAR") - && externalVariable.getValues().containsAll(List.of(new String[]{"V1", "V2"})) + Assertions.assertThat(surveyUnitPersistencePortStub.getMongoStub()).filteredOn(surveyUnitModel -> + surveyUnitModel.getIdCampaign().equals("TESTIDCAMPAIGN") + && surveyUnitModel.getMode().equals(Mode.WEB) + && surveyUnitModel.getIdUE().equals("TESTIDUE2") + && surveyUnitModel.getIdQuest().equals(DEFAULT_ID_QUEST) + && surveyUnitModel.getState().equals(DataState.COLLECTED) + && surveyUnitModel.getFileDate().equals(LocalDateTime.of(2023,1,1,0,0,0)) + && surveyUnitModel.getRecordDate().equals(LocalDateTime.of(2024,1,1,0,0,0)) + && !surveyUnitModel.getExternalVariables().stream().filter( + externalVariable -> externalVariable.idVar().equals("TESTIDVAR") + && externalVariable.values().containsAll(List.of(new String[]{"V1", "V2"})) ).toList().isEmpty() - && !surveyUnitDto.getCollectedVariables().stream().filter( - collectedVariable -> collectedVariable.getIdVar().equals("TESTIDVAR") - && collectedVariable.getValues().containsAll(List.of(new String[]{"V1", "V2"})) + && !surveyUnitModel.getCollectedVariables().stream().filter( + collectedVariable -> collectedVariable.idVar().equals("TESTIDVAR") + && collectedVariable.values().containsAll(List.of(new String[]{"V1", "V2"})) ).toList().isEmpty() ).isNotEmpty(); } @Test void findByIdsUEAndQuestionnaireTest(){ - Assertions.assertThat(surveyUnitServiceStatic.findByIdsUEAndQuestionnaire(defaultIdUE, defaultIdQuest)).filteredOn( + Assertions.assertThat(surveyUnitServiceStatic.findByIdsUEAndQuestionnaire(DEFAULT_ID_UE, DEFAULT_ID_QUEST)).filteredOn( surveyUnitDto -> - surveyUnitDto.getIdUE().equals(defaultIdUE) - && surveyUnitDto.getIdQuest().equals(defaultIdQuest) + surveyUnitDto.getIdUE().equals(DEFAULT_ID_UE) + && surveyUnitDto.getIdQuest().equals(DEFAULT_ID_QUEST) ).isNotEmpty(); } @Test void findByIdUETest(){ - Assertions.assertThat(surveyUnitServiceStatic.findByIdUE(defaultIdUE)).filteredOn( + Assertions.assertThat(surveyUnitServiceStatic.findByIdUE(DEFAULT_ID_UE)).filteredOn( surveyUnitDto -> - surveyUnitDto.getIdUE().equals(defaultIdUE) + surveyUnitDto.getIdUE().equals(DEFAULT_ID_UE) ).isNotEmpty(); } @Test void findByIdQuestionnaireTest(){ - Assertions.assertThat(surveyUnitServiceStatic.findByIdQuestionnaire(defaultIdQuest)).filteredOn( - surveyUnitDto -> surveyUnitDto.getIdQuest().equals(defaultIdQuest) + Assertions.assertThat(surveyUnitServiceStatic.findByIdQuestionnaire(DEFAULT_ID_QUEST)).filteredOn( + surveyUnitDto -> surveyUnitDto.getIdQuest().equals(DEFAULT_ID_QUEST) ).isNotEmpty(); } @@ -140,9 +155,9 @@ void findByIdQuestionnaireTest(){ void findLatestByIdAndByModeTest(){ addAdditionnalDtoToMongoStub(); - Assertions.assertThat(surveyUnitServiceStatic.findLatestByIdAndByIdQuestionnaire(defaultIdUE, defaultIdQuest)).filteredOn( - surveyUnitDto -> surveyUnitDto.getIdUE().equals(defaultIdUE) - && surveyUnitDto.getIdQuest().equals(defaultIdQuest) + Assertions.assertThat(surveyUnitServiceStatic.findLatestByIdAndByIdQuestionnaire(DEFAULT_ID_UE, DEFAULT_ID_QUEST)).filteredOn( + surveyUnitDto -> surveyUnitDto.getIdUE().equals(DEFAULT_ID_UE) + && surveyUnitDto.getIdQuest().equals(DEFAULT_ID_QUEST) && surveyUnitDto.getFileDate().getMonth().equals(Month.FEBRUARY) ).isNotEmpty(); } @@ -157,9 +172,9 @@ void findResponsesByUEAndQuestionnaireTest_null_collectedVariables() { ); surveyUnitPersistencePortStub.getMongoStub().getLast().setCollectedVariables(null); - Assertions.assertThat(surveyUnitServiceStatic.findLatestByIdAndByIdQuestionnaire(defaultIdUE, defaultIdQuest)).filteredOn( - surveyUnitDto -> surveyUnitDto.getIdUE().equals(defaultIdUE) - && surveyUnitDto.getIdQuest().equals(defaultIdQuest) + Assertions.assertThat(surveyUnitServiceStatic.findLatestByIdAndByIdQuestionnaire(DEFAULT_ID_UE, DEFAULT_ID_QUEST)).filteredOn( + surveyUnitDto -> surveyUnitDto.getIdUE().equals(DEFAULT_ID_UE) + && surveyUnitDto.getIdQuest().equals(DEFAULT_ID_QUEST) && surveyUnitDto.getFileDate().getMonth().equals(Month.FEBRUARY) ).isNotEmpty(); } @@ -173,9 +188,9 @@ void findResponsesByUEAndQuestionnaireTest_null_externalVariables() { ); surveyUnitPersistencePortStub.getMongoStub().getLast().setExternalVariables(null); - Assertions.assertThat(surveyUnitServiceStatic.findLatestByIdAndByIdQuestionnaire(defaultIdUE, defaultIdQuest)).filteredOn( - surveyUnitDto -> surveyUnitDto.getIdUE().equals(defaultIdUE) - && surveyUnitDto.getIdQuest().equals(defaultIdQuest) + Assertions.assertThat(surveyUnitServiceStatic.findLatestByIdAndByIdQuestionnaire(DEFAULT_ID_UE, DEFAULT_ID_QUEST)).filteredOn( + surveyUnitDto -> surveyUnitDto.getIdUE().equals(DEFAULT_ID_UE) + && surveyUnitDto.getIdQuest().equals(DEFAULT_ID_QUEST) && surveyUnitDto.getFileDate().getMonth().equals(Month.FEBRUARY) ).isNotEmpty(); } @@ -184,14 +199,14 @@ void findResponsesByUEAndQuestionnaireTest_null_externalVariables() { void findDistinctIdUEsByIdQuestionnaireTest(){ addAdditionnalDtoToMongoStub(); - Assertions.assertThat(surveyUnitServiceStatic.findDistinctIdUEsByIdQuestionnaire(defaultIdQuest)).filteredOn( - surveyUnitId -> surveyUnitId.getIdUE().equals(defaultIdUE) + Assertions.assertThat(surveyUnitServiceStatic.findDistinctIdUEsByIdQuestionnaire(DEFAULT_ID_QUEST)).filteredOn( + surveyUnitId -> surveyUnitId.getIdUE().equals(DEFAULT_ID_UE) ).isNotEmpty().hasSize(1); } @Test void findIdUEsByIdQuestionnaireTest(){ - Assertions.assertThat(surveyUnitServiceStatic.findModesByIdQuestionnaire(defaultIdQuest)).filteredOn( + Assertions.assertThat(surveyUnitServiceStatic.findModesByIdQuestionnaire(DEFAULT_ID_QUEST)).filteredOn( mode -> mode.equals(Mode.WEB) ).isNotEmpty(); } @@ -240,13 +255,13 @@ void findLatestByIdAndByIdQuestionnairePerretTest(){ //When SurveyUnitDto surveyUnitDto = surveyUnitServiceStatic.findLatestValuesByStateByIdAndByIdQuestionnaire( - defaultIdUE, - defaultIdQuest + DEFAULT_ID_UE, + DEFAULT_ID_QUEST ); //Then - Assertions.assertThat(surveyUnitDto.getSurveyUnitId()).isEqualTo(defaultIdUE); + Assertions.assertThat(surveyUnitDto.getSurveyUnitId()).isEqualTo(DEFAULT_ID_UE); Assertions.assertThat(surveyUnitDto.getCollectedVariables().getFirst().getVariableName()) .isEqualTo("TESTIDVAR"); @@ -309,13 +324,13 @@ void findLatestByIdAndByIdQuestionnairePerretTest_null_collectedVariables(){ //When SurveyUnitDto surveyUnitDto = surveyUnitServiceStatic.findLatestValuesByStateByIdAndByIdQuestionnaire( - defaultIdUE, - defaultIdQuest + DEFAULT_ID_UE, + DEFAULT_ID_QUEST ); //Then - Assertions.assertThat(surveyUnitDto.getSurveyUnitId()).isEqualTo(defaultIdUE); + Assertions.assertThat(surveyUnitDto.getSurveyUnitId()).isEqualTo(DEFAULT_ID_UE); Assertions.assertThat(surveyUnitDto.getCollectedVariables().getFirst().getVariableName()) .isEqualTo("TESTIDVAR"); @@ -368,13 +383,13 @@ void findLatestByIdAndByIdQuestionnairePerretTest_null_externalVariables(){ //When SurveyUnitDto surveyUnitDto = surveyUnitServiceStatic.findLatestValuesByStateByIdAndByIdQuestionnaire( - defaultIdUE, - defaultIdQuest + DEFAULT_ID_UE, + DEFAULT_ID_QUEST ); //Then - Assertions.assertThat(surveyUnitDto.getSurveyUnitId()).isEqualTo(defaultIdUE); + Assertions.assertThat(surveyUnitDto.getSurveyUnitId()).isEqualTo(DEFAULT_ID_UE); Assertions.assertThat(surveyUnitDto.getCollectedVariables().getFirst().getVariableName()) .isEqualTo("TESTIDVAR"); @@ -414,19 +429,24 @@ void findLatestByIdAndByIdQuestionnairePerretTest_null_externalVariables(){ } private void addAdditionnalDtoToMongoStub(){ - List externalVariableList = new ArrayList<>(); - Variable variable = Variable.builder().idVar("TESTIDVAR").values(List.of(new String[]{"V1", "V2"})).build(); - externalVariableList.add(variable); - - List collectedVariableList = new ArrayList<>(); - CollectedVariable collectedVariable = new CollectedVariable("TESTIDVAR", List.of(new String[]{"V1", "V2"}),"TESTIDLOOP","TESTIDPARENT"); - collectedVariableList.add(collectedVariable); + List externalVariableList = new ArrayList<>(); + VariableModel externalVariableModel = VariableModel.builder().idVar("TESTIDVAR").values(List.of(new String[]{"V1", "V2"})).build(); + externalVariableList.add(externalVariableModel); + + List collectedVariableList = new ArrayList<>(); + VariableModel collectedVariableModel = VariableModel.builder() + .idVar("TESTIDVAR") + .values(List.of(new String[]{"V1", "V2"})) + .idLoop("TESTIDLOOP") + .idParent("TESTIDPARENT") + .build(); + collectedVariableList.add(collectedVariableModel); SurveyUnitModel recentDTO = SurveyUnitModel.builder() .idCampaign("TESTIDCAMPAIGN") .mode(Mode.WEB) - .idUE(defaultIdUE) - .idQuest(defaultIdQuest) + .idUE(DEFAULT_ID_UE) + .idQuest(DEFAULT_ID_QUEST) .state(DataState.COLLECTED) .fileDate(LocalDateTime.of(2023,2,2,0,0,0)) .recordDate(LocalDateTime.of(2024,2,2,0,0,0)) @@ -437,18 +457,23 @@ private void addAdditionnalDtoToMongoStub(){ } private void addAdditionnalDtoToMongoStub(String idQuestionnaire) { - List externalVariableList = new ArrayList<>(); - Variable variable = Variable.builder().idVar("TESTIDVAR").values(List.of(new String[]{"V1", "V2"})).build(); - externalVariableList.add(variable); - - List collectedVariableList = new ArrayList<>(); - CollectedVariable collectedVariable = new CollectedVariable("TESTIDVAR", List.of(new String[]{"V1", "V2"}), "TESTIDLOOP", "TESTIDPARENT"); - collectedVariableList.add(collectedVariable); + List externalVariableList = new ArrayList<>(); + VariableModel externalVariableModel = VariableModel.builder().idVar("TESTIDVAR").values(List.of(new String[]{"V1", "V2"})).build(); + externalVariableList.add(externalVariableModel); + + List collectedVariableList = new ArrayList<>(); + VariableModel collectedVariableModel = VariableModel.builder() + .idVar("TESTIDVAR") + .values(List.of(new String[]{"V1", "V2"})) + .idLoop("TESTIDLOOP") + .idParent("TESTIDPARENT") + .build(); + collectedVariableList.add(collectedVariableModel); SurveyUnitModel recentDTO = SurveyUnitModel.builder() .idCampaign("TESTIDCAMPAIGN") .mode(Mode.WEB) - .idUE(defaultIdUE) + .idUE(DEFAULT_ID_UE) .idQuest(idQuestionnaire) .state(DataState.COLLECTED) .fileDate(LocalDateTime.of(2023, 2, 2, 0, 0, 0)) @@ -464,19 +489,24 @@ private void addAdditionnalDtoToMongoStub(DataState state, String externalVariableValue, LocalDateTime fileDate, LocalDateTime recordDate) { - List externalVariableList = new ArrayList<>(); - Variable variable = Variable.builder().idVar("TESTIDVAR").values(List.of(new String[]{externalVariableValue})).build(); - externalVariableList.add(variable); - - List collectedVariableList = new ArrayList<>(); - CollectedVariable collectedVariable = new CollectedVariable("TESTIDVAR", List.of(new String[]{collectedVariableValue}), "TESTIDLOOP", "TESTIDPARENT"); + List externalVariableList = new ArrayList<>(); + VariableModel externalVariableModel = VariableModel.builder().idVar("TESTIDVAR").values(List.of(new String[]{externalVariableValue})).build(); + externalVariableList.add(externalVariableModel); + + List collectedVariableList = new ArrayList<>(); + VariableModel collectedVariable = VariableModel.builder() + .idVar("TESTIDVAR") + .values(List.of(new String[]{collectedVariableValue})) + .idLoop("TESTIDLOOP") + .idParent("TESTIDPARENT") + .build(); collectedVariableList.add(collectedVariable); SurveyUnitModel recentDTO = SurveyUnitModel.builder() .idCampaign("TESTIDCAMPAIGN") .mode(Mode.WEB) - .idUE(defaultIdUE) - .idQuest(defaultIdQuest) + .idUE(DEFAULT_ID_UE) + .idQuest(DEFAULT_ID_QUEST) .state(state) .fileDate(fileDate) .recordDate(recordDate) diff --git a/src/test/java/fr/insee/genesis/domain/utils/DataVerifierTest.java b/src/test/java/fr/insee/genesis/domain/utils/DataVerifierTest.java index 8404fe47..87acbb92 100644 --- a/src/test/java/fr/insee/genesis/domain/utils/DataVerifierTest.java +++ b/src/test/java/fr/insee/genesis/domain/utils/DataVerifierTest.java @@ -4,9 +4,9 @@ import fr.insee.bpm.metadata.model.Variable; import fr.insee.bpm.metadata.model.VariableType; import fr.insee.bpm.metadata.model.VariablesMap; -import fr.insee.genesis.domain.model.surveyunit.CollectedVariable; import fr.insee.genesis.domain.model.surveyunit.DataState; import fr.insee.genesis.domain.model.surveyunit.SurveyUnitModel; +import fr.insee.genesis.domain.model.surveyunit.VariableModel; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -35,15 +35,26 @@ void setUp() { variablesMap.putVariable(variableDefinition2); // Setup survey units - CollectedVariable cv1 = new CollectedVariable("var1", List.of("123"), "loop1", "parent1"); - CollectedVariable cv2 = new CollectedVariable("var2", List.of("true"), "loop2", "parent2"); + VariableModel collectedVariable1 = VariableModel.builder() + .idVar("var1") + .values(List.of("123")) + .idLoop("loop1") + .idParent("parent1") + .build(); + + VariableModel collectedVariable2 = VariableModel.builder() + .idVar("var2") + .values(List.of("true")) + .idLoop("loop2") + .idParent("parent2") + .build(); SurveyUnitModel surveyUnit = SurveyUnitModel.builder() .idUE("UE1100000001") .idQuest("Quest1") .idCampaign("Camp1") .state(DataState.COLLECTED) - .collectedVariables(List.of(cv1, cv2)) + .collectedVariables(List.of(collectedVariable1, collectedVariable2)) .externalVariables(List.of()) .build(); @@ -63,8 +74,31 @@ void shouldHandleEmptyValuesList() { @Test void shouldAddForcedSurveyUnit_WhenInvalidCollectedVariable() { + // GIVEN // Add invalid value - surveyUnits.getFirst().getCollectedVariables().getFirst().setValues(List.of("invalid")); + surveyUnits.clear(); + VariableModel collectedVariable1 = VariableModel.builder() + .idVar("var1") + .values(List.of("invalid")) + .idLoop("loop1") + .idParent("parent1") + .build(); + VariableModel collectedVariable2 = VariableModel.builder() + .idVar("var2") + .values(List.of("true")) + .idLoop("loop2") + .idParent("parent2") + .build(); + SurveyUnitModel surveyUnit = SurveyUnitModel.builder() + .idUE("UE1100000001") + .idQuest("Quest1") + .idCampaign("Camp1") + .state(DataState.COLLECTED) + .collectedVariables(List.of(collectedVariable1, collectedVariable2)) + .externalVariables(List.of()) + .build(); + surveyUnits.add(surveyUnit); + // WHEN DataVerifier.verifySurveyUnits(surveyUnits, variablesMap); @@ -85,10 +119,10 @@ void shouldNotAddForcedSurveyUnit_WhenAllVariablesAreValid() { @Test void shouldAddForcedSurveyUnit_WhenInvalidExternalVariable() { - //Add surveyUnit with invalid external Variable - fr.insee.genesis.domain.model.surveyunit.Variable extVar = fr.insee.genesis.domain.model.surveyunit.Variable.builder().idVar("var2").values(List.of("notBoolean")).build(); - List listVarExt = new ArrayList<>(); + VariableModel extVar = VariableModel.builder().idVar("var2").values(List.of( + "notBoolean")).build(); + List listVarExt = new ArrayList<>(); listVarExt.add(extVar); SurveyUnitModel surveyUnitWithInvalidExt = SurveyUnitModel.builder() @@ -113,9 +147,30 @@ void shouldAddForcedSurveyUnit_WhenInvalidExternalVariable() { @Test void shouldCorrectInvalidValuesInForcedSurveyUnit() { + // GIVEN // ADD invalid values - surveyUnits.get(0).getCollectedVariables().get(0).setValues(List.of("invalid", "456")); - surveyUnits.get(0).getCollectedVariables().get(1).setValues(List.of("false")); + surveyUnits.clear(); + VariableModel collectedVariable1 = VariableModel.builder() + .idVar("var1") + .values(List.of("invalid", "456")) + .idLoop("loop1") + .idParent("parent1") + .build(); + VariableModel collectedVariable2 = VariableModel.builder() + .idVar("var2") + .values(List.of("false")) + .idLoop("loop2") + .idParent("parent2") + .build(); + SurveyUnitModel surveyUnit = SurveyUnitModel.builder() + .idUE("UE1100000001") + .idQuest("Quest1") + .idCampaign("Camp1") + .state(DataState.COLLECTED) + .collectedVariables(List.of(collectedVariable1, collectedVariable2)) + .externalVariables(List.of()) + .build(); + surveyUnits.add(surveyUnit); // WHEN DataVerifier.verifySurveyUnits(surveyUnits, variablesMap); @@ -124,7 +179,7 @@ void shouldCorrectInvalidValuesInForcedSurveyUnit() { SurveyUnitModel forcedUnit = surveyUnits.get(1); Assertions.assertEquals(DataState.FORCED, forcedUnit.getState()); Assertions.assertEquals(1, forcedUnit.getCollectedVariables().size()); - Assertions.assertEquals("", forcedUnit.getCollectedVariables().getFirst().getValues().getFirst()); // Corrected values + Assertions.assertEquals("", forcedUnit.getCollectedVariables().getFirst().values().getFirst()); // Corrected values } } diff --git a/src/test/java/fr/insee/genesis/infrastructure/adapter/SurveyUnitModelMongoAdapterTest.java b/src/test/java/fr/insee/genesis/infrastructure/adapter/SurveyUnitModelMongoAdapterTest.java index 5e5a76c2..9d65034f 100644 --- a/src/test/java/fr/insee/genesis/infrastructure/adapter/SurveyUnitModelMongoAdapterTest.java +++ b/src/test/java/fr/insee/genesis/infrastructure/adapter/SurveyUnitModelMongoAdapterTest.java @@ -2,9 +2,8 @@ import fr.insee.genesis.domain.model.surveyunit.Mode; import fr.insee.genesis.domain.model.surveyunit.SurveyUnitModel; -import fr.insee.genesis.infrastructure.document.surveyunit.ExternalVariable; import fr.insee.genesis.infrastructure.document.surveyunit.SurveyUnitDocument; -import fr.insee.genesis.infrastructure.document.surveyunit.VariableState; +import fr.insee.genesis.infrastructure.document.surveyunit.VariableDocument; import fr.insee.genesis.infrastructure.repository.SurveyUnitMongoDBRepository; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.BeforeAll; @@ -45,8 +44,8 @@ static void setUp() { suDoc.setState("COLLECTED"); suDoc.setMode("WEB"); suDoc.setRecordDate(LocalDateTime.now()); - suDoc.setCollectedVariables(List.of(new VariableState())); - suDoc.setExternalVariables(List.of(new ExternalVariable())); + suDoc.setCollectedVariables(List.of(new VariableDocument())); + suDoc.setExternalVariables(List.of(new VariableDocument())); suDoc2= new SurveyUnitDocument(); suDoc2.setIdCampaign("idCampaign"); @@ -55,8 +54,8 @@ static void setUp() { suDoc2.setState("COLLECTED"); suDoc2.setMode("TEL"); suDoc2.setRecordDate(LocalDateTime.now()); - suDoc2.setCollectedVariables(List.of(new VariableState())); - suDoc2.setExternalVariables(List.of(new ExternalVariable())); + suDoc2.setCollectedVariables(List.of(new VariableDocument())); + suDoc2.setExternalVariables(List.of(new VariableDocument())); suDoc3= new SurveyUnitDocument(); suDoc3.setIdCampaign("idCampaign"); @@ -65,8 +64,8 @@ static void setUp() { suDoc3.setState("COLLECTED"); suDoc3.setMode("WEB"); suDoc3.setRecordDate(LocalDateTime.now()); - suDoc3.setCollectedVariables(List.of(new VariableState())); - suDoc3.setExternalVariables(List.of(new ExternalVariable())); + suDoc3.setCollectedVariables(List.of(new VariableDocument())); + suDoc3.setExternalVariables(List.of(new VariableDocument())); } @Test diff --git a/src/test/java/fr/insee/genesis/infrastructure/mapper/SurveyUnitDocumentMapperImplTest.java b/src/test/java/fr/insee/genesis/infrastructure/mapper/SurveyUnitDocumentMapperImplTest.java index f3ca02ba..70d0ce0d 100644 --- a/src/test/java/fr/insee/genesis/infrastructure/mapper/SurveyUnitDocumentMapperImplTest.java +++ b/src/test/java/fr/insee/genesis/infrastructure/mapper/SurveyUnitDocumentMapperImplTest.java @@ -1,14 +1,12 @@ package fr.insee.genesis.infrastructure.mapper; -import fr.insee.genesis.domain.model.surveyunit.CollectedVariable; import fr.insee.genesis.domain.model.surveyunit.DataState; import fr.insee.genesis.domain.model.surveyunit.Mode; import fr.insee.genesis.domain.model.surveyunit.SurveyUnitModel; -import fr.insee.genesis.domain.model.surveyunit.Variable; +import fr.insee.genesis.domain.model.surveyunit.VariableModel; import fr.insee.genesis.infrastructure.mappers.SurveyUnitDocumentMapper; import fr.insee.genesis.infrastructure.mappers.SurveyUnitDocumentMapperImpl; -import fr.insee.genesis.infrastructure.document.surveyunit.ExternalVariable; -import fr.insee.genesis.infrastructure.document.surveyunit.VariableState; +import fr.insee.genesis.infrastructure.document.surveyunit.VariableDocument; import fr.insee.genesis.infrastructure.document.surveyunit.SurveyUnitDocument; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.BeforeAll; @@ -39,26 +37,31 @@ static void init(){ surveyUnitDocumentStatic.setState("COLLECTED"); surveyUnitDocumentStatic.setFileDate(LocalDateTime.of(2023,1,1,0,0,0)); - List externalVariableList = new ArrayList<>(); - ExternalVariable externalVariable = new ExternalVariable(); + List documentExternalVariableList = new ArrayList<>(); + VariableDocument externalVariable = new VariableDocument(); externalVariable.setIdVar("TESTIDVAR"); externalVariable.setValues(List.of(new String[]{"V1", "V2"})); - externalVariableList.add(externalVariable); - surveyUnitDocumentStatic.setExternalVariables(externalVariableList); - - List variableStateList = new ArrayList<>(); - VariableState variableState = new VariableState(); - variableState.setIdVar("TESTIDVAR"); - variableState.setValues(List.of(new String[]{"V1", "V2"})); - variableStateList.add(variableState); - surveyUnitDocumentStatic.setCollectedVariables(variableStateList); - - List externalVariableDtoList = new ArrayList<>(); - Variable variable = Variable.builder().idVar("TESTIDVAR").values(List.of(new String[]{"V1", "V2"})).build(); + documentExternalVariableList.add(externalVariable); + surveyUnitDocumentStatic.setExternalVariables(documentExternalVariableList); + + List documentCollectedVariableList = new ArrayList<>(); + VariableDocument variableDocument = new VariableDocument(); + variableDocument.setIdVar("TESTIDVAR"); + variableDocument.setValues(List.of(new String[]{"V1", "V2"})); + documentCollectedVariableList.add(variableDocument); + surveyUnitDocumentStatic.setCollectedVariables(documentCollectedVariableList); + + List externalVariableDtoList = new ArrayList<>(); + VariableModel variable = VariableModel.builder().idVar("TESTIDVAR").values(List.of(new String[]{"V1", "V2"})).build(); externalVariableDtoList.add(variable); - List collectedVariableList = new ArrayList<>(); - CollectedVariable collectedVariable = new CollectedVariable("TESTIDVAR", List.of(new String[]{"V1", "V2"}),"TESTIDLOOP","TESTIDPARENT"); + List collectedVariableList = new ArrayList<>(); + VariableModel collectedVariable = VariableModel.builder() + .idVar("TESTIDVAR") + .values(List.of(new String[]{"V1", "V2"})) + .idLoop("TESTIDLOOP") + .idParent("TESTIDPARENT") + .build(); collectedVariableList.add(collectedVariable); @@ -99,13 +102,13 @@ void shouldReturnDocumentDtoFromDocument(){ Assertions.assertThat(surveyUnit.getFileDate()).isEqualTo(LocalDateTime.of(2023,1,1,0,0,0)); Assertions.assertThat(surveyUnit.getExternalVariables()).filteredOn(externalVariableDto -> - externalVariableDto.getIdVar().equals("TESTIDVAR") - && externalVariableDto.getValues().containsAll(List.of(new String[]{"V1", "V2"})) + externalVariableDto.idVar().equals("TESTIDVAR") + && externalVariableDto.values().containsAll(List.of(new String[]{"V1", "V2"})) ).isNotEmpty(); Assertions.assertThat(surveyUnit.getCollectedVariables()).filteredOn(variableStateDto -> - variableStateDto.getIdVar().equals("TESTIDVAR") - && variableStateDto.getValues().containsAll(List.of(new String[]{"V1", "V2"})) + variableStateDto.idVar().equals("TESTIDVAR") + && variableStateDto.values().containsAll(List.of(new String[]{"V1", "V2"})) ).isNotEmpty(); } @@ -127,9 +130,9 @@ void shouldReturnDocumentFromDocumentDto(){ && externalVariableDto.getValues().containsAll(List.of(new String[]{"V1", "V2"})) ).isNotEmpty(); - Assertions.assertThat(surveyUnitDocument.getCollectedVariables()).filteredOn(variableStateDto -> - variableStateDto.getIdVar().equals("TESTIDVAR") - && variableStateDto.getValues().containsAll(List.of(new String[]{"V1", "V2"})) + Assertions.assertThat(surveyUnitDocument.getCollectedVariables()).filteredOn(variableDocument -> + variableDocument.getIdVar().equals("TESTIDVAR") + && variableDocument.getValues().containsAll(List.of(new String[]{"V1", "V2"})) ).isNotEmpty(); } @@ -151,13 +154,13 @@ void shouldReturnDocumentLDtoListFromDocumentList(){ Assertions.assertThat(surveyUnitList.getFirst().getFileDate()).isEqualTo(LocalDateTime.of(2023,1,1,0,0,0)); Assertions.assertThat(surveyUnitList.getFirst().getExternalVariables()).filteredOn(externalVariableDto -> - externalVariableDto.getIdVar().equals("TESTIDVAR") - && externalVariableDto.getValues().containsAll(List.of(new String[]{"V1", "V2"})) + externalVariableDto.idVar().equals("TESTIDVAR") + && externalVariableDto.values().containsAll(List.of(new String[]{"V1", "V2"})) ).isNotEmpty(); Assertions.assertThat(surveyUnitList.getFirst().getCollectedVariables()).filteredOn(variableStateDto -> - variableStateDto.getIdVar().equals("TESTIDVAR") - && variableStateDto.getValues().containsAll(List.of(new String[]{"V1", "V2"})) + variableStateDto.idVar().equals("TESTIDVAR") + && variableStateDto.values().containsAll(List.of(new String[]{"V1", "V2"})) ).isNotEmpty(); } @@ -181,9 +184,9 @@ void shouldReturnDocumentListFromDocumentDtoList(){ && externalVariableDto.getValues().containsAll(List.of(new String[]{"V1", "V2"})) ).isNotEmpty(); - Assertions.assertThat(surveyUnitDocumentList.getFirst().getCollectedVariables()).filteredOn(variableStateDto -> - variableStateDto.getIdVar().equals("TESTIDVAR") - && variableStateDto.getValues().containsAll(List.of(new String[]{"V1", "V2"})) + Assertions.assertThat(surveyUnitDocumentList.getFirst().getCollectedVariables()).filteredOn(variableDocument -> + variableDocument.getIdVar().equals("TESTIDVAR") + && variableDocument.getValues().containsAll(List.of(new String[]{"V1", "V2"})) ).isNotEmpty(); } } diff --git a/src/test/resources/data_backup/data.complete.validated.TEST-TABLEAUX.xml b/src/test/resources/data_backup/data.complete.validated.TEST-TABLEAUX.xml new file mode 100644 index 00000000..37d3e141 --- /dev/null +++ b/src/test/resources/data_backup/data.complete.validated.TEST-TABLEAUX.xml @@ -0,0 +1,312 @@ + + + TEST-TABLEAUX + diff --git a/src/test/resources/features/do_we_extract_data.feature b/src/test/resources/features/do_we_extract_data.feature index 8b1483c8..3dacbb3f 100644 --- a/src/test/resources/features/do_we_extract_data.feature +++ b/src/test/resources/features/do_we_extract_data.feature @@ -50,11 +50,12 @@ Feature: Do we extract data ? Scenario Outline: External data extraction Given We have data in directory "" - When We create DTOs from file "" with DDI "" - Then We should have values for external variable "" for survey unit "" - And For external variable "" in survey unit "" we should have "" as value number + Given We copy data file "data_backup/data.complete.validated.STPDv1.20231122164209.xml" to that directory + When We save data from that directory + Then We should have 1 values for external variable "" for survey unit "" + And For external variable "" in survey unit "" we should have "" and loopId "" Examples: - | Directory | FileName | DDIFileName | ExpectedNumberOfValues | ExternalVariableName | SurveyUnitId | ExpectedValue | ExpectedValueIndex | - | SAMPLETEST-PARADATA-v1 | reponse-platine/data.complete.validated.STPDv1.20231122164209.xml |ddi-SAMPLETEST-PARADATA-v1.xml | 1 | RPANAISCONJ | 0000007 | 1986 | 0 | - | SAMPLETEST-PARADATA-v1 | reponse-platine/data.complete.validated.STPDv1.20231122164209.xml |ddi-SAMPLETEST-PARADATA-v1.xml | 2 | RPPRENOM | 0000007 | TESTRPRENOM7_2 | 0 | - | SAMPLETEST-PARADATA-v1 | reponse-platine/data.complete.validated.STPDv1.20231122164209.xml |ddi-SAMPLETEST-PARADATA-v1.xml | 2 | RPPRENOM | 0000007 | TESTRPRENOM7PAR1 | 1 | + | Directory | ExternalVariableName | LoopId | SurveyUnitId | ExpectedValue | + | SAMPLETEST | RPANAISCONJ | B_PRENOMREP_1 | 0000007 | 1986 | + | SAMPLETEST | RPPRENOM | B_PRENOMREP_1 | 0000007 | TESTRPRENOM7_2 | + | SAMPLETEST | RPPRENOM | B_PRENOMREP_2 | 0000007 | TESTRPRENOM7PAR1 | diff --git a/src/test/resources/features/do_we_save_loops.feature b/src/test/resources/features/do_we_save_loops.feature new file mode 100644 index 00000000..87a78d14 --- /dev/null +++ b/src/test/resources/features/do_we_save_loops.feature @@ -0,0 +1,16 @@ +Feature: Do we save loops ? + Everybody wants to know if we can store loop ids into database + + Scenario Outline: Loops in external variables + Given We have data in directory "TEST-TABLEAUX" + Given We copy data file "data_backup/data.complete.validated.TEST-TABLEAUX.xml" to that directory + When We save data from that directory + When We delete that directory + + Then For external variable "" in survey unit "" we should have "" as idLoop and "" as first value + Examples: + | VariableName | InterrogationId | ExpectedIdLoop | ExpectedValue | + | CODESA | AUTO11000 | TABESA_1 | AAA | + | CODESA | AUTO11000 | TABESA_2 | BBB | + | CODESA | AUTO11000 | TABESA_3 | CCC | + | CODESA | AUTO11000 | TABESA_4 | DDD | \ No newline at end of file diff --git a/src/test/resources/specs/TEST-TABLEAUX/WEB/DDI_TEST-TABLEAUX.xml b/src/test/resources/specs/TEST-TABLEAUX/WEB/DDI_TEST-TABLEAUX.xml new file mode 100644 index 00000000..9e49c2fe --- /dev/null +++ b/src/test/resources/specs/TEST-TABLEAUX/WEB/DDI_TEST-TABLEAUX.xml @@ -0,0 +1,8380 @@ + + + fr.insee + INSEE-m1atczym + 1 + + + QNONREG - Questionnaire test - partie 3 - tableaux + + + + fr.insee + RessourcePackage-m1atczym + 1 + + fr.insee + InterviewerInstructionScheme-m1atczym + 1 + + A définir + + + fr.insee + jfazqgv2 + 1 + + help + + + SelfAdministeredQuestionnaire.WebBased + + + SelfAdministeredQuestionnaire.Paper + + + + Ceci est une déclaration de type aide CAWI, associée au titre de séquence. Elle doit s'inscrire en description. + + + + + fr.insee + lvqmnil1 + 1 + + help + + + Interview.Telephone.CATI + + + Interview.FaceToFace.CAPIorCAMI + + + + Ceci est une aide de type aide CATI CAPI, associée au titre de séquence. + + + + + fr.insee + lvqmmlgi + 1 + + instruction + + + Interview.Telephone.CATI + + + Interview.FaceToFace.CAPIorCAMI + + + + Ceci est une consigne de type aide CATI CAPI, associée au titre de séquence. + + + + + fr.insee + lvqmh3un + 1 + + help + + + SelfAdministeredQuestionnaire.WebBased + + + SelfAdministeredQuestionnaire.Paper + + + Interview.Telephone.CATI + + + Interview.FaceToFace.CAPIorCAMI + + + + Un ensemble de tableaux dont le nombre de cellules est connu à l'avance + + + + + fr.insee + l8u8f3sa + 1 + + help + + + SelfAdministeredQuestionnaire.WebBased + + + SelfAdministeredQuestionnaire.Paper + + + Interview.Telephone.CATI + + + Interview.FaceToFace.CAPIorCAMI + + + + "exemple typique. Rappel de la valeur collectée = " || cast(¤lo5g05no-GOP¤,string) + + + + fr.insee + lo5g05no-GOP + 1 + OutParameter + + + + + + fr.insee + l8ubvmec + 1 + + help + + + SelfAdministeredQuestionnaire.WebBased + + + SelfAdministeredQuestionnaire.Paper + + + Interview.Telephone.CATI + + + Interview.FaceToFace.CAPIorCAMI + + + + "Vérifier le déclenchement du contrôle si somme des lignes > 100" + + + + + fr.insee + jfkzltkm-CI-0-II-0 + 1 + + warning + + + + "La somme des lignes est supérieure à 100." + + + + + fr.insee + lvqkzgqh + 1 + + help + + + SelfAdministeredQuestionnaire.WebBased + + + SelfAdministeredQuestionnaire.Paper + + + Interview.Telephone.CATI + + + Interview.FaceToFace.CAPIorCAMI + + + + Pas de cas connu à ce jour + + + + + fr.insee + lvqla8eb + 1 + + help + + + SelfAdministeredQuestionnaire.WebBased + + + SelfAdministeredQuestionnaire.Paper + + + Interview.Telephone.CATI + + + Interview.FaceToFace.CAPIorCAMI + + + + Un cas recensé dans une enquête de conjoncture + + + + + fr.insee + lvqmnduo + 1 + + help + + + SelfAdministeredQuestionnaire.WebBased + + + SelfAdministeredQuestionnaire.Paper + + + Interview.Telephone.CATI + + + Interview.FaceToFace.CAPIorCAMI + + + + Un ensemble de tableaux dits dynamiques, l'enquêté peut ajouter des lignes autant que de besoin. Très classique coté entreprises + + + + + fr.insee + kzy4vwpj-CI-0-II-0 + 1 + + warning + + + + Ne pas mettre un total supérieur à 100 + + + + + + fr.insee + ControlConstructScheme-m1atczym + 1 + + fr.insee + Sequence-m1atczym + 1 + + QNONREG - Questionnaire test - partie 3 - tableaux + + template + + fr.insee + jfaz9kv9 + 1 + Sequence + + + fr.insee + kfxmfvwl + 1 + Sequence + + + + fr.insee + jfaz9kv9 + 1 + + TABLEAUX + + + Tableaux (y compris contrôles) + + + fr.insee + jfazqgv2 + 1 + Instruction + + + fr.insee + lvqmnil1 + 1 + Instruction + + + fr.insee + lvqmmlgi + 1 + Instruction + + module + + fr.insee + lvqmb9rm + 1 + Sequence + + + fr.insee + lvqme91m + 1 + Sequence + + + + fr.insee + lvqmb9rm + 1 + + TABLEAUXFI + + + Tableaux fixes + + + fr.insee + lvqmh3un + 1 + Instruction + + submodule + + fr.insee + l8u8d67h-QC + 1 + QuestionConstruct + + + fr.insee + jfkzltkm-QC + 1 + QuestionConstruct + + + fr.insee + jfkzltkm-CI-0 + 1 + ComputationItem + + + fr.insee + jfkzpexn-QC + 1 + QuestionConstruct + + + fr.insee + jfkzttm3-QC + 1 + QuestionConstruct + + + fr.insee + jfkzrwce-QC + 1 + QuestionConstruct + + + + fr.insee + lvqme91m + 1 + + TABLEAUXDY + + + Tableaux dynamiques + + + fr.insee + lvqmnduo + 1 + Instruction + + submodule + + fr.insee + kzy4vwpj-QC + 1 + QuestionConstruct + + + fr.insee + kzy4vwpj-CI-0 + 1 + ComputationItem + + + fr.insee + m2k828bm-QC + 1 + QuestionConstruct + + + + fr.insee + kfxmfvwl + 1 + + FIN + + + FIN + + module + + + fr.insee + l8u8d67h-QC + 1 + + TABLEAUTIC + + + fr.insee + l8u8d67h + 1 + QuestionGrid + + + + fr.insee + jfkzltkm-QC + 1 + + TABLEAU1A1M + + + fr.insee + jfkzltkm + 1 + QuestionGrid + + + + fr.insee + jfkzpexn-QC + 1 + + TABLEAU1A3M + + + fr.insee + jfkzpexn + 1 + QuestionGrid + + + + fr.insee + jfkzttm3-QC + 1 + + TABLEAU2A + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + fr.insee + jfkzrwce-QC + 1 + + TABLEAU1AH1M + + + fr.insee + jfkzrwce + 1 + QuestionGrid + + + + fr.insee + kzy4vwpj-QC + 1 + + TABESA + + + fr.insee + kzy4vwpj + 1 + QuestionGrid + + + + fr.insee + m2k828bm-QC + 1 + + TABESTANP + + + fr.insee + m2k828bm + 1 + QuestionGrid + + + + fr.insee + jfkzltkm-CI-0 + 1 + + "Tot tableaux supérieur à 100" + + + "Tot tableaux supérieur à 100" + + + fr.insee + jfkzltkm-CI-0-II-0 + 1 + Instruction + + informational + + + vtl + + fr.insee + jfkzltkm-CI-0-IP-1 + 1 + + TABLEAU1A1M11 + + + + fr.insee + jfkzltkm-CI-0-IP-2 + 1 + + TABLEAU1A1M21 + + + + fr.insee + jfkzltkm-CI-0-IP-3 + 1 + + TABLEAU1A1M31 + + + + fr.insee + jfkzltkm-CI-0-IP-4 + 1 + + TABLEAU1A1M41 + + + + fr.insee + jfkzltkm-CI-0-IP-5 + 1 + + TABLEAU1A1M51 + + + + + fr.insee + jfkzltkm-QOP-lvqm7crf + 1 + OutParameter + + + fr.insee + jfkzltkm-CI-0-IP-1 + 1 + InParameter + + + + + fr.insee + jfkzltkm-QOP-lvqmlkh8 + 1 + OutParameter + + + fr.insee + jfkzltkm-CI-0-IP-2 + 1 + InParameter + + + + + fr.insee + jfkzltkm-QOP-lvqm91qy + 1 + OutParameter + + + fr.insee + jfkzltkm-CI-0-IP-3 + 1 + InParameter + + + + + fr.insee + jfkzltkm-QOP-lvqm9sx6 + 1 + OutParameter + + + fr.insee + jfkzltkm-CI-0-IP-4 + 1 + InParameter + + + + + fr.insee + jfkzltkm-QOP-lvqm8clg + 1 + OutParameter + + + fr.insee + jfkzltkm-CI-0-IP-5 + 1 + InParameter + + + nvl(jfkzltkm-CI-0-IP-1,0)+nvl(jfkzltkm-CI-0-IP-2,0)+nvl(jfkzltkm-CI-0-IP-3,0)+nvl(jfkzltkm-CI-0-IP-4,0)+ nvl(jfkzltkm-CI-0-IP-5,0) > 100 + + + + + fr.insee + kzy4vwpj-CI-0 + 1 + + TOT sup à 100 + + + TOT sup à 100 + + + fr.insee + kzy4vwpj-CI-0-II-0 + 1 + Instruction + + warning + + + vtl + + fr.insee + kzy4vwpj-CI-0-IP-1 + 1 + + TOTESA + + + + + fr.insee + kzy6aqqn-GOP + 1 + OutParameter + + + fr.insee + kzy4vwpj-CI-0-IP-1 + 1 + InParameter + + + nvl(kzy4vwpj-CI-0-IP-1,0) > 100 + + + + + + fr.insee + QuestionScheme-m1atczym + 1 + + A définir + + + fr.insee + l8u8d67h + 1 + + TABLEAUTIC + + + fr.insee + l8u8d67h-QOP-l8u8ju3p + 1 + + TABLEAUTIC11 + + + + fr.insee + l8u8d67h-QOP-l8u8ezod + 1 + + TABLEAUTIC21 + + + + fr.insee + l8u8d67h-QOP-l8u85xql + 1 + + TABLEAUTIC31 + + + + fr.insee + l8u8d67h-QOP-l8u80yaz + 1 + + TABLEAUTIC41 + + + + + fr.insee + l8u8d67h-RDOP-l8u8ju3p + 1 + OutParameter + + + fr.insee + l8u8d67h-QOP-l8u8ju3p + 1 + OutParameter + + + + + fr.insee + l8u8d67h-RDOP-l8u8ezod + 1 + OutParameter + + + fr.insee + l8u8d67h-QOP-l8u8ezod + 1 + OutParameter + + + + + fr.insee + l8u8d67h-RDOP-l8u85xql + 1 + OutParameter + + + fr.insee + l8u8d67h-QOP-l8u85xql + 1 + OutParameter + + + + + fr.insee + l8u8d67h-RDOP-l8u80yaz + 1 + OutParameter + + + fr.insee + l8u8d67h-QOP-l8u80yaz + 1 + OutParameter + + + + + "Répartition du nombre d'habitants, et comparaison question INTEGER saisie plus tôt" + + + + + + fr.insee + l8u7vv82 + 1 + CodeList + + + + + + + fr.insee + l8u8d67h-secondDimension-fakeCL-1 + 1 + CodeList + + + + + + + + 0 + 20 + + Decimal + + fr.insee + l8u8d67h-RDOP-l8u8ju3p + 1 + + + + + + + + + + + + + 0 + 20 + + Decimal + + fr.insee + l8u8d67h-RDOP-l8u8ezod + 1 + + + + + + + + + + + + + 0 + 20 + + Decimal + + fr.insee + l8u8d67h-RDOP-l8u85xql + 1 + + + + + + + + + + + + + 0 + 20 + + Decimal + + fr.insee + l8u8d67h-RDOP-l8u80yaz + 1 + + + + + + + + + + + + fr.insee + l8u8f3sa + 1 + Instruction + + + + fr.insee + jfkzltkm + 1 + + TABLEAU1A1M + + + fr.insee + jfkzltkm-QOP-lvqm7crf + 1 + + TABLEAU1A1M11 + + + + fr.insee + jfkzltkm-QOP-lvqmlkh8 + 1 + + TABLEAU1A1M21 + + + + fr.insee + jfkzltkm-QOP-lvqm91qy + 1 + + TABLEAU1A1M31 + + + + fr.insee + jfkzltkm-QOP-lvqm9sx6 + 1 + + TABLEAU1A1M41 + + + + fr.insee + jfkzltkm-QOP-lvqm8clg + 1 + + TABLEAU1A1M51 + + + + + fr.insee + jfkzltkm-RDOP-lvqm7crf + 1 + OutParameter + + + fr.insee + jfkzltkm-QOP-lvqm7crf + 1 + OutParameter + + + + + fr.insee + jfkzltkm-RDOP-lvqmlkh8 + 1 + OutParameter + + + fr.insee + jfkzltkm-QOP-lvqmlkh8 + 1 + OutParameter + + + + + fr.insee + jfkzltkm-RDOP-lvqm91qy + 1 + OutParameter + + + fr.insee + jfkzltkm-QOP-lvqm91qy + 1 + OutParameter + + + + + fr.insee + jfkzltkm-RDOP-lvqm9sx6 + 1 + OutParameter + + + fr.insee + jfkzltkm-QOP-lvqm9sx6 + 1 + OutParameter + + + + + fr.insee + jfkzltkm-RDOP-lvqm8clg + 1 + OutParameter + + + fr.insee + jfkzltkm-QOP-lvqm8clg + 1 + OutParameter + + + + + "Tableau un axe simple, une mesure, sans unité" + + + + + + fr.insee + jfkxgkqx + 1 + CodeList + + + + + + + fr.insee + jfkzltkm-secondDimension-fakeCL-1 + 1 + CodeList + + + + + + + + 0 + 100 + + Decimal + + fr.insee + jfkzltkm-RDOP-lvqm7crf + 1 + + + + + + + + + + + + + 0 + 100 + + Decimal + + fr.insee + jfkzltkm-RDOP-lvqmlkh8 + 1 + + + + + + + + + + + + + 0 + 100 + + Decimal + + fr.insee + jfkzltkm-RDOP-lvqm91qy + 1 + + + + + + + + + + + + + 0 + 100 + + Decimal + + fr.insee + jfkzltkm-RDOP-lvqm9sx6 + 1 + + + + + + + + + + + + + 0 + 100 + + Decimal + + fr.insee + jfkzltkm-RDOP-lvqm8clg + 1 + + + + + + + + + + + + fr.insee + l8ubvmec + 1 + Instruction + + + + fr.insee + jfkzpexn + 1 + + TABLEAU1A3M + + + fr.insee + jfkzpexn-QOP-lvqm9mzt + 1 + + TABLEAU1A3M11 + + + + fr.insee + jfkzpexn-QOP-lvqmimh1 + 1 + + TABLEAU1A3M21 + + + + fr.insee + jfkzpexn-QOP-lvqmeli8 + 1 + + TABLEAU1A3M31 + + + + fr.insee + jfkzpexn-QOP-lvqmqe2q + 1 + + TABLEAU1A3M41 + + + + fr.insee + jfkzpexn-QOP-lvqm77b2 + 1 + + TABLEAU1A3M51 + + + + fr.insee + jfkzpexn-QOP-lvqmf59x + 1 + + TABLEAU1A3M12 + + + + fr.insee + jfkzpexn-QOP-lvqmmt6o + 1 + + TABLEAU1A3M22 + + + + fr.insee + jfkzpexn-QOP-lvqmfli2 + 1 + + TABLEAU1A3M32 + + + + fr.insee + jfkzpexn-QOP-lvqm9lha + 1 + + TABLEAU1A3M42 + + + + fr.insee + jfkzpexn-QOP-lvqmp1la + 1 + + TABLEAU1A3M52 + + + + fr.insee + jfkzpexn-QOP-lvqm79mk + 1 + + TABLEAU1A3M13 + + + + fr.insee + jfkzpexn-QOP-lvqmahs1 + 1 + + TABLEAU1A3M23 + + + + fr.insee + jfkzpexn-QOP-lvqmmp7g + 1 + + TABLEAU1A3M33 + + + + fr.insee + jfkzpexn-QOP-lvqme541 + 1 + + TABLEAU1A3M43 + + + + fr.insee + jfkzpexn-QOP-lvqmnl7n + 1 + + TABLEAU1A3M53 + + + + + fr.insee + jfkzpexn-RDOP-lvqm9mzt + 1 + OutParameter + + + fr.insee + jfkzpexn-QOP-lvqm9mzt + 1 + OutParameter + + + + + fr.insee + jfkzpexn-RDOP-lvqmimh1 + 1 + OutParameter + + + fr.insee + jfkzpexn-QOP-lvqmimh1 + 1 + OutParameter + + + + + fr.insee + jfkzpexn-RDOP-lvqmeli8 + 1 + OutParameter + + + fr.insee + jfkzpexn-QOP-lvqmeli8 + 1 + OutParameter + + + + + fr.insee + jfkzpexn-RDOP-lvqmqe2q + 1 + OutParameter + + + fr.insee + jfkzpexn-QOP-lvqmqe2q + 1 + OutParameter + + + + + fr.insee + jfkzpexn-RDOP-lvqm77b2 + 1 + OutParameter + + + fr.insee + jfkzpexn-QOP-lvqm77b2 + 1 + OutParameter + + + + + fr.insee + jfkzpexn-RDOP-lvqmf59x + 1 + OutParameter + + + fr.insee + jfkzpexn-QOP-lvqmf59x + 1 + OutParameter + + + + + fr.insee + jfkzpexn-RDOP-lvqmmt6o + 1 + OutParameter + + + fr.insee + jfkzpexn-QOP-lvqmmt6o + 1 + OutParameter + + + + + fr.insee + jfkzpexn-RDOP-lvqmfli2 + 1 + OutParameter + + + fr.insee + jfkzpexn-QOP-lvqmfli2 + 1 + OutParameter + + + + + fr.insee + jfkzpexn-RDOP-lvqm9lha + 1 + OutParameter + + + fr.insee + jfkzpexn-QOP-lvqm9lha + 1 + OutParameter + + + + + fr.insee + jfkzpexn-RDOP-lvqmp1la + 1 + OutParameter + + + fr.insee + jfkzpexn-QOP-lvqmp1la + 1 + OutParameter + + + + + fr.insee + jfkzpexn-RDOP-lvqm79mk + 1 + OutParameter + + + fr.insee + jfkzpexn-QOP-lvqm79mk + 1 + OutParameter + + + + + fr.insee + jfkzpexn-RDOP-lvqmahs1 + 1 + OutParameter + + + fr.insee + jfkzpexn-QOP-lvqmahs1 + 1 + OutParameter + + + + + fr.insee + jfkzpexn-RDOP-lvqmmp7g + 1 + OutParameter + + + fr.insee + jfkzpexn-QOP-lvqmmp7g + 1 + OutParameter + + + + + fr.insee + jfkzpexn-RDOP-lvqme541 + 1 + OutParameter + + + fr.insee + jfkzpexn-QOP-lvqme541 + 1 + OutParameter + + + + + fr.insee + jfkzpexn-RDOP-lvqmnl7n + 1 + OutParameter + + + fr.insee + jfkzpexn-QOP-lvqmnl7n + 1 + OutParameter + + + + + "Tableau un axe simple, plusieurs mesures, une mesure contient une unité" + + + + + + fr.insee + jfkxgkqx + 1 + CodeList + + + + + + + fr.insee + jfkzpexn-secondDimension-fakeCL-1 + 1 + CodeList + + + + + + + + 0 + 999 + + Decimal + + fr.insee + jfkzpexn-RDOP-lvqm9mzt + 1 + + + + + + + + + + + + + 0 + 999 + + Decimal + + fr.insee + jfkzpexn-RDOP-lvqmimh1 + 1 + + + + + + + + + + + + + 0 + 999 + + Decimal + + fr.insee + jfkzpexn-RDOP-lvqmeli8 + 1 + + + + + + + + + + + + + 0 + 999 + + Decimal + + fr.insee + jfkzpexn-RDOP-lvqmqe2q + 1 + + + + + + + + + + + + + 0 + 999 + + Decimal + + fr.insee + jfkzpexn-RDOP-lvqm77b2 + 1 + + + + + + + + + + + + checkbox + + fr.insee + jfkxtrih + 1 + CodeList + + + fr.insee + jfkzpexn-RDOP-lvqmf59x + 1 + + + fr.insee + jfkxtrih + 1 + CodeList + + + + + + + + + + + + + + + checkbox + + fr.insee + jfkxtrih + 1 + CodeList + + + fr.insee + jfkzpexn-RDOP-lvqmmt6o + 1 + + + fr.insee + jfkxtrih + 1 + CodeList + + + + + + + + + + + + + + + checkbox + + fr.insee + jfkxtrih + 1 + CodeList + + + fr.insee + jfkzpexn-RDOP-lvqmfli2 + 1 + + + fr.insee + jfkxtrih + 1 + CodeList + + + + + + + + + + + + + + + checkbox + + fr.insee + jfkxtrih + 1 + CodeList + + + fr.insee + jfkzpexn-RDOP-lvqm9lha + 1 + + + fr.insee + jfkxtrih + 1 + CodeList + + + + + + + + + + + + + + + checkbox + + fr.insee + jfkxtrih + 1 + CodeList + + + fr.insee + jfkzpexn-RDOP-lvqmp1la + 1 + + + fr.insee + jfkxtrih + 1 + CodeList + + + + + + + + + + + + + + + + fr.insee + jfkzpexn-RDOP-lvqm79mk + 1 + + + + + + + + + + + + + + fr.insee + jfkzpexn-RDOP-lvqmahs1 + 1 + + + + + + + + + + + + + + fr.insee + jfkzpexn-RDOP-lvqmmp7g + 1 + + + + + + + + + + + + + + fr.insee + jfkzpexn-RDOP-lvqme541 + 1 + + + + + + + + + + + + + + fr.insee + jfkzpexn-RDOP-lvqmnl7n + 1 + + + + + + + + + + + + + + fr.insee + jfkzttm3 + 1 + + TABLEAU2A + + + fr.insee + jfkzttm3-QOP-lvqmpp3h + 1 + + TABLEAU2A11 + + + + fr.insee + jfkzttm3-QOP-lvqmp0f6 + 1 + + TABLEAU2A21 + + + + fr.insee + jfkzttm3-QOP-lvqmr9zl + 1 + + TABLEAU2A31 + + + + fr.insee + jfkzttm3-QOP-lvqmhofr + 1 + + TABLEAU2A41 + + + + fr.insee + jfkzttm3-QOP-lvqm925l + 1 + + TABLEAU2A51 + + + + fr.insee + jfkzttm3-QOP-lvqmk2co + 1 + + TABLEAU2A61 + + + + fr.insee + jfkzttm3-QOP-lvqmieov + 1 + + TABLEAU2A71 + + + + fr.insee + jfkzttm3-QOP-lvqmn9ud + 1 + + TABLEAU2A81 + + + + fr.insee + jfkzttm3-QOP-lvqmevmm + 1 + + TABLEAU2A12 + + + + fr.insee + jfkzttm3-QOP-lvqm9f5d + 1 + + TABLEAU2A22 + + + + fr.insee + jfkzttm3-QOP-lvqme3dy + 1 + + TABLEAU2A32 + + + + fr.insee + jfkzttm3-QOP-lvqmhwdj + 1 + + TABLEAU2A42 + + + + fr.insee + jfkzttm3-QOP-lvqmqe8s + 1 + + TABLEAU2A52 + + + + fr.insee + jfkzttm3-QOP-lvqmndwb + 1 + + TABLEAU2A62 + + + + fr.insee + jfkzttm3-QOP-lvqmqyz1 + 1 + + TABLEAU2A72 + + + + fr.insee + jfkzttm3-QOP-lvqmbzuf + 1 + + TABLEAU2A82 + + + + fr.insee + jfkzttm3-QOP-lvqmnpru + 1 + + TABLEAU2A13 + + + + fr.insee + jfkzttm3-QOP-lvqma7r2 + 1 + + TABLEAU2A23 + + + + fr.insee + jfkzttm3-QOP-lvqmivrh + 1 + + TABLEAU2A33 + + + + fr.insee + jfkzttm3-QOP-lvqmpku8 + 1 + + TABLEAU2A43 + + + + fr.insee + jfkzttm3-QOP-lvqm6awg + 1 + + TABLEAU2A53 + + + + fr.insee + jfkzttm3-QOP-lvqmnkx5 + 1 + + TABLEAU2A63 + + + + fr.insee + jfkzttm3-QOP-lvqmju8y + 1 + + TABLEAU2A73 + + + + fr.insee + jfkzttm3-QOP-lvqml77w + 1 + + TABLEAU2A83 + + + + fr.insee + jfkzttm3-QOP-lvqmma9w + 1 + + TABLEAU2A14 + + + + fr.insee + jfkzttm3-QOP-lvqmjqao + 1 + + TABLEAU2A24 + + + + fr.insee + jfkzttm3-QOP-lvqmlo2y + 1 + + TABLEAU2A34 + + + + fr.insee + jfkzttm3-QOP-lvqmlhta + 1 + + TABLEAU2A44 + + + + fr.insee + jfkzttm3-QOP-lvqmop3k + 1 + + TABLEAU2A54 + + + + fr.insee + jfkzttm3-QOP-lvqmkek3 + 1 + + TABLEAU2A64 + + + + fr.insee + jfkzttm3-QOP-lvqm66xe + 1 + + TABLEAU2A74 + + + + fr.insee + jfkzttm3-QOP-lvqmeowx + 1 + + TABLEAU2A84 + + + + fr.insee + jfkzttm3-QOP-lvqmojr8 + 1 + + TABLEAU2A15 + + + + fr.insee + jfkzttm3-QOP-lvqmkt2b + 1 + + TABLEAU2A25 + + + + fr.insee + jfkzttm3-QOP-lvqm8uqs + 1 + + TABLEAU2A35 + + + + fr.insee + jfkzttm3-QOP-lvqmqplj + 1 + + TABLEAU2A45 + + + + fr.insee + jfkzttm3-QOP-lvqm71i9 + 1 + + TABLEAU2A55 + + + + fr.insee + jfkzttm3-QOP-lvqmjas6 + 1 + + TABLEAU2A65 + + + + fr.insee + jfkzttm3-QOP-lvqm7ipa + 1 + + TABLEAU2A75 + + + + fr.insee + jfkzttm3-QOP-lvqmq1kj + 1 + + TABLEAU2A85 + + + + + fr.insee + jfkzttm3-RDOP-lvqmpp3h + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqmpp3h + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqmp0f6 + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqmp0f6 + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqmr9zl + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqmr9zl + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqmhofr + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqmhofr + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqm925l + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqm925l + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqmk2co + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqmk2co + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqmieov + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqmieov + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqmn9ud + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqmn9ud + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqmevmm + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqmevmm + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqm9f5d + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqm9f5d + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqme3dy + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqme3dy + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqmhwdj + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqmhwdj + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqmqe8s + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqmqe8s + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqmndwb + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqmndwb + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqmqyz1 + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqmqyz1 + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqmbzuf + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqmbzuf + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqmnpru + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqmnpru + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqma7r2 + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqma7r2 + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqmivrh + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqmivrh + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqmpku8 + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqmpku8 + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqm6awg + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqm6awg + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqmnkx5 + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqmnkx5 + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqmju8y + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqmju8y + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqml77w + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqml77w + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqmma9w + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqmma9w + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqmjqao + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqmjqao + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqmlo2y + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqmlo2y + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqmlhta + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqmlhta + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqmop3k + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqmop3k + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqmkek3 + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqmkek3 + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqm66xe + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqm66xe + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqmeowx + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqmeowx + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqmojr8 + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqmojr8 + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqmkt2b + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqmkt2b + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqm8uqs + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqm8uqs + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqmqplj + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqmqplj + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqm71i9 + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqm71i9 + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqmjas6 + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqmjas6 + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqm7ipa + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqm7ipa + 1 + OutParameter + + + + + fr.insee + jfkzttm3-RDOP-lvqmq1kj + 1 + OutParameter + + + fr.insee + jfkzttm3-QOP-lvqmq1kj + 1 + OutParameter + + + + + "Tableau 2 axes - 1 mesure de type numérique, avec unité" + + + + + + fr.insee + jfjevykh + 1 + CodeList + + + + + + + fr.insee + jfkxgkqx + 1 + CodeList + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqmpp3h + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqmp0f6 + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqmr9zl + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqmhofr + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqm925l + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqmk2co + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqmieov + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqmn9ud + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqmevmm + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqm9f5d + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqme3dy + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqmhwdj + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqmqe8s + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqmndwb + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqmqyz1 + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqmbzuf + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqmnpru + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqma7r2 + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqmivrh + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqmpku8 + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqm6awg + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqmnkx5 + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqmju8y + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqml77w + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqmma9w + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqmjqao + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqmlo2y + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqmlhta + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqmop3k + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqmkek3 + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqm66xe + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqmeowx + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqmojr8 + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqmkt2b + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqm8uqs + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqmqplj + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqm71i9 + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqmjas6 + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqm7ipa + 1 + + + + + + + + + + + + + 0 + 10000 + + Decimal + + fr.insee + jfkzttm3-RDOP-lvqmq1kj + 1 + + + + + + + + + + + + fr.insee + lvqkzgqh + 1 + Instruction + + + + fr.insee + jfkzrwce + 1 + + TABLEAU1AH1M + + + fr.insee + jfkzrwce-QOP-kfs70aez + 1 + + TABLEAU1AH1M11 + + + + fr.insee + jfkzrwce-QOP-kfs6o7rs + 1 + + TABLEAU1AH1M21 + + + + fr.insee + jfkzrwce-QOP-kfs72t19 + 1 + + TABLEAU1AH1M31 + + + + fr.insee + jfkzrwce-QOP-kfs77h7l + 1 + + TABLEAU1AH1M41 + + + + fr.insee + jfkzrwce-QOP-kfs6vcz9 + 1 + + TABLEAU1AH1M51 + + + + fr.insee + jfkzrwce-QOP-kfs7347h + 1 + + TABLEAU1AH1M61 + + + + + fr.insee + jfkzrwce-RDOP-kfs70aez + 1 + OutParameter + + + fr.insee + jfkzrwce-QOP-kfs70aez + 1 + OutParameter + + + + + fr.insee + jfkzrwce-RDOP-kfs6o7rs + 1 + OutParameter + + + fr.insee + jfkzrwce-QOP-kfs6o7rs + 1 + OutParameter + + + + + fr.insee + jfkzrwce-RDOP-kfs72t19 + 1 + OutParameter + + + fr.insee + jfkzrwce-QOP-kfs72t19 + 1 + OutParameter + + + + + fr.insee + jfkzrwce-RDOP-kfs77h7l + 1 + OutParameter + + + fr.insee + jfkzrwce-QOP-kfs77h7l + 1 + OutParameter + + + + + fr.insee + jfkzrwce-RDOP-kfs6vcz9 + 1 + OutParameter + + + fr.insee + jfkzrwce-QOP-kfs6vcz9 + 1 + OutParameter + + + + + fr.insee + jfkzrwce-RDOP-kfs7347h + 1 + OutParameter + + + fr.insee + jfkzrwce-QOP-kfs7347h + 1 + OutParameter + + + + + "Tableau 1 axe avec hiérarchie , 1 mesure, avec unité " + + + + + + fr.insee + jfkxc40e + 1 + CodeList + + + + + + + fr.insee + jfkzrwce-secondDimension-fakeCL-1 + 1 + CodeList + + + + + + + + 0 + 999 + + Decimal + + fr.insee + jfkzrwce-RDOP-kfs70aez + 1 + + + + + + + + + + + + + 0 + 999 + + Decimal + + fr.insee + jfkzrwce-RDOP-kfs6o7rs + 1 + + + + + + + + + + + + + 0 + 999 + + Decimal + + fr.insee + jfkzrwce-RDOP-kfs72t19 + 1 + + + + + + + + + + + + + 0 + 999 + + Decimal + + fr.insee + jfkzrwce-RDOP-kfs77h7l + 1 + + + + + + + + + + + + + 0 + 999 + + Decimal + + fr.insee + jfkzrwce-RDOP-kfs6vcz9 + 1 + + + + + + + + + + + + + 0 + 999 + + Decimal + + fr.insee + jfkzrwce-RDOP-kfs7347h + 1 + + + + + + + + + + + + fr.insee + lvqla8eb + 1 + Instruction + + + + fr.insee + kzy4vwpj + 1 + + TABESA + + + fr.insee + kzy4vwpj-QOP-lvqmjyfa + 1 + + TABESA2 + + + + + fr.insee + kzy4vwpj-RDOP-lvqmjyfa + 1 + OutParameter + + + fr.insee + kzy4vwpj-QOP-lvqmjyfa + 1 + OutParameter + + + + + Tableau dynamique de 1 à 10, personnalisation type ESA + + + + + + + + + fr.insee + kzy4vwpj-secondDimension-fakeCL-1 + 1 + CodeList + + + + + + + + + + + + + + 0 + 100 + + Decimal + + fr.insee + kzy4vwpj-RDOP-lvqmjyfa + 1 + + + + + + + + + + + + ¤CODESA¤ + fixedcell + + + + + + + + + + fr.insee + m2k828bm + 1 + + TABESTANP + + + fr.insee + m2k828bm-QOP-m2kdcy7n + 1 + + TABESTANP1 + + + + fr.insee + m2k828bm-QOP-m2kd8brh + 1 + + TABESTANP2 + + + + + fr.insee + m2k828bm-RDOP-m2kdcy7n + 1 + OutParameter + + + fr.insee + m2k828bm-QOP-m2kdcy7n + 1 + OutParameter + + + + + fr.insee + m2k828bm-RDOP-m2kd8brh + 1 + OutParameter + + + fr.insee + m2k828bm-QOP-m2kd8brh + 1 + OutParameter + + + + + Tableau dynamique de 1 à 10, première colonne suggester + + + + + + + + + fr.insee + m2k828bm-secondDimension-fakeCL-1 + 1 + CodeList + + + + + + + suggester + + fr.insee + L_PRODEAP_DECHETS_2024 + 1 + CodeList + + + fr.insee + m2k828bm-RDOP-m2kdcy7n + 1 + + + fr.insee + L_PRODEAP_DECHETS_2024 + 1 + CodeList + + + + + + + + + + + + + + + + 0 + 100 + + Decimal + + fr.insee + m2k828bm-RDOP-m2kd8brh + 1 + + + + + + + + + + + + + + fr.insee + CategoryScheme-l8u7vv82 + 1 + + l_trancheAge + + + fr.insee + CA-l8u7vv82-1 + 1 + + "moins de 15" + + + + fr.insee + CA-l8u7vv82-2 + 1 + + "de 16 à 17 ans" + + + + fr.insee + CA-l8u7vv82-3 + 1 + + "de 18 à 19 ans" + + + + fr.insee + CA-l8u7vv82-4 + 1 + + "20 et plus" + + + + + fr.insee + CategoryScheme-jfkxgkqx + 1 + + L_TEST_QCM + + + fr.insee + CA-jfkxgkqx-1 + 1 + + choix 1 + + + + fr.insee + CA-jfkxgkqx-2 + 1 + + choix 2 + + + + fr.insee + CA-jfkxgkqx-3 + 1 + + choix 3 + + + + fr.insee + CA-jfkxgkqx-4 + 1 + + choix 4 + + + + fr.insee + CA-jfkxgkqx-5 + 1 + + choix 5 + + + + + fr.insee + CategoryScheme-jfkxtrih + 1 + + L_OuiNon + + + fr.insee + CA-jfkxtrih-1 + 1 + + Oui + + + + fr.insee + CA-jfkxtrih-2 + 1 + + Non + + + + + fr.insee + CategoryScheme-jfjevykh + 1 + + L_TEST_QCU_8 + + + fr.insee + CA-jfjevykh-1 + 1 + + code1 : le libellé du code 1 contient **du gras** + + + + fr.insee + CA-jfjevykh-2 + 1 + + code2 le libellé du code 2 contient *de l'italique* + + + + fr.insee + CA-jfjevykh-3 + 1 + + code3 : le libellé du code 3 contient **du gras** et *de l'italique* + + + + fr.insee + CA-jfjevykh-4 + 1 + + code4 : le libellé du code 4 contient du ***gras italique*** + + + + fr.insee + CA-jfjevykh-5 + 1 + + code5 : le libellé du code 5 contient des retours à la ligne + +ligne 2 + +ligne 3 + + + + fr.insee + CA-jfjevykh-6 + 1 + + code6 + + + + fr.insee + CA-jfjevykh-7 + 1 + + [code7](. "My name is Bond, James Bond") le code 7 porte une infobulle + + + + fr.insee + CA-jfjevykh-8 + 1 + + code8 + + + + + fr.insee + CategoryScheme-jfkxc40e + 1 + + L_TEST_H + + + fr.insee + CA-jfkxc40e-1 + 1 + + code1 + + + + fr.insee + CA-jfkxc40e-2 + 1 + + code 1 1 + + + + fr.insee + CA-jfkxc40e-3 + 1 + + code 1 2 + + + + fr.insee + CA-jfkxc40e-4 + 1 + + code2 + + + + fr.insee + CA-jfkxc40e-5 + 1 + + code 2 1 + + + + fr.insee + CA-jfkxc40e-6 + 1 + + code 2 2 + + + + fr.insee + CA-jfkxc40e-7 + 1 + + code 2 3 + + + + fr.insee + CA-jfkxc40e-8 + 1 + + code 3 + + + + + fr.insee + CategoryScheme-l8u8d67h-secondDimension-fakeCL-1 + 1 + + FAKE-CODELIST-l8u8d67h-secondDimension-fakeCL-1 + + + fr.insee + CA-l8u8d67h-secondDimension-fakeCL-1-1 + 1 + + "Nombre de personnes, entre 0 et 20" + + + + + fr.insee + CategoryScheme-jfkzltkm-secondDimension-fakeCL-1 + 1 + + FAKE-CODELIST-jfkzltkm-secondDimension-fakeCL-1 + + + fr.insee + CA-jfkzltkm-secondDimension-fakeCL-1-1 + 1 + + "Mesure de type numérique, en k€, jusque 100" + + + + + fr.insee + CategoryScheme-jfkzpexn-secondDimension-fakeCL-1 + 1 + + FAKE-CODELIST-jfkzpexn-secondDimension-fakeCL-1 + + + fr.insee + CA-jfkzpexn-secondDimension-fakeCL-1-1 + 1 + + Question 1 + + + + fr.insee + CA-jfkzpexn-secondDimension-fakeCL-1-2 + 1 + + Mesure de type liste + + + + fr.insee + CA-jfkzpexn-secondDimension-fakeCL-1-3 + 1 + + Question 3 + + + + + fr.insee + CategoryScheme-jfkzrwce-secondDimension-fakeCL-1 + 1 + + FAKE-CODELIST-jfkzrwce-secondDimension-fakeCL-1 + + + fr.insee + CA-jfkzrwce-secondDimension-fakeCL-1-1 + 1 + + Mesure de type numérique avec unité + + + + + fr.insee + CategoryScheme-kzy4vwpj-secondDimension-fakeCL-1 + 1 + + FAKE-CODELIST-kzy4vwpj-secondDimension-fakeCL-1 + + + fr.insee + CA-kzy4vwpj-secondDimension-fakeCL-1-1 + 1 + + Code ESA + + + + fr.insee + CA-kzy4vwpj-secondDimension-fakeCL-1-2 + 1 + + Montant en keuros + + + + + fr.insee + CategoryScheme-m2k828bm-secondDimension-fakeCL-1 + 1 + + FAKE-CODELIST-m2k828bm-secondDimension-fakeCL-1 + + + fr.insee + CA-m2k828bm-secondDimension-fakeCL-1-1 + 1 + + Suggester + + + + fr.insee + CA-m2k828bm-secondDimension-fakeCL-1-2 + 1 + + Montant en keuros + + + + + fr.insee + CategoryScheme-m1atczym + 1 + + A définir + + + fr.insee + INSEE-COMMUN-CA-Booleen-1 + 1 + + + + + + + fr.insee + RESPDESIGN-CLS + 1 + + RESPDESIGN + + + fr.insee + l8u7vv82 + 1 + + l_trancheAge + + Regular + + Ordinal + + + fr.insee + l8u7vv82-1 + 1 + + fr.insee + CA-l8u7vv82-1 + 1 + Category + + 1 + + + fr.insee + l8u7vv82-2 + 1 + + fr.insee + CA-l8u7vv82-2 + 1 + Category + + 2 + + + fr.insee + l8u7vv82-3 + 1 + + fr.insee + CA-l8u7vv82-3 + 1 + Category + + 3 + + + fr.insee + l8u7vv82-4 + 1 + + fr.insee + CA-l8u7vv82-4 + 1 + Category + + 4 + + + + fr.insee + jfkxgkqx + 1 + + L_TEST_QCM + + Regular + + Ordinal + + + fr.insee + jfkxgkqx-1 + 1 + + fr.insee + CA-jfkxgkqx-1 + 1 + Category + + 1 + + + fr.insee + jfkxgkqx-2 + 1 + + fr.insee + CA-jfkxgkqx-2 + 1 + Category + + 2 + + + fr.insee + jfkxgkqx-3 + 1 + + fr.insee + CA-jfkxgkqx-3 + 1 + Category + + 3 + + + fr.insee + jfkxgkqx-4 + 1 + + fr.insee + CA-jfkxgkqx-4 + 1 + Category + + 4 + + + fr.insee + jfkxgkqx-5 + 1 + + fr.insee + CA-jfkxgkqx-5 + 1 + Category + + 5 + + + + fr.insee + jfkxtrih + 1 + + L_OuiNon + + Regular + + Ordinal + + + fr.insee + jfkxtrih-1 + 1 + + fr.insee + CA-jfkxtrih-1 + 1 + Category + + 1 + + + fr.insee + jfkxtrih-2 + 1 + + fr.insee + CA-jfkxtrih-2 + 1 + Category + + 2 + + + + fr.insee + jfjevykh + 1 + + L_TEST_QCU_8 + + Regular + + Ordinal + + + fr.insee + jfjevykh-1 + 1 + + fr.insee + CA-jfjevykh-1 + 1 + Category + + 1 + + + fr.insee + jfjevykh-2 + 1 + + fr.insee + CA-jfjevykh-2 + 1 + Category + + 2 + + + fr.insee + jfjevykh-3 + 1 + + fr.insee + CA-jfjevykh-3 + 1 + Category + + 3 + + + fr.insee + jfjevykh-4 + 1 + + fr.insee + CA-jfjevykh-4 + 1 + Category + + 4 + + + fr.insee + jfjevykh-5 + 1 + + fr.insee + CA-jfjevykh-5 + 1 + Category + + 5 + + + fr.insee + jfjevykh-6 + 1 + + fr.insee + CA-jfjevykh-6 + 1 + Category + + 6 + + + fr.insee + jfjevykh-7 + 1 + + fr.insee + CA-jfjevykh-7 + 1 + Category + + 7 + + + fr.insee + jfjevykh-8 + 1 + + fr.insee + CA-jfjevykh-8 + 1 + Category + + 8 + + + + fr.insee + jfkxc40e + 1 + + L_TEST_H + + Regular + + Ordinal + + + fr.insee + jfkxc40e-1 + 1 + + fr.insee + CA-jfkxc40e-1 + 1 + Category + + 10 + + fr.insee + jfkxc40e-2 + 1 + + fr.insee + CA-jfkxc40e-2 + 1 + Category + + 11 + + + fr.insee + jfkxc40e-3 + 1 + + fr.insee + CA-jfkxc40e-3 + 1 + Category + + 12 + + + + fr.insee + jfkxc40e-4 + 1 + + fr.insee + CA-jfkxc40e-4 + 1 + Category + + 20 + + fr.insee + jfkxc40e-5 + 1 + + fr.insee + CA-jfkxc40e-5 + 1 + Category + + 21 + + + fr.insee + jfkxc40e-6 + 1 + + fr.insee + CA-jfkxc40e-6 + 1 + Category + + 22 + + + fr.insee + jfkxc40e-7 + 1 + + fr.insee + CA-jfkxc40e-7 + 1 + Category + + 23 + + + + fr.insee + jfkxc40e-8 + 1 + + fr.insee + CA-jfkxc40e-8 + 1 + Category + + 30 + + + + fr.insee + L_PRODEAP_DECHETS_2024 + 1 + + SuggesterConfiguration + + id + [\w]+ + French + 3 + false + + + label + [\w]+ + French + 3 + false + + + nc + [\w]+ + French + 3 + false + + + tokenized + + French + 3 + [\w.]+ + false + + + 1]]> + + + L_PRODEAP_DECHETS_2024 + + + EAP - Produits - déchets + + + urn:ddi:fr.insee:l_prodeap_dechets_2024:1 + CodeList + + Regular + + Ordinal + + + + fr.insee + l8u8d67h-secondDimension-fakeCL-1 + 1 + + FAKE-CODELIST-l8u8d67h-secondDimension-fakeCL-1 + + Regular + + Ordinal + + + fr.insee + l8u8d67h-secondDimension-fakeCL-1-1 + 1 + + fr.insee + CA-l8u8d67h-secondDimension-fakeCL-1-1 + 1 + Category + + 1 + + + + fr.insee + jfkzltkm-secondDimension-fakeCL-1 + 1 + + FAKE-CODELIST-jfkzltkm-secondDimension-fakeCL-1 + + Regular + + Ordinal + + + fr.insee + jfkzltkm-secondDimension-fakeCL-1-1 + 1 + + fr.insee + CA-jfkzltkm-secondDimension-fakeCL-1-1 + 1 + Category + + 1 + + + + fr.insee + jfkzpexn-secondDimension-fakeCL-1 + 1 + + FAKE-CODELIST-jfkzpexn-secondDimension-fakeCL-1 + + Regular + + Ordinal + + + fr.insee + jfkzpexn-secondDimension-fakeCL-1-1 + 1 + + fr.insee + CA-jfkzpexn-secondDimension-fakeCL-1-1 + 1 + Category + + 1 + + + fr.insee + jfkzpexn-secondDimension-fakeCL-1-2 + 1 + + fr.insee + CA-jfkzpexn-secondDimension-fakeCL-1-2 + 1 + Category + + 2 + + + fr.insee + jfkzpexn-secondDimension-fakeCL-1-3 + 1 + + fr.insee + CA-jfkzpexn-secondDimension-fakeCL-1-3 + 1 + Category + + 3 + + + + fr.insee + jfkzrwce-secondDimension-fakeCL-1 + 1 + + FAKE-CODELIST-jfkzrwce-secondDimension-fakeCL-1 + + Regular + + Ordinal + + + fr.insee + jfkzrwce-secondDimension-fakeCL-1-1 + 1 + + fr.insee + CA-jfkzrwce-secondDimension-fakeCL-1-1 + 1 + Category + + 1 + + + + fr.insee + kzy4vwpj-secondDimension-fakeCL-1 + 1 + + FAKE-CODELIST-kzy4vwpj-secondDimension-fakeCL-1 + + Regular + + Ordinal + + + fr.insee + kzy4vwpj-secondDimension-fakeCL-1-1 + 1 + + fr.insee + CA-kzy4vwpj-secondDimension-fakeCL-1-1 + 1 + Category + + 1 + + + fr.insee + kzy4vwpj-secondDimension-fakeCL-1-2 + 1 + + fr.insee + CA-kzy4vwpj-secondDimension-fakeCL-1-2 + 1 + Category + + 2 + + + + fr.insee + m2k828bm-secondDimension-fakeCL-1 + 1 + + FAKE-CODELIST-m2k828bm-secondDimension-fakeCL-1 + + Regular + + Ordinal + + + fr.insee + m2k828bm-secondDimension-fakeCL-1-1 + 1 + + fr.insee + CA-m2k828bm-secondDimension-fakeCL-1-1 + 1 + Category + + 1 + + + fr.insee + m2k828bm-secondDimension-fakeCL-1-2 + 1 + + fr.insee + CA-m2k828bm-secondDimension-fakeCL-1-2 + 1 + Category + + 2 + + + + fr.insee + INSEE-COMMUN-CL-Booleen + 1 + + Booleen + + Regular + + Ordinal + + + fr.insee + INSEE-COMMUN-CL-Booleen-1 + 1 + + fr.insee + INSEE-COMMUN-CA-Booleen-1 + 1 + Category + + 1 + + + + + fr.insee + VariableScheme-m1atczym + 1 + + Variable Scheme for the survey + + + fr.insee + lo5g05no + 1 + + SOMME_TIC + + + somme_TIC (SOMME_TIC) + + + fr.insee + lo5g05no-VROP + 1 + + + + fr.insee + lo5g05no-GI + 1 + GenerationInstruction + + + fr.insee + lo5g05no-GOP + 1 + OutParameter + + + fr.insee + lo5g05no-VROP + 1 + OutParameter + + + + + + 0 + 2000 + + Decimal + + + + + fr.insee + kzy6aqqn + 1 + + TOTESA + + + total_ESA + + + fr.insee + kzy6aqqn-VROP + 1 + + + + fr.insee + kzy6aqqn-GI + 1 + GenerationInstruction + + + fr.insee + kzy6aqqn-GOP + 1 + OutParameter + + + fr.insee + kzy6aqqn-VROP + 1 + OutParameter + + + + + + 0 + 1000 + + Decimal + + + + + fr.insee + m2k8blyy + 1 + + CODESA + + + CODESA + + + + + + + fr.insee + l8u8cwms + 1 + + TABLEAUTIC11 + + + "moins de 15"-"Nombre de personnes, entre 0 et 20" + + + fr.insee + l8u8d67h-QOP-l8u8ju3p + 1 + OutParameter + + + fr.insee + l8u8d67h + 1 + QuestionGrid + + + + + 0 + 20 + + Decimal + + + + + fr.insee + l8u83d29 + 1 + + TABLEAUTIC21 + + + "de 16 à 17 ans"-"Nombre de personnes, entre 0 et 20" + + + fr.insee + l8u8d67h-QOP-l8u8ezod + 1 + OutParameter + + + fr.insee + l8u8d67h + 1 + QuestionGrid + + + + + 0 + 20 + + Decimal + + + + + fr.insee + l8u8aqat + 1 + + TABLEAUTIC31 + + + "de 18 à 19 ans"-"Nombre de personnes, entre 0 et 20" + + + fr.insee + l8u8d67h-QOP-l8u85xql + 1 + OutParameter + + + fr.insee + l8u8d67h + 1 + QuestionGrid + + + + + 0 + 20 + + Decimal + + + + + fr.insee + l8u86vzj + 1 + + TABLEAUTIC41 + + + "20 et plus"-"Nombre de personnes, entre 0 et 20" + + + fr.insee + l8u8d67h-QOP-l8u80yaz + 1 + OutParameter + + + fr.insee + l8u8d67h + 1 + QuestionGrid + + + + + 0 + 20 + + Decimal + + + + + fr.insee + lvqm8fee + 1 + + TABLEAU1A1M11 + + + choix 1-"Mesure de type numérique, en k€, jusque 100" + + + fr.insee + jfkzltkm-QOP-lvqm7crf + 1 + OutParameter + + + fr.insee + jfkzltkm + 1 + QuestionGrid + + + + k€ + + 0 + 100 + + Decimal + + + + + fr.insee + lvqm4qlp + 1 + + TABLEAU1A1M21 + + + choix 2-"Mesure de type numérique, en k€, jusque 100" + + + fr.insee + jfkzltkm-QOP-lvqmlkh8 + 1 + OutParameter + + + fr.insee + jfkzltkm + 1 + QuestionGrid + + + + k€ + + 0 + 100 + + Decimal + + + + + fr.insee + lvqlzltg + 1 + + TABLEAU1A1M31 + + + choix 3-"Mesure de type numérique, en k€, jusque 100" + + + fr.insee + jfkzltkm-QOP-lvqm91qy + 1 + OutParameter + + + fr.insee + jfkzltkm + 1 + QuestionGrid + + + + k€ + + 0 + 100 + + Decimal + + + + + fr.insee + lvqmbmnk + 1 + + TABLEAU1A1M41 + + + choix 4-"Mesure de type numérique, en k€, jusque 100" + + + fr.insee + jfkzltkm-QOP-lvqm9sx6 + 1 + OutParameter + + + fr.insee + jfkzltkm + 1 + QuestionGrid + + + + k€ + + 0 + 100 + + Decimal + + + + + fr.insee + lvqlshhy + 1 + + TABLEAU1A1M51 + + + choix 5-"Mesure de type numérique, en k€, jusque 100" + + + fr.insee + jfkzltkm-QOP-lvqm8clg + 1 + OutParameter + + + fr.insee + jfkzltkm + 1 + QuestionGrid + + + + k€ + + 0 + 100 + + Decimal + + + + + fr.insee + lvqlr1fe + 1 + + TABLEAU1A3M11 + + + choix 1-Question 1 + + + fr.insee + jfkzpexn-QOP-lvqm9mzt + 1 + OutParameter + + + fr.insee + jfkzpexn + 1 + QuestionGrid + + + + + 0 + 999 + + Decimal + + + + + fr.insee + lvqm6pjm + 1 + + TABLEAU1A3M21 + + + choix 2-Question 1 + + + fr.insee + jfkzpexn-QOP-lvqmimh1 + 1 + OutParameter + + + fr.insee + jfkzpexn + 1 + QuestionGrid + + + + + 0 + 999 + + Decimal + + + + + fr.insee + lvqm0uk3 + 1 + + TABLEAU1A3M31 + + + choix 3-Question 1 + + + fr.insee + jfkzpexn-QOP-lvqmeli8 + 1 + OutParameter + + + fr.insee + jfkzpexn + 1 + QuestionGrid + + + + + 0 + 999 + + Decimal + + + + + fr.insee + lvqluy0h + 1 + + TABLEAU1A3M41 + + + choix 4-Question 1 + + + fr.insee + jfkzpexn-QOP-lvqmqe2q + 1 + OutParameter + + + fr.insee + jfkzpexn + 1 + QuestionGrid + + + + + 0 + 999 + + Decimal + + + + + fr.insee + lvqm6fee + 1 + + TABLEAU1A3M51 + + + choix 5-Question 1 + + + fr.insee + jfkzpexn-QOP-lvqm77b2 + 1 + OutParameter + + + fr.insee + jfkzpexn + 1 + QuestionGrid + + + + + 0 + 999 + + Decimal + + + + + fr.insee + lvqlx4lq + 1 + + TABLEAU1A3M12 + + + choix 1-Mesure de type liste + + + fr.insee + jfkzpexn-QOP-lvqmf59x + 1 + OutParameter + + + fr.insee + jfkzpexn + 1 + QuestionGrid + + + + + fr.insee + jfkxtrih + 1 + CodeList + + + + + + fr.insee + lvqm1r2b + 1 + + TABLEAU1A3M22 + + + choix 2-Mesure de type liste + + + fr.insee + jfkzpexn-QOP-lvqmmt6o + 1 + OutParameter + + + fr.insee + jfkzpexn + 1 + QuestionGrid + + + + + fr.insee + jfkxtrih + 1 + CodeList + + + + + + fr.insee + lvqm07vm + 1 + + TABLEAU1A3M32 + + + choix 3-Mesure de type liste + + + fr.insee + jfkzpexn-QOP-lvqmfli2 + 1 + OutParameter + + + fr.insee + jfkzpexn + 1 + QuestionGrid + + + + + fr.insee + jfkxtrih + 1 + CodeList + + + + + + fr.insee + lvqm3d93 + 1 + + TABLEAU1A3M42 + + + choix 4-Mesure de type liste + + + fr.insee + jfkzpexn-QOP-lvqm9lha + 1 + OutParameter + + + fr.insee + jfkzpexn + 1 + QuestionGrid + + + + + fr.insee + jfkxtrih + 1 + CodeList + + + + + + fr.insee + lvqlsmt4 + 1 + + TABLEAU1A3M52 + + + choix 5-Mesure de type liste + + + fr.insee + jfkzpexn-QOP-lvqmp1la + 1 + OutParameter + + + fr.insee + jfkzpexn + 1 + QuestionGrid + + + + + fr.insee + jfkxtrih + 1 + CodeList + + + + + + fr.insee + lvqm4x3t + 1 + + TABLEAU1A3M13 + + + choix 1-Question 3 + + + fr.insee + jfkzpexn-QOP-lvqm79mk + 1 + OutParameter + + + fr.insee + jfkzpexn + 1 + QuestionGrid + + + + + + + fr.insee + lvqlzg2l + 1 + + TABLEAU1A3M23 + + + choix 2-Question 3 + + + fr.insee + jfkzpexn-QOP-lvqmahs1 + 1 + OutParameter + + + fr.insee + jfkzpexn + 1 + QuestionGrid + + + + + + + fr.insee + lvqm1pvh + 1 + + TABLEAU1A3M33 + + + choix 3-Question 3 + + + fr.insee + jfkzpexn-QOP-lvqmmp7g + 1 + OutParameter + + + fr.insee + jfkzpexn + 1 + QuestionGrid + + + + + + + fr.insee + lvqlxhr9 + 1 + + TABLEAU1A3M43 + + + choix 4-Question 3 + + + fr.insee + jfkzpexn-QOP-lvqme541 + 1 + OutParameter + + + fr.insee + jfkzpexn + 1 + QuestionGrid + + + + + + + fr.insee + lvqlwy0a + 1 + + TABLEAU1A3M53 + + + choix 5-Question 3 + + + fr.insee + jfkzpexn-QOP-lvqmnl7n + 1 + OutParameter + + + fr.insee + jfkzpexn + 1 + QuestionGrid + + + + + + + fr.insee + lvqkzamx + 1 + + TABLEAU2A11 + + + code1 : le libellé du code 1 contient du gras -choix 1-répartition + + + fr.insee + jfkzttm3-QOP-lvqmpp3h + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvql7llp + 1 + + TABLEAU2A21 + + + code2 le libellé du code 2 contient de l'italique -choix 1-répartition + + + fr.insee + jfkzttm3-QOP-lvqmp0f6 + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvqksivm + 1 + + TABLEAU2A31 + + + code3 : le libellé du code 3 contient du gras et de l'italique-choix 1-répartition + + + fr.insee + jfkzttm3-QOP-lvqmr9zl + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvqla2f9 + 1 + + TABLEAU2A41 + + + code4 : le libellé du code 4 contient du gras italique-choix 1-répartition + + + fr.insee + jfkzttm3-QOP-lvqmhofr + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvqkqajh + 1 + + TABLEAU2A51 + + + code5 : le libellé du code 5 contient des retours à la ligne ligne 2 ligne 3-choix 1-répartition + + + fr.insee + jfkzttm3-QOP-lvqm925l + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvqky3ni + 1 + + TABLEAU2A61 + + + code6-choix 1-répartition + + + fr.insee + jfkzttm3-QOP-lvqmk2co + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvql7ove + 1 + + TABLEAU2A71 + + + [code7](. "My name is Bond, James Bond") le code 7 porte une infobulle-choix 1-répartition + + + fr.insee + jfkzttm3-QOP-lvqmieov + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvqkw82n + 1 + + TABLEAU2A81 + + + code8-choix 1-répartition + + + fr.insee + jfkzttm3-QOP-lvqmn9ud + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvqkz313 + 1 + + TABLEAU2A12 + + + code1 : le libellé du code 1 contient du gras -choix 2-répartition + + + fr.insee + jfkzttm3-QOP-lvqmevmm + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvql8vq5 + 1 + + TABLEAU2A22 + + + code2 le libellé du code 2 contient de l'italique -choix 2-répartition + + + fr.insee + jfkzttm3-QOP-lvqm9f5d + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvqkxyag + 1 + + TABLEAU2A32 + + + code3 : le libellé du code 3 contient du gras et de l'italique-choix 2-répartition + + + fr.insee + jfkzttm3-QOP-lvqme3dy + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvql5eww + 1 + + TABLEAU2A42 + + + code4 : le libellé du code 4 contient du gras italique-choix 2-répartition + + + fr.insee + jfkzttm3-QOP-lvqmhwdj + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvqkxpyq + 1 + + TABLEAU2A52 + + + code5 : le libellé du code 5 contient des retours à la ligne ligne 2 ligne 3-choix 2-répartition + + + fr.insee + jfkzttm3-QOP-lvqmqe8s + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvql19lj + 1 + + TABLEAU2A62 + + + code6-choix 2-répartition + + + fr.insee + jfkzttm3-QOP-lvqmndwb + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvqkyxq2 + 1 + + TABLEAU2A72 + + + [code7](. "My name is Bond, James Bond") le code 7 porte une infobulle-choix 2-répartition + + + fr.insee + jfkzttm3-QOP-lvqmqyz1 + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvqks3r9 + 1 + + TABLEAU2A82 + + + code8-choix 2-répartition + + + fr.insee + jfkzttm3-QOP-lvqmbzuf + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvql89fe + 1 + + TABLEAU2A13 + + + code1 : le libellé du code 1 contient du gras -[choix 3](. "1 2 3 soleil")-répartition + + + fr.insee + jfkzttm3-QOP-lvqmnpru + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvqks46j + 1 + + TABLEAU2A23 + + + code2 le libellé du code 2 contient de l'italique -[choix 3](. "1 2 3 soleil")-répartition + + + fr.insee + jfkzttm3-QOP-lvqma7r2 + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvql1ydf + 1 + + TABLEAU2A33 + + + code3 : le libellé du code 3 contient du gras et de l'italique-[choix 3](. "1 2 3 soleil")-répartition + + + fr.insee + jfkzttm3-QOP-lvqmivrh + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvqkve8m + 1 + + TABLEAU2A43 + + + code4 : le libellé du code 4 contient du gras italique-[choix 3](. "1 2 3 soleil")-répartition + + + fr.insee + jfkzttm3-QOP-lvqmpku8 + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvqlaqw9 + 1 + + TABLEAU2A53 + + + code5 : le libellé du code 5 contient des retours à la ligne ligne 2 ligne 3-[choix 3](. "1 2 3 soleil")-répartition + + + fr.insee + jfkzttm3-QOP-lvqm6awg + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvql4w3x + 1 + + TABLEAU2A63 + + + code6-[choix 3](. "1 2 3 soleil")-répartition + + + fr.insee + jfkzttm3-QOP-lvqmnkx5 + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvqlaexo + 1 + + TABLEAU2A73 + + + [code7](. "My name is Bond, James Bond") le code 7 porte une infobulle-[choix 3](. "1 2 3 soleil")-répartition + + + fr.insee + jfkzttm3-QOP-lvqmju8y + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvql0e3z + 1 + + TABLEAU2A83 + + + code8-[choix 3](. "1 2 3 soleil")-répartition + + + fr.insee + jfkzttm3-QOP-lvqml77w + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvqkt108 + 1 + + TABLEAU2A14 + + + code1 : le libellé du code 1 contient du gras -choix 4-répartition + + + fr.insee + jfkzttm3-QOP-lvqmma9w + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvqks3pt + 1 + + TABLEAU2A24 + + + code2 le libellé du code 2 contient de l'italique -choix 4-répartition + + + fr.insee + jfkzttm3-QOP-lvqmjqao + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvql9p3p + 1 + + TABLEAU2A34 + + + code3 : le libellé du code 3 contient du gras et de l'italique-choix 4-répartition + + + fr.insee + jfkzttm3-QOP-lvqmlo2y + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvqkq1x0 + 1 + + TABLEAU2A44 + + + code4 : le libellé du code 4 contient du gras italique-choix 4-répartition + + + fr.insee + jfkzttm3-QOP-lvqmlhta + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvql4qoq + 1 + + TABLEAU2A54 + + + code5 : le libellé du code 5 contient des retours à la ligne ligne 2 ligne 3-choix 4-répartition + + + fr.insee + jfkzttm3-QOP-lvqmop3k + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvqkug91 + 1 + + TABLEAU2A64 + + + code6-choix 4-répartition + + + fr.insee + jfkzttm3-QOP-lvqmkek3 + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvqkuton + 1 + + TABLEAU2A74 + + + [code7](. "My name is Bond, James Bond") le code 7 porte une infobulle-choix 4-répartition + + + fr.insee + jfkzttm3-QOP-lvqm66xe + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvqkqjit + 1 + + TABLEAU2A84 + + + code8-choix 4-répartition + + + fr.insee + jfkzttm3-QOP-lvqmeowx + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvqku40u + 1 + + TABLEAU2A15 + + + code1 : le libellé du code 1 contient du gras -choix 5-répartition + + + fr.insee + jfkzttm3-QOP-lvqmojr8 + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvql1hsc + 1 + + TABLEAU2A25 + + + code2 le libellé du code 2 contient de l'italique -choix 5-répartition + + + fr.insee + jfkzttm3-QOP-lvqmkt2b + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvqksutv + 1 + + TABLEAU2A35 + + + code3 : le libellé du code 3 contient du gras et de l'italique-choix 5-répartition + + + fr.insee + jfkzttm3-QOP-lvqm8uqs + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvql3qor + 1 + + TABLEAU2A45 + + + code4 : le libellé du code 4 contient du gras italique-choix 5-répartition + + + fr.insee + jfkzttm3-QOP-lvqmqplj + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvql4roa + 1 + + TABLEAU2A55 + + + code5 : le libellé du code 5 contient des retours à la ligne ligne 2 ligne 3-choix 5-répartition + + + fr.insee + jfkzttm3-QOP-lvqm71i9 + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvql73x9 + 1 + + TABLEAU2A65 + + + code6-choix 5-répartition + + + fr.insee + jfkzttm3-QOP-lvqmjas6 + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvqku5wb + 1 + + TABLEAU2A75 + + + [code7](. "My name is Bond, James Bond") le code 7 porte une infobulle-choix 5-répartition + + + fr.insee + jfkzttm3-QOP-lvqm7ipa + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + lvql3wsc + 1 + + TABLEAU2A85 + + + code8-choix 5-répartition + + + fr.insee + jfkzttm3-QOP-lvqmq1kj + 1 + OutParameter + + + fr.insee + jfkzttm3 + 1 + QuestionGrid + + + + + 0 + 10000 + + Decimal + + + + + fr.insee + k6ca5mt1 + 1 + + TABLEAU1AH1M11 + + + code 1 1-Mesure de type numérique avec unité + + + fr.insee + jfkzrwce-QOP-kfs70aez + 1 + OutParameter + + + fr.insee + jfkzrwce + 1 + QuestionGrid + + + + k€ + + 0 + 999 + + Decimal + + + + + fr.insee + k6ca9vpx + 1 + + TABLEAU1AH1M21 + + + code 1 2-Mesure de type numérique avec unité + + + fr.insee + jfkzrwce-QOP-kfs6o7rs + 1 + OutParameter + + + fr.insee + jfkzrwce + 1 + QuestionGrid + + + + k€ + + 0 + 999 + + Decimal + + + + + fr.insee + k6ca3eg3 + 1 + + TABLEAU1AH1M31 + + + code 2 1-Mesure de type numérique avec unité + + + fr.insee + jfkzrwce-QOP-kfs72t19 + 1 + OutParameter + + + fr.insee + jfkzrwce + 1 + QuestionGrid + + + + k€ + + 0 + 999 + + Decimal + + + + + fr.insee + k6c9vgff + 1 + + TABLEAU1AH1M41 + + + code 2 2-Mesure de type numérique avec unité + + + fr.insee + jfkzrwce-QOP-kfs77h7l + 1 + OutParameter + + + fr.insee + jfkzrwce + 1 + QuestionGrid + + + + k€ + + 0 + 999 + + Decimal + + + + + fr.insee + k6ca49wv + 1 + + TABLEAU1AH1M51 + + + code 2 3-Mesure de type numérique avec unité + + + fr.insee + jfkzrwce-QOP-kfs6vcz9 + 1 + OutParameter + + + fr.insee + jfkzrwce + 1 + QuestionGrid + + + + k€ + + 0 + 999 + + Decimal + + + + + fr.insee + k6ca5xg8 + 1 + + TABLEAU1AH1M61 + + + code 3-Mesure de type numérique avec unité + + + fr.insee + jfkzrwce-QOP-kfs7347h + 1 + OutParameter + + + fr.insee + jfkzrwce + 1 + QuestionGrid + + + + k€ + + 0 + 999 + + Decimal + + + + + fr.insee + lvqm6z4l + 1 + + TABESA2 + + + Montant en keuros + + + fr.insee + kzy4vwpj-QOP-lvqmjyfa + 1 + OutParameter + + + fr.insee + kzy4vwpj + 1 + QuestionGrid + + + + k€ + + 0 + 100 + + Decimal + + + + + fr.insee + m2k7zih3 + 1 + + TABESTANP1 + + + Suggester + + + fr.insee + m2k828bm-QOP-m2kdcy7n + 1 + OutParameter + + + fr.insee + m2k828bm + 1 + QuestionGrid + + + + + fr.insee + L_PRODEAP_DECHETS_2024 + 1 + CodeList + + + + + + fr.insee + m2k84bnm + 1 + + TABESTANP2 + + + Montant en keuros + + + fr.insee + m2k828bm-QOP-m2kd8brh + 1 + OutParameter + + + fr.insee + m2k828bm + 1 + QuestionGrid + + + + k€ + + 0 + 100 + + Decimal + + + + + fr.insee + kzy4vwpj-vg + 1 + + + fr.insee + kzy4vwpj + 1 + QuestionGrid + + + Loop + + TABESA + + + fr.insee + m2k8blyy + 1 + Variable + + + fr.insee + lvqm6z4l + 1 + Variable + + + + fr.insee + m2k828bm-vg + 1 + + + fr.insee + m2k828bm + 1 + QuestionGrid + + + Loop + + TABESTANP + + + fr.insee + m2k7zih3 + 1 + Variable + + + fr.insee + m2k84bnm + 1 + Variable + + + + fr.insee + INSEE-Instrument-m1atczym-vg + 1 + + + fr.insee + Instrument-m1atczym + 1 + Instrument + + + Questionnaire + + RESPDESIGN + + + fr.insee + lo5g05no + 1 + Variable + + + fr.insee + kzy6aqqn + 1 + Variable + + + fr.insee + l8u8cwms + 1 + Variable + + + fr.insee + l8u83d29 + 1 + Variable + + + fr.insee + l8u8aqat + 1 + Variable + + + fr.insee + l8u86vzj + 1 + Variable + + + fr.insee + lvqm8fee + 1 + Variable + + + fr.insee + lvqm4qlp + 1 + Variable + + + fr.insee + lvqlzltg + 1 + Variable + + + fr.insee + lvqmbmnk + 1 + Variable + + + fr.insee + lvqlshhy + 1 + Variable + + + fr.insee + lvqlr1fe + 1 + Variable + + + fr.insee + lvqm6pjm + 1 + Variable + + + fr.insee + lvqm0uk3 + 1 + Variable + + + fr.insee + lvqluy0h + 1 + Variable + + + fr.insee + lvqm6fee + 1 + Variable + + + fr.insee + lvqlx4lq + 1 + Variable + + + fr.insee + lvqm1r2b + 1 + Variable + + + fr.insee + lvqm07vm + 1 + Variable + + + fr.insee + lvqm3d93 + 1 + Variable + + + fr.insee + lvqlsmt4 + 1 + Variable + + + fr.insee + lvqm4x3t + 1 + Variable + + + fr.insee + lvqlzg2l + 1 + Variable + + + fr.insee + lvqm1pvh + 1 + Variable + + + fr.insee + lvqlxhr9 + 1 + Variable + + + fr.insee + lvqlwy0a + 1 + Variable + + + fr.insee + lvqkzamx + 1 + Variable + + + fr.insee + lvql7llp + 1 + Variable + + + fr.insee + lvqksivm + 1 + Variable + + + fr.insee + lvqla2f9 + 1 + Variable + + + fr.insee + lvqkqajh + 1 + Variable + + + fr.insee + lvqky3ni + 1 + Variable + + + fr.insee + lvql7ove + 1 + Variable + + + fr.insee + lvqkw82n + 1 + Variable + + + fr.insee + lvqkz313 + 1 + Variable + + + fr.insee + lvql8vq5 + 1 + Variable + + + fr.insee + lvqkxyag + 1 + Variable + + + fr.insee + lvql5eww + 1 + Variable + + + fr.insee + lvqkxpyq + 1 + Variable + + + fr.insee + lvql19lj + 1 + Variable + + + fr.insee + lvqkyxq2 + 1 + Variable + + + fr.insee + lvqks3r9 + 1 + Variable + + + fr.insee + lvql89fe + 1 + Variable + + + fr.insee + lvqks46j + 1 + Variable + + + fr.insee + lvql1ydf + 1 + Variable + + + fr.insee + lvqkve8m + 1 + Variable + + + fr.insee + lvqlaqw9 + 1 + Variable + + + fr.insee + lvql4w3x + 1 + Variable + + + fr.insee + lvqlaexo + 1 + Variable + + + fr.insee + lvql0e3z + 1 + Variable + + + fr.insee + lvqkt108 + 1 + Variable + + + fr.insee + lvqks3pt + 1 + Variable + + + fr.insee + lvql9p3p + 1 + Variable + + + fr.insee + lvqkq1x0 + 1 + Variable + + + fr.insee + lvql4qoq + 1 + Variable + + + fr.insee + lvqkug91 + 1 + Variable + + + fr.insee + lvqkuton + 1 + Variable + + + fr.insee + lvqkqjit + 1 + Variable + + + fr.insee + lvqku40u + 1 + Variable + + + fr.insee + lvql1hsc + 1 + Variable + + + fr.insee + lvqksutv + 1 + Variable + + + fr.insee + lvql3qor + 1 + Variable + + + fr.insee + lvql4roa + 1 + Variable + + + fr.insee + lvql73x9 + 1 + Variable + + + fr.insee + lvqku5wb + 1 + Variable + + + fr.insee + lvql3wsc + 1 + Variable + + + fr.insee + k6ca5mt1 + 1 + Variable + + + fr.insee + k6ca9vpx + 1 + Variable + + + fr.insee + k6ca3eg3 + 1 + Variable + + + fr.insee + k6c9vgff + 1 + Variable + + + fr.insee + k6ca49wv + 1 + Variable + + + fr.insee + k6ca5xg8 + 1 + Variable + + + fr.insee + kzy4vwpj-vg + 1 + VariableGroup + + + fr.insee + m2k828bm-vg + 1 + VariableGroup + + + + + fr.insee + INSEE-SIMPSONS-PIS-1 + 1 + + SIMPSONS + + + Processing instructions of the Simpsons questionnaire + + + fr.insee + lo5g05no-GI + 1 + + fr.insee + l8u8d67h + 1 + QuestionGrid + + + fr.insee + l8u8cwms + 1 + Variable + + + fr.insee + l8u83d29 + 1 + Variable + + + fr.insee + l8u8aqat + 1 + Variable + + + fr.insee + l8u86vzj + 1 + Variable + + + + vtl + + fr.insee + lo5g05no-IP-1 + 1 + + TABLEAUTIC11 + + + + fr.insee + lo5g05no-IP-2 + 1 + + TABLEAUTIC21 + + + + fr.insee + lo5g05no-IP-3 + 1 + + TABLEAUTIC31 + + + + fr.insee + lo5g05no-IP-4 + 1 + + TABLEAUTIC41 + + + + fr.insee + lo5g05no-GOP + 1 + + + + fr.insee + l8u8d67h-QOP-l8u8ju3p + 1 + OutParameter + + + fr.insee + lo5g05no-IP-1 + 1 + InParameter + + + + + fr.insee + l8u8d67h-QOP-l8u8ezod + 1 + OutParameter + + + fr.insee + lo5g05no-IP-2 + 1 + InParameter + + + + + fr.insee + l8u8d67h-QOP-l8u85xql + 1 + OutParameter + + + fr.insee + lo5g05no-IP-3 + 1 + InParameter + + + + + fr.insee + l8u8d67h-QOP-l8u80yaz + 1 + OutParameter + + + fr.insee + lo5g05no-IP-4 + 1 + InParameter + + + nvl(lo5g05no-IP-1,0)+nvl(lo5g05no-IP-2,0)+nvl(lo5g05no-IP-3,0)+ nvl(lo5g05no-IP-4,0) + + + + fr.insee + Sequence-m1atczym + 1 + Sequence + + + + fr.insee + kzy6aqqn-GI + 1 + + + vtl + + fr.insee + kzy6aqqn-GOP + 1 + + sum(nvl($TABESA$,0)) + + + + fr.insee + Sequence-m1atczym + 1 + Sequence + + + + + fr.insee + INSEE-SIMPSONS-MRS + 1 + + Liste de formats numériques et dates de + l'enquête + Numeric and DateTime list for the survey + + + + + fr.insee + StudyUnit-m1atczym + 1 + + + fr.insee + DataCollection-m1atczym + 1 + + fr.insee + QuestionScheme-m1atczym + 1 + QuestionScheme + + + fr.insee + ControlConstructScheme-m1atczym + 1 + ControlConstructScheme + + + fr.insee + InterviewerInstructionScheme-m1atczym + 1 + InterviewerInstructionScheme + + + fr.insee + InstrumentScheme-m1atczym + 1 + + fr.insee + Instrument-m1atczym + 1 + + RESPDESIGN + + + QNONREG - Questionnaire test - partie 3 - tableaux questionnaire + + A définir + + fr.insee + Sequence-m1atczym + 1 + Sequence + + + + + + diff --git a/src/test/resources/specs/TEST-TABLEAUX/WEB/lunatic_TEST-TABLEAUX.json b/src/test/resources/specs/TEST-TABLEAUX/WEB/lunatic_TEST-TABLEAUX.json new file mode 100644 index 00000000..6020bc34 --- /dev/null +++ b/src/test/resources/specs/TEST-TABLEAUX/WEB/lunatic_TEST-TABLEAUX.json @@ -0,0 +1 @@ +{"id":"m1atczym","componentType":"Questionnaire","modele":"RESPDESIGN","enoCoreVersion":"3.27.1","lunaticModelVersion":"3.15.0","generatingDate":"22-10-2024 11:31:56","pagination":"sequence","maxPage":"4","label":{"value":"QNONREG - Questionnaire test - partie 3 - tableaux","type":"VTL|MD"},"components":[{"id":"jfaz9kv9","componentType":"Sequence","page":"1","label":{"value":"\"I - \" || \"Tableaux (y compris contrôles)\"","type":"VTL"},"conditionFilter":{"value":"true","type":"VTL"},"description":{"value":"\"Ceci est une déclaration de type aide CAWI, associée au titre de séquence. Elle doit s'inscrire en description.\"","type":"VTL|MD"}},{"id":"lvqmb9rm","componentType":"Subsequence","page":"1","label":{"value":"\"Tableaux fixes\"","type":"VTL|MD"},"conditionFilter":{"value":"true","type":"VTL"},"description":{"value":"\"Un ensemble de tableaux dont le nombre de cellules est connu à l'avance\"","type":"VTL|MD"}},{"id":"question-l8u8d67h","componentType":"Question","page":"1","label":{"value":"\"1\\. \" || \"Répartition du nombre d'habitants, et comparaison question INTEGER saisie plus tôt\"","type":"VTL|MD"},"declarations":[{"id":"l8u8f3sa","declarationType":"HELP","position":"AFTER_QUESTION_TEXT","label":{"value":"\"exemple typique. Rappel de la valeur collectée = \" || cast(SOMME_TIC,string) ","type":"VTL|MD"}}],"conditionFilter":{"value":"true","type":"VTL"},"components":[{"id":"l8u8d67h","componentType":"Table","mandatory":false,"page":"1","controls":[{"id":"l8u8d67h-RDOP-l8u80yaz-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAUTIC41)) and (0>TABLEAUTIC41 or 20TABLEAUTIC41)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"l8u8d67h-RDOP-l8u85xql-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAUTIC31)) and (0>TABLEAUTIC31 or 20TABLEAUTIC31)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"l8u8d67h-RDOP-l8u8ezod-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAUTIC21)) and (0>TABLEAUTIC21 or 20TABLEAUTIC21)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"l8u8d67h-RDOP-l8u8ju3p-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAUTIC11)) and (0>TABLEAUTIC11 or 20TABLEAUTIC11)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"}],"header":[{"label":{"value":"","type":"VTL|MD"}},{"label":{"value":"\"Nombre de personnes, entre 0 et 20\"","type":"VTL|MD"}}],"body":[[{"value":"1","label":{"value":"\"moins de 15\"","type":"VTL|MD"}},{"componentType":"InputNumber","min":0.0,"max":20.0,"decimals":0,"id":"l8u8d67h-RDOP-l8u8ju3p","response":{"name":"TABLEAUTIC11"}}],[{"value":"2","label":{"value":"\"de 16 à 17 ans\"","type":"VTL|MD"}},{"componentType":"InputNumber","min":0.0,"max":20.0,"decimals":0,"id":"l8u8d67h-RDOP-l8u8ezod","response":{"name":"TABLEAUTIC21"}}],[{"value":"3","label":{"value":"\"de 18 à 19 ans\"","type":"VTL|MD"}},{"componentType":"InputNumber","min":0.0,"max":20.0,"decimals":0,"id":"l8u8d67h-RDOP-l8u85xql","response":{"name":"TABLEAUTIC31"}}],[{"value":"4","label":{"value":"\"20 et plus\"","type":"VTL|MD"}},{"componentType":"InputNumber","min":0.0,"max":20.0,"decimals":0,"id":"l8u8d67h-RDOP-l8u80yaz","response":{"name":"TABLEAUTIC41"}}]],"positioning":"HORIZONTAL"}]},{"id":"question-jfkzltkm","componentType":"Question","page":"1","label":{"value":"\"2\\. \" || \"Tableau un axe simple, une mesure, sans unité\"","type":"VTL|MD"},"declarations":[{"id":"l8ubvmec","declarationType":"HELP","position":"AFTER_QUESTION_TEXT","label":{"value":"\"Vérifier le déclenchement du contrôle si somme des lignes > 100\"","type":"VTL|MD"}}],"conditionFilter":{"value":"true","type":"VTL"},"components":[{"id":"jfkzltkm","componentType":"Table","mandatory":false,"page":"1","controls":[{"id":"jfkzltkm-RDOP-lvqm8clg-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU1A1M51)) and (0>TABLEAU1A1M51 or 100TABLEAU1A1M51)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzltkm-RDOP-lvqm9sx6-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU1A1M41)) and (0>TABLEAU1A1M41 or 100TABLEAU1A1M41)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzltkm-RDOP-lvqm91qy-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU1A1M31)) and (0>TABLEAU1A1M31 or 100TABLEAU1A1M31)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzltkm-RDOP-lvqmlkh8-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU1A1M21)) and (0>TABLEAU1A1M21 or 100TABLEAU1A1M21)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzltkm-RDOP-lvqm7crf-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU1A1M11)) and (0>TABLEAU1A1M11 or 100TABLEAU1A1M11)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzltkm-CI-0","typeOfControl":"CONSISTENCY","criticality":"INFO","control":{"value":"not(nvl(TABLEAU1A1M11,0)+nvl(TABLEAU1A1M21,0)+nvl(TABLEAU1A1M31,0)+nvl(TABLEAU1A1M41,0)+ nvl(TABLEAU1A1M51,0) > 100)","type":"VTL"},"errorMessage":{"value":"\"La somme des lignes est supérieure à 100.\"","type":"VTL|MD"},"type":"SIMPLE"}],"header":[{"label":{"value":"","type":"VTL|MD"}},{"label":{"value":"\"Mesure de type numérique, en k€, jusque 100\"","type":"VTL|MD"}}],"body":[[{"value":"1","label":{"value":"\"choix 1\"","type":"VTL|MD"}},{"componentType":"InputNumber","min":0.0,"max":100.0,"decimals":0,"id":"jfkzltkm-RDOP-lvqm7crf","unit":"k€","response":{"name":"TABLEAU1A1M11"}}],[{"value":"2","label":{"value":"\"choix 2\"","type":"VTL|MD"}},{"componentType":"InputNumber","min":0.0,"max":100.0,"decimals":0,"id":"jfkzltkm-RDOP-lvqmlkh8","unit":"k€","response":{"name":"TABLEAU1A1M21"}}],[{"value":"3","label":{"value":"\"choix 3\"","type":"VTL|MD"}},{"componentType":"InputNumber","min":0.0,"max":100.0,"decimals":0,"id":"jfkzltkm-RDOP-lvqm91qy","unit":"k€","response":{"name":"TABLEAU1A1M31"}}],[{"value":"4","label":{"value":"\"choix 4\"","type":"VTL|MD"}},{"componentType":"InputNumber","min":0.0,"max":100.0,"decimals":0,"id":"jfkzltkm-RDOP-lvqm9sx6","unit":"k€","response":{"name":"TABLEAU1A1M41"}}],[{"value":"5","label":{"value":"\"choix 5\"","type":"VTL|MD"}},{"componentType":"InputNumber","min":0.0,"max":100.0,"decimals":0,"id":"jfkzltkm-RDOP-lvqm8clg","unit":"k€","response":{"name":"TABLEAU1A1M51"}}]],"positioning":"HORIZONTAL"}]},{"id":"question-jfkzpexn","componentType":"Question","page":"1","label":{"value":"\"3\\. \" || \"Tableau un axe simple, plusieurs mesures, une mesure contient une unité\"","type":"VTL|MD"},"conditionFilter":{"value":"true","type":"VTL"},"components":[{"id":"jfkzpexn","componentType":"Table","mandatory":false,"page":"1","controls":[{"id":"jfkzpexn-RDOP-lvqm77b2-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU1A3M51)) and (0>TABLEAU1A3M51 or 999TABLEAU1A3M51)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzpexn-RDOP-lvqmqe2q-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU1A3M41)) and (0>TABLEAU1A3M41 or 999TABLEAU1A3M41)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzpexn-RDOP-lvqmeli8-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU1A3M31)) and (0>TABLEAU1A3M31 or 999TABLEAU1A3M31)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzpexn-RDOP-lvqmimh1-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU1A3M21)) and (0>TABLEAU1A3M21 or 999TABLEAU1A3M21)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzpexn-RDOP-lvqm9mzt-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU1A3M11)) and (0>TABLEAU1A3M11 or 999TABLEAU1A3M11)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"}],"header":[{"label":{"value":"","type":"VTL|MD"}},{"label":{"value":"\"Question 1\"","type":"VTL|MD"}},{"label":{"value":"\"Mesure de type liste\"","type":"VTL|MD"}},{"label":{"value":"\"Question 3\"","type":"VTL|MD"}}],"body":[[{"value":"1","label":{"value":"\"choix 1\"","type":"VTL|MD"}},{"componentType":"InputNumber","min":0.0,"max":999.0,"decimals":0,"id":"jfkzpexn-RDOP-lvqm9mzt","response":{"name":"TABLEAU1A3M11"}},{"componentType":"CheckboxOne","orientation":"horizontal","id":"jfkzpexn-RDOP-lvqmf59x","options":[{"value":"1","label":{"value":"\"Oui\"","type":"VTL|MD"}},{"value":"2","label":{"value":"\"Non\"","type":"VTL|MD"}}],"response":{"name":"TABLEAU1A3M12"}},{"componentType":"Input","maxLength":25,"id":"jfkzpexn-RDOP-lvqm79mk","response":{"name":"TABLEAU1A3M13"}}],[{"value":"2","label":{"value":"\"choix 2\"","type":"VTL|MD"}},{"componentType":"InputNumber","min":0.0,"max":999.0,"decimals":0,"id":"jfkzpexn-RDOP-lvqmimh1","response":{"name":"TABLEAU1A3M21"}},{"componentType":"CheckboxOne","orientation":"horizontal","id":"jfkzpexn-RDOP-lvqmmt6o","options":[{"value":"1","label":{"value":"\"Oui\"","type":"VTL|MD"}},{"value":"2","label":{"value":"\"Non\"","type":"VTL|MD"}}],"response":{"name":"TABLEAU1A3M22"}},{"componentType":"Input","maxLength":25,"id":"jfkzpexn-RDOP-lvqmahs1","response":{"name":"TABLEAU1A3M23"}}],[{"value":"3","label":{"value":"\"choix 3\"","type":"VTL|MD"}},{"componentType":"InputNumber","min":0.0,"max":999.0,"decimals":0,"id":"jfkzpexn-RDOP-lvqmeli8","response":{"name":"TABLEAU1A3M31"}},{"componentType":"CheckboxOne","orientation":"horizontal","id":"jfkzpexn-RDOP-lvqmfli2","options":[{"value":"1","label":{"value":"\"Oui\"","type":"VTL|MD"}},{"value":"2","label":{"value":"\"Non\"","type":"VTL|MD"}}],"response":{"name":"TABLEAU1A3M32"}},{"componentType":"Input","maxLength":25,"id":"jfkzpexn-RDOP-lvqmmp7g","response":{"name":"TABLEAU1A3M33"}}],[{"value":"4","label":{"value":"\"choix 4\"","type":"VTL|MD"}},{"componentType":"InputNumber","min":0.0,"max":999.0,"decimals":0,"id":"jfkzpexn-RDOP-lvqmqe2q","response":{"name":"TABLEAU1A3M41"}},{"componentType":"CheckboxOne","orientation":"horizontal","id":"jfkzpexn-RDOP-lvqm9lha","options":[{"value":"1","label":{"value":"\"Oui\"","type":"VTL|MD"}},{"value":"2","label":{"value":"\"Non\"","type":"VTL|MD"}}],"response":{"name":"TABLEAU1A3M42"}},{"componentType":"Input","maxLength":25,"id":"jfkzpexn-RDOP-lvqme541","response":{"name":"TABLEAU1A3M43"}}],[{"value":"5","label":{"value":"\"choix 5\"","type":"VTL|MD"}},{"componentType":"InputNumber","min":0.0,"max":999.0,"decimals":0,"id":"jfkzpexn-RDOP-lvqm77b2","response":{"name":"TABLEAU1A3M51"}},{"componentType":"CheckboxOne","orientation":"horizontal","id":"jfkzpexn-RDOP-lvqmp1la","options":[{"value":"1","label":{"value":"\"Oui\"","type":"VTL|MD"}},{"value":"2","label":{"value":"\"Non\"","type":"VTL|MD"}}],"response":{"name":"TABLEAU1A3M52"}},{"componentType":"Input","maxLength":25,"id":"jfkzpexn-RDOP-lvqmnl7n","response":{"name":"TABLEAU1A3M53"}}]],"positioning":"HORIZONTAL"}]},{"id":"question-jfkzttm3","componentType":"Question","page":"1","label":{"value":"\"4\\. \" || \"Tableau 2 axes - 1 mesure de type numérique, avec unité\"","type":"VTL|MD"},"declarations":[{"id":"lvqkzgqh","declarationType":"HELP","position":"AFTER_QUESTION_TEXT","label":{"value":"\"Pas de cas connu à ce jour\"","type":"VTL|MD"}}],"conditionFilter":{"value":"true","type":"VTL"},"components":[{"id":"jfkzttm3","componentType":"Table","mandatory":false,"page":"1","controls":[{"id":"jfkzttm3-RDOP-lvqmn9ud-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A81)) and (0>TABLEAU2A81 or 10000TABLEAU2A81)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqmbzuf-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A82)) and (0>TABLEAU2A82 or 10000TABLEAU2A82)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqml77w-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A83)) and (0>TABLEAU2A83 or 10000TABLEAU2A83)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqmeowx-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A84)) and (0>TABLEAU2A84 or 10000TABLEAU2A84)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqmq1kj-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A85)) and (0>TABLEAU2A85 or 10000TABLEAU2A85)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqmieov-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A71)) and (0>TABLEAU2A71 or 10000TABLEAU2A71)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqmqyz1-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A72)) and (0>TABLEAU2A72 or 10000TABLEAU2A72)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqmju8y-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A73)) and (0>TABLEAU2A73 or 10000TABLEAU2A73)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqm66xe-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A74)) and (0>TABLEAU2A74 or 10000TABLEAU2A74)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqm7ipa-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A75)) and (0>TABLEAU2A75 or 10000TABLEAU2A75)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqmk2co-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A61)) and (0>TABLEAU2A61 or 10000TABLEAU2A61)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqmndwb-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A62)) and (0>TABLEAU2A62 or 10000TABLEAU2A62)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqmnkx5-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A63)) and (0>TABLEAU2A63 or 10000TABLEAU2A63)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqmkek3-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A64)) and (0>TABLEAU2A64 or 10000TABLEAU2A64)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqmjas6-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A65)) and (0>TABLEAU2A65 or 10000TABLEAU2A65)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqm925l-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A51)) and (0>TABLEAU2A51 or 10000TABLEAU2A51)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqmqe8s-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A52)) and (0>TABLEAU2A52 or 10000TABLEAU2A52)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqm6awg-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A53)) and (0>TABLEAU2A53 or 10000TABLEAU2A53)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqmop3k-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A54)) and (0>TABLEAU2A54 or 10000TABLEAU2A54)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqm71i9-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A55)) and (0>TABLEAU2A55 or 10000TABLEAU2A55)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqmhofr-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A41)) and (0>TABLEAU2A41 or 10000TABLEAU2A41)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqmhwdj-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A42)) and (0>TABLEAU2A42 or 10000TABLEAU2A42)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqmpku8-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A43)) and (0>TABLEAU2A43 or 10000TABLEAU2A43)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqmlhta-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A44)) and (0>TABLEAU2A44 or 10000TABLEAU2A44)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqmqplj-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A45)) and (0>TABLEAU2A45 or 10000TABLEAU2A45)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqmr9zl-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A31)) and (0>TABLEAU2A31 or 10000TABLEAU2A31)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqme3dy-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A32)) and (0>TABLEAU2A32 or 10000TABLEAU2A32)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqmivrh-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A33)) and (0>TABLEAU2A33 or 10000TABLEAU2A33)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqmlo2y-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A34)) and (0>TABLEAU2A34 or 10000TABLEAU2A34)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqm8uqs-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A35)) and (0>TABLEAU2A35 or 10000TABLEAU2A35)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqmp0f6-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A21)) and (0>TABLEAU2A21 or 10000TABLEAU2A21)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqm9f5d-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A22)) and (0>TABLEAU2A22 or 10000TABLEAU2A22)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqma7r2-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A23)) and (0>TABLEAU2A23 or 10000TABLEAU2A23)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqmjqao-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A24)) and (0>TABLEAU2A24 or 10000TABLEAU2A24)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqmkt2b-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A25)) and (0>TABLEAU2A25 or 10000TABLEAU2A25)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqmpp3h-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A11)) and (0>TABLEAU2A11 or 10000TABLEAU2A11)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqmevmm-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A12)) and (0>TABLEAU2A12 or 10000TABLEAU2A12)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqmnpru-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A13)) and (0>TABLEAU2A13 or 10000TABLEAU2A13)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqmma9w-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A14)) and (0>TABLEAU2A14 or 10000TABLEAU2A14)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzttm3-RDOP-lvqmojr8-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU2A15)) and (0>TABLEAU2A15 or 10000TABLEAU2A15)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"}],"header":[{"label":{"value":"","type":"VTL|MD"}},{"label":{"value":"\"choix 1\"","type":"VTL|MD"}},{"label":{"value":"\"choix 2\"","type":"VTL|MD"}},{"label":{"value":"\"choix 3\"","type":"VTL|MD"}},{"label":{"value":"\"choix 4\"","type":"VTL|MD"}},{"label":{"value":"\"choix 5\"","type":"VTL|MD"}}],"body":[[{"value":"1","label":{"value":"\"code1 : le libellé du code 1 contient **du gras** \"","type":"VTL|MD"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqmpp3h","response":{"name":"TABLEAU2A11"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqmevmm","response":{"name":"TABLEAU2A12"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqmnpru","response":{"name":"TABLEAU2A13"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqmma9w","response":{"name":"TABLEAU2A14"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqmojr8","response":{"name":"TABLEAU2A15"}}],[{"value":"2","label":{"value":"\"code2 le libellé du code 2 contient *de l'italique* \"","type":"VTL|MD"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqmp0f6","response":{"name":"TABLEAU2A21"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqm9f5d","response":{"name":"TABLEAU2A22"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqma7r2","response":{"name":"TABLEAU2A23"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqmjqao","response":{"name":"TABLEAU2A24"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqmkt2b","response":{"name":"TABLEAU2A25"}}],[{"value":"3","label":{"value":"\"code3 : le libellé du code 3 contient **du gras** et *de l'italique*\"","type":"VTL|MD"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqmr9zl","response":{"name":"TABLEAU2A31"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqme3dy","response":{"name":"TABLEAU2A32"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqmivrh","response":{"name":"TABLEAU2A33"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqmlo2y","response":{"name":"TABLEAU2A34"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqm8uqs","response":{"name":"TABLEAU2A35"}}],[{"value":"4","label":{"value":"\"code4 : le libellé du code 4 contient du ***gras italique***\"","type":"VTL|MD"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqmhofr","response":{"name":"TABLEAU2A41"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqmhwdj","response":{"name":"TABLEAU2A42"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqmpku8","response":{"name":"TABLEAU2A43"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqmlhta","response":{"name":"TABLEAU2A44"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqmqplj","response":{"name":"TABLEAU2A45"}}],[{"value":"5","label":{"value":"\"code5 : le libellé du code 5 contient des retours à la ligne \n\nligne 2\n\nligne 3\"","type":"VTL|MD"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqm925l","response":{"name":"TABLEAU2A51"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqmqe8s","response":{"name":"TABLEAU2A52"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqm6awg","response":{"name":"TABLEAU2A53"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqmop3k","response":{"name":"TABLEAU2A54"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqm71i9","response":{"name":"TABLEAU2A55"}}],[{"value":"6","label":{"value":"\"code6\"","type":"VTL|MD"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqmk2co","response":{"name":"TABLEAU2A61"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqmndwb","response":{"name":"TABLEAU2A62"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqmnkx5","response":{"name":"TABLEAU2A63"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqmkek3","response":{"name":"TABLEAU2A64"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqmjas6","response":{"name":"TABLEAU2A65"}}],[{"value":"7","label":{"value":"\"[code7](. 'My name is Bond, James Bond') le code 7 porte une infobulle\"","type":"VTL|MD"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqmieov","response":{"name":"TABLEAU2A71"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqmqyz1","response":{"name":"TABLEAU2A72"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqmju8y","response":{"name":"TABLEAU2A73"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqm66xe","response":{"name":"TABLEAU2A74"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqm7ipa","response":{"name":"TABLEAU2A75"}}],[{"value":"8","label":{"value":"\"code8\"","type":"VTL|MD"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqmn9ud","response":{"name":"TABLEAU2A81"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqmbzuf","response":{"name":"TABLEAU2A82"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqml77w","response":{"name":"TABLEAU2A83"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqmeowx","response":{"name":"TABLEAU2A84"}},{"componentType":"InputNumber","min":0.0,"max":10000.0,"decimals":0,"id":"jfkzttm3-RDOP-lvqmq1kj","response":{"name":"TABLEAU2A85"}}]],"positioning":"HORIZONTAL"}]},{"id":"question-jfkzrwce","componentType":"Question","page":"1","label":{"value":"\"5\\. \" || \"Tableau 1 axe avec hiérarchie , 1 mesure, avec unité \"","type":"VTL|MD"},"declarations":[{"id":"lvqla8eb","declarationType":"HELP","position":"AFTER_QUESTION_TEXT","label":{"value":"\"Un cas recensé dans une enquête de conjoncture\"","type":"VTL|MD"}}],"conditionFilter":{"value":"true","type":"VTL"},"components":[{"id":"jfkzrwce","componentType":"Table","mandatory":false,"page":"1","controls":[{"id":"jfkzrwce-RDOP-kfs7347h-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU1AH1M61)) and (0>TABLEAU1AH1M61 or 999TABLEAU1AH1M61)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzrwce-RDOP-kfs6vcz9-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU1AH1M51)) and (0>TABLEAU1AH1M51 or 999TABLEAU1AH1M51)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzrwce-RDOP-kfs77h7l-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU1AH1M41)) and (0>TABLEAU1AH1M41 or 999TABLEAU1AH1M41)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzrwce-RDOP-kfs72t19-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU1AH1M31)) and (0>TABLEAU1AH1M31 or 999TABLEAU1AH1M31)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzrwce-RDOP-kfs6o7rs-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU1AH1M21)) and (0>TABLEAU1AH1M21 or 999TABLEAU1AH1M21)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"jfkzrwce-RDOP-kfs70aez-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABLEAU1AH1M11)) and (0>TABLEAU1AH1M11 or 999TABLEAU1AH1M11)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"}],"header":[{"label":{"value":"","type":"VTL|MD"},"colspan":2},{"label":{"value":"\"Mesure de type numérique avec unité\"","type":"VTL|MD"}}],"body":[[{"value":"10","label":{"value":"\"code1\"","type":"VTL|MD"},"rowspan":2},{"value":"11","label":{"value":"\"code 1 1\"","type":"VTL|MD"}},{"componentType":"InputNumber","min":0.0,"max":999.0,"decimals":0,"id":"jfkzrwce-RDOP-kfs70aez","unit":"k€","response":{"name":"TABLEAU1AH1M11"}}],[{"value":"12","label":{"value":"\"code 1 2\"","type":"VTL|MD"}},{"componentType":"InputNumber","min":0.0,"max":999.0,"decimals":0,"id":"jfkzrwce-RDOP-kfs6o7rs","unit":"k€","response":{"name":"TABLEAU1AH1M21"}}],[{"value":"20","label":{"value":"\"code2\"","type":"VTL|MD"},"rowspan":3},{"value":"21","label":{"value":"\"code 2 1\"","type":"VTL|MD"}},{"componentType":"InputNumber","min":0.0,"max":999.0,"decimals":0,"id":"jfkzrwce-RDOP-kfs72t19","unit":"k€","response":{"name":"TABLEAU1AH1M31"}}],[{"value":"22","label":{"value":"\"code 2 2\"","type":"VTL|MD"}},{"componentType":"InputNumber","min":0.0,"max":999.0,"decimals":0,"id":"jfkzrwce-RDOP-kfs77h7l","unit":"k€","response":{"name":"TABLEAU1AH1M41"}}],[{"value":"23","label":{"value":"\"code 2 3\"","type":"VTL|MD"}},{"componentType":"InputNumber","min":0.0,"max":999.0,"decimals":0,"id":"jfkzrwce-RDOP-kfs6vcz9","unit":"k€","response":{"name":"TABLEAU1AH1M51"}}],[{"value":"30","label":{"value":"\"code 3\"","type":"VTL|MD"},"colspan":2},{"componentType":"InputNumber","min":0.0,"max":999.0,"decimals":0,"id":"jfkzrwce-RDOP-kfs7347h","unit":"k€","response":{"name":"TABLEAU1AH1M61"}}]],"positioning":"HORIZONTAL"}]},{"id":"lvqme91m","componentType":"Subsequence","page":"1","label":{"value":"\"Tableaux dynamiques\"","type":"VTL|MD"},"conditionFilter":{"value":"true","type":"VTL"},"description":{"value":"\"Un ensemble de tableaux dits dynamiques, l'enquêté peut ajouter des lignes autant que de besoin. Très classique coté entreprises\"","type":"VTL|MD"}},{"id":"question-kzy4vwpj","componentType":"Question","page":"1","label":{"value":"\"6\\. \" || \"Tableau dynamique de 1 à 10, personnalisation type ESA\"","type":"VTL|MD"},"conditionFilter":{"value":"true","type":"VTL"},"components":[{"id":"kzy4vwpj","componentType":"RosterForLoop","mandatory":false,"page":"1","controls":[{"id":"kzy4vwpj-RDOP-lvqmjyfa-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABESA2)) and (0>TABESA2 or 100TABESA2)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"},{"id":"kzy4vwpj-CI-0","typeOfControl":"CONSISTENCY","criticality":"WARN","control":{"value":"not(nvl(TOTESA,0) > 100)","type":"VTL"},"errorMessage":{"value":"\"Ne pas mettre un total supérieur à 100\"","type":"VTL|MD"},"type":"SIMPLE"}],"lines":{"min":{"value":"1","type":"VTL"},"max":{"value":"10","type":"VTL"}},"header":[{"label":{"value":"\"Code ESA \"","type":"VTL|MD"}},{"label":{"value":"\"Montant en keuros\"","type":"VTL|MD"}}],"components":[{"componentType":"Text","label":{"value":"CODESA ","type":"VTL|MD"}},{"componentType":"InputNumber","min":0.0,"max":100.0,"decimals":0,"id":"kzy4vwpj-RDOP-lvqmjyfa","unit":"k€","response":{"name":"TABESA2"}}],"positioning":"HORIZONTAL"}]},{"id":"question-m2k828bm","componentType":"Question","page":"1","label":{"value":"\"7\\. \" || \"Tableau dynamique de 1 à 10, première colonne suggester\"","type":"VTL|MD"},"conditionFilter":{"value":"true","type":"VTL"},"components":[{"id":"m2k828bm","componentType":"RosterForLoop","mandatory":false,"page":"1","controls":[{"id":"m2k828bm-RDOP-m2kd8brh-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(TABESTANP2)) and (0>TABESTANP2 or 100TABESTANP2)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"}],"lines":{"min":{"value":"1","type":"VTL"},"max":{"value":"10","type":"VTL"}},"header":[{"label":{"value":"\"Suggester\"","type":"VTL|MD"}},{"label":{"value":"\"Montant en keuros\"","type":"VTL|MD"}}],"components":[{"componentType":"Suggester","id":"m2k828bm-RDOP-m2kdcy7n","response":{"name":"TABESTANP1"},"storeName":"L_PRODEAP_DECHETS_2024"},{"componentType":"InputNumber","min":0.0,"max":100.0,"decimals":0,"id":"m2k828bm-RDOP-m2kd8brh","unit":"k€","response":{"name":"TABESTANP2"}}],"positioning":"HORIZONTAL"}]},{"id":"kfxmfvwl","componentType":"Sequence","page":"2","label":{"value":"\"II - \" || \"FIN\"","type":"VTL"},"conditionFilter":{"value":"true","type":"VTL"}},{"id":"TIME-SEQ","componentType":"Sequence","page":"3","label":{"value":"\"Temps de réponse\"","type":"VTL"},"conditionFilter":{"value":"true","type":"VTL"}},{"id":"question-TIME-QUESTION-HEURE-REMPL","componentType":"Question","page":"3","label":{"value":"\"1\\. \" || \"Combien de temps avez-vous mis en tout pour répondre à cette enquête (recherche des données + remplissage du questionnaire) ?\"","type":"VTL|MD"},"conditionFilter":{"value":"true","type":"VTL"},"components":[{"id":"TIME-QUESTION-HEURE-REMPL","componentType":"InputNumber","mandatory":false,"page":"3","min":0.0,"max":99.0,"decimals":0,"unit":"heures","controls":[{"id":"TIME-QUESTION-HEURE-REMPL-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(HEURE_REMPL)) and (0>HEURE_REMPL or 99HEURE_REMPL)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"}],"response":{"name":"HEURE_REMPL"},"description":{"value":"Format attendu : un nombre en heures entre 0 et 99","type":"TXT"}}]},{"id":"question-TIME-QUESTION-MIN-REMPL","componentType":"Question","page":"3","label":{"value":"","type":"VTL|MD"},"conditionFilter":{"value":"true","type":"VTL"},"components":[{"id":"TIME-QUESTION-MIN-REMPL","componentType":"InputNumber","mandatory":false,"page":"3","min":0.0,"max":59.0,"decimals":0,"unit":"minutes","controls":[{"id":"TIME-QUESTION-MIN-REMPL-format-borne-inf-sup","typeOfControl":"FORMAT","criticality":"ERROR","control":{"value":"not(not(isnull(MIN_REMPL)) and (0>MIN_REMPL or 59MIN_REMPL)","type":"VTL"},"errorMessage":{"value":"\"Le nombre doit comporter au maximum 0 chiffre(s) après la virgule.\"","type":"VTL|MD"},"type":"SIMPLE"}],"response":{"name":"MIN_REMPL"},"description":{"value":"Format attendu : un nombre en minutes entre 0 et 59","type":"TXT"}}]},{"id":"COMMENT-SEQ","componentType":"Sequence","page":"4","label":{"value":"\"Commentaire\"","type":"VTL"},"conditionFilter":{"value":"true","type":"VTL"}},{"id":"question-COMMENT-QUESTION","componentType":"Question","page":"4","label":{"value":"\"2\\. \" || \"Avez-vous des remarques concernant l'enquête ou des commentaires ?\"","type":"VTL|MD"},"conditionFilter":{"value":"true","type":"VTL"},"components":[{"id":"COMMENT-QUESTION","componentType":"Textarea","mandatory":false,"page":"4","maxLength":2000,"response":{"name":"COMMENT_QE"}}]}],"suggesters":[{"name":"L_PRODEAP_DECHETS_2024","fields":[{"name":"id","rules":["[\\w]+"],"language":"French","min":3,"stemmer":false},{"name":"label","rules":["[\\w]+"],"language":"French","min":3,"stemmer":false},{"name":"nc","rules":["[\\w]+"],"language":"French","min":3,"stemmer":false}],"queryParser":{"type":"tokenized","params":{"language":"French","min":3,"pattern":"[\\w.]+","stemmer":false}},"version":1}],"variables":[{"name":"SOMME_TIC","variableType":"CALCULATED","expression":{"value":"nvl(TABLEAUTIC11,0)+nvl(TABLEAUTIC21,0)+nvl(TABLEAUTIC31,0)+ nvl(TABLEAUTIC41,0)","type":"VTL"},"bindingDependencies":["TABLEAUTIC11","TABLEAUTIC21","TABLEAUTIC31","TABLEAUTIC41"],"dimension":0},{"name":"TOTESA","variableType":"CALCULATED","expression":{"value":"sum(nvl($TABESA$,0))","type":"VTL"},"dimension":0},{"name":"CODESA","variableType":"EXTERNAL","value":[],"iterationReference":"kzy4vwpj","dimension":1},{"name":"TABLEAUTIC11","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAUTIC21","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAUTIC31","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAUTIC41","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU1A1M11","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU1A1M21","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU1A1M31","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU1A1M41","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU1A1M51","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU1A3M11","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU1A3M21","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU1A3M31","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU1A3M41","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU1A3M51","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU1A3M12","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU1A3M22","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU1A3M32","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU1A3M42","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU1A3M52","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU1A3M13","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU1A3M23","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU1A3M33","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU1A3M43","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU1A3M53","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A11","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A21","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A31","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A41","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A51","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A61","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A71","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A81","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A12","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A22","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A32","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A42","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A52","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A62","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A72","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A82","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A13","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A23","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A33","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A43","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A53","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A63","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A73","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A83","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A14","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A24","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A34","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A44","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A54","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A64","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A74","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A84","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A15","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A25","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A35","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A45","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A55","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A65","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A75","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU2A85","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU1AH1M11","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU1AH1M21","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU1AH1M31","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU1AH1M41","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU1AH1M51","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABLEAU1AH1M61","variableType":"COLLECTED","values":{"PREVIOUS":null,"COLLECTED":null,"FORCED":null,"EDITED":null,"INPUTTED":null},"dimension":0},{"name":"TABESA2","variableType":"COLLECTED","values":{"PREVIOUS":[],"COLLECTED":[],"FORCED":[],"EDITED":[],"INPUTTED":[]},"iterationReference":"kzy4vwpj","dimension":1},{"name":"TABESTANP1","variableType":"COLLECTED","values":{"PREVIOUS":[],"COLLECTED":[],"FORCED":[],"EDITED":[],"INPUTTED":[]},"iterationReference":"m2k828bm","dimension":1},{"name":"TABESTANP2","variableType":"COLLECTED","values":{"PREVIOUS":[],"COLLECTED":[],"FORCED":[],"EDITED":[],"INPUTTED":[]},"iterationReference":"m2k828bm","dimension":1},{"name":"HEURE_REMPL","variableType":"COLLECTED"},{"name":"MIN_REMPL","variableType":"COLLECTED"},{"name":"COMMENT_QE","variableType":"COLLECTED"},{"name":"FILTER_RESULT_TABLEAUTIC11","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAUTIC21","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAUTIC31","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAUTIC41","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU1A1M11","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU1A1M21","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU1A1M31","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU1A1M41","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU1A1M51","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU1A3M11","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU1A3M12","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU1A3M13","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU1A3M21","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU1A3M22","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU1A3M23","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU1A3M31","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU1A3M32","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU1A3M33","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU1A3M41","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU1A3M42","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU1A3M43","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU1A3M51","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU1A3M52","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU1A3M53","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A11","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A12","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A13","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A14","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A15","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A21","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A22","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A23","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A24","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A25","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A31","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A32","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A33","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A34","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A35","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A41","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A42","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A43","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A44","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A45","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A51","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A52","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A53","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A54","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A55","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A61","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A62","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A63","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A64","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A65","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A71","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A72","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A73","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A74","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A75","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A81","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A82","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A83","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A84","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU2A85","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU1AH1M11","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU1AH1M21","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU1AH1M31","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU1AH1M41","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU1AH1M51","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABLEAU1AH1M61","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"dimension":0},{"name":"FILTER_RESULT_TABESA2","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"shapeFrom":["TABESA2"],"iterationReference":"kzy4vwpj","dimension":1},{"name":"FILTER_RESULT_TABESTANP1","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"shapeFrom":["TABESTANP1","TABESTANP2"],"iterationReference":"m2k828bm","dimension":1},{"name":"FILTER_RESULT_TABESTANP2","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"},"shapeFrom":["TABESTANP1","TABESTANP2"],"iterationReference":"m2k828bm","dimension":1},{"name":"FILTER_RESULT_HEURE_REMPL","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"}},{"name":"FILTER_RESULT_MIN_REMPL","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"}},{"name":"FILTER_RESULT_COMMENT_QE","variableType":"CALCULATED","expression":{"value":"true","type":"VTL"}}],"resizing":{}} \ No newline at end of file