From f6f1b3d1adf3001ec1e29887e7d305726158832d Mon Sep 17 00:00:00 2001 From: lucile varloteaux <lucile.varloteaux@inrae.fr> Date: Mon, 25 Apr 2022 15:01:46 +0200 Subject: [PATCH 01/10] =?UTF-8?q?mise=20en=20page=20de=20la=20cr=C3=A9atio?= =?UTF-8?q?n=20d'application?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ui/src/locales/en.json | 3 ++- ui/src/locales/fr.json | 3 ++- .../application/ApplicationCreationView.vue | 18 ++++++++++++------ 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/ui/src/locales/en.json b/ui/src/locales/en.json index a9422e403..c17ab109b 100644 --- a/ui/src/locales/en.json +++ b/ui/src/locales/en.json @@ -91,7 +91,8 @@ "trierRecent":"Recent date", "filter":"Filter by", "change": "Edit app", - "version" : "The current version of the application <b class=\"has-text-primary\">{applicationName}</b> is <b class=\"has-text-primary\">{version}.</b>" + "version" : "The current version of the application <b class=\"has-text-primary\">{applicationName}</b> is <b class=\"has-text-primary\">{version}.</b>", + "help_config" : "Help PDF configuration" }, "errors": { "authorizationScopeVariableComponentKeyMissingVariable": "You must indicate the variable in which to collect the spatial information to which to attach the data for the management of the rights dataset <code> {dataType} </code> for the authorization <code> {authorizationName} </code>. Possible values ​​<code> {variables} </code> ", diff --git a/ui/src/locales/fr.json b/ui/src/locales/fr.json index 8def8733f..17f13cccf 100644 --- a/ui/src/locales/fr.json +++ b/ui/src/locales/fr.json @@ -91,7 +91,8 @@ "trierRecent": "Date récente", "filter": "Filtrer", "change": "Modifier l'application", - "version" : "La version actuelle de l'application <b class=\"has-text-primary\">{applicationName}</b> est la version <b class=\"has-text-primary\">{version}.</b>" + "version" : "La version actuelle de l'application <b class=\"has-text-primary\">{applicationName}</b> est la version <b class=\"has-text-primary\">{version}.</b>", + "help_config" : "PDF aide configuration" }, "errors": { "authorizationScopeVariableComponentKeyMissingVariable": "Il faut indiquer la variable dans laquelle on recueille les informations spatiales à laquelle rattacher la donnée pour le gestion des droits jeu de données <code>{dataType}</code> pour l'autorisation <code>{authorizationName}</code>. Valeurs possibles <code>{variables}</code>", diff --git a/ui/src/views/application/ApplicationCreationView.vue b/ui/src/views/application/ApplicationCreationView.vue index 03e910b93..67882a8a6 100644 --- a/ui/src/views/application/ApplicationCreationView.vue +++ b/ui/src/views/application/ApplicationCreationView.vue @@ -28,11 +28,20 @@ {{ applicationConfig.file.name }} </span> </b-upload> + <sup> + <b-tooltip :label="$t('applications.help_config')" position="is-right"> + <a @click="showHelp" style="color: #006464FF;margin-left: 10px"><b-icon icon="question-circle"> </b-icon></a> + </b-tooltip> + </sup> </b-field> </ValidationProvider> <div style="margin: 5px" class="column is-1"> - <b-button size="is-small" type="is-primary" @click="showHelp" icon-left="question" outlined rounded/> + <b-button type="is-light" @click="handleSubmit(testApplication)" icon-left="vial"> + {{ $t("applications.test") }} + </b-button> </div> + </div> + <div class="columns"> <ValidationProvider class="column" rules="required|validApplicationName|validApplicationNameLength" @@ -68,9 +77,6 @@ </b-field> </div> <div class="buttons"> - <b-button type="is-light" @click="handleSubmit(testApplication)" icon-left="vial"> - {{ $t("applications.test") }} - </b-button> <b-button type="is-warning" @click="handleSubmit(changeConfiguration)" icon-left="edit"> {{ $t("applications.change") }} </b-button> @@ -141,8 +147,8 @@ export default class ApplicationCreationView extends Vue { } } showHelp(){ - //window.open(this.$router.push("/help")); - this.$router.push("/help"); + let routeData = this.$router.resolve("/help"); + window.open(routeData.href, '_blank'); } async testApplication() { -- GitLab From 08aa388824638da8a699038a4ce29aa766d80023 Mon Sep 17 00:00:00 2001 From: lucile varloteaux <lucile.varloteaux@inrae.fr> Date: Mon, 25 Apr 2022 16:05:58 +0200 Subject: [PATCH 02/10] =?UTF-8?q?r=C3=A9cup=C3=A9ration=20des=20infos=20da?= =?UTF-8?q?ns=20le=20fichier=20de=20configuration?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ui/src/views/application/ApplicationCreationView.vue | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ui/src/views/application/ApplicationCreationView.vue b/ui/src/views/application/ApplicationCreationView.vue index 67882a8a6..c6a817bdc 100644 --- a/ui/src/views/application/ApplicationCreationView.vue +++ b/ui/src/views/application/ApplicationCreationView.vue @@ -40,11 +40,14 @@ {{ $t("applications.test") }} </b-button> </div> + <div class="column is-1"> + <b-tag v-if="applicationConfig.version" type="is-warning">Version actuelle de l'application : {{ applicationConfig.version }}</b-tag> + </div> </div> <div class="columns"> <ValidationProvider + v-if="applicationConfig.name" class="column" - rules="required|validApplicationName|validApplicationNameLength" name="applicationsName" v-slot="{ errors, valid }" vid="applicationsName" @@ -156,6 +159,8 @@ export default class ApplicationCreationView extends Vue { try { let response = await this.applicationService.validateConfiguration(this.applicationConfig); if (response.valid === true) { + this.applicationConfig.name = response.result.application.name.toLowerCase(); + this.applicationConfig.version = response.result.application.version; this.alertService.toastSuccess(this.$t("alert.application-validate-success")); } else { this.errorsMessages = this.errorsService.getErrorsMessages(response.validationCheckResults); -- GitLab From efdb20f20e6a089e4ae6f893e87c6320897d8a3b Mon Sep 17 00:00:00 2001 From: lucile varloteaux <lucile.varloteaux@inrae.fr> Date: Mon, 25 Apr 2022 16:30:45 +0200 Subject: [PATCH 03/10] =?UTF-8?q?ajout=20des=20conditions=20de=20visibilit?= =?UTF-8?q?=C3=A9=20des=20champs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/ApplicationCreationView.vue | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/ui/src/views/application/ApplicationCreationView.vue b/ui/src/views/application/ApplicationCreationView.vue index c6a817bdc..4cd459ce2 100644 --- a/ui/src/views/application/ApplicationCreationView.vue +++ b/ui/src/views/application/ApplicationCreationView.vue @@ -21,12 +21,12 @@ > <b-upload v-model="applicationConfig.file" class="file-label" accept=".yaml, .zip"> <span class="file-cta"> - <b-icon class="file-icon" icon="upload"></b-icon> - <span class="file-label">{{ $t("applications.chose-config") }}</span> - </span> + <b-icon class="file-icon" icon="upload"></b-icon> + <span class="file-label">{{ $t("applications.chose-config") }}</span> + </span> <span class="file-name" v-if="applicationConfig.file"> - {{ applicationConfig.file.name }} - </span> + {{ applicationConfig.file.name }} + </span> </b-upload> <sup> <b-tooltip :label="$t('applications.help_config')" position="is-right"> @@ -41,7 +41,7 @@ </b-button> </div> <div class="column is-1"> - <b-tag v-if="applicationConfig.version" type="is-warning">Version actuelle de l'application : {{ applicationConfig.version }}</b-tag> + <b-tag v-if="applicationConfig.version" type="is-warning" size="is-large" style="margin: 5px;">Version actuelle de l'application : {{ applicationConfig.version }}</b-tag> </div> </div> <div class="columns"> @@ -80,10 +80,10 @@ </b-field> </div> <div class="buttons"> - <b-button type="is-warning" @click="handleSubmit(changeConfiguration)" icon-left="edit"> + <b-button v-if="btnUpdateConfig" type="is-warning" @click="handleSubmit(changeConfiguration)" icon-left="edit"> {{ $t("applications.change") }} </b-button> - <b-button type="is-primary" @click="handleSubmit(createApplication)" icon-left="plus"> + <b-button v-if="applicationConfig.name !==''" type="is-primary" @click="handleSubmit(createApplication)" icon-left="plus"> {{ $t("applications.create") }} </b-button> </div> @@ -125,6 +125,7 @@ export default class ApplicationCreationView extends Vue { alertService = AlertService.INSTANCE; applicationConfig = new ApplicationConfig(); + btnUpdateConfig = false; errorsMessages = []; comment = ""; @@ -161,6 +162,9 @@ export default class ApplicationCreationView extends Vue { if (response.valid === true) { this.applicationConfig.name = response.result.application.name.toLowerCase(); this.applicationConfig.version = response.result.application.version; + if(this.applicationConfig.version !==1) { + this.btnUpdateConfig = true; + } this.alertService.toastSuccess(this.$t("alert.application-validate-success")); } else { this.errorsMessages = this.errorsService.getErrorsMessages(response.validationCheckResults); -- GitLab From 0a71ae147b317f2ccc19e50e0e7e79c5828f5443 Mon Sep 17 00:00:00 2001 From: lucile varloteaux <lucile.varloteaux@inrae.fr> Date: Mon, 25 Apr 2022 22:22:41 +0200 Subject: [PATCH 04/10] finalisation --- ui/src/locales/en.json | 3 +- ui/src/locales/fr.json | 3 +- ui/src/services/AlertService.js | 4 +- ui/src/services/ErrorsService.js | 2 +- ui/src/services/Fetcher.js | 12 +-- ui/src/services/rest/DataService.js | 12 ++- ui/src/services/rest/ReferenceService.js | 2 +- .../application/ApplicationCreationView.vue | 85 ++++++++++++------- .../datatype/DataTypesManagementView.vue | 55 ++++++------ ui/src/views/documentation/HelpView.vue | 10 +-- .../references/ReferencesManagementView.vue | 42 ++++----- 11 files changed, 125 insertions(+), 105 deletions(-) diff --git a/ui/src/locales/en.json b/ui/src/locales/en.json index 3a9843786..8d82b2044 100644 --- a/ui/src/locales/en.json +++ b/ui/src/locales/en.json @@ -93,7 +93,8 @@ "filter":"Filter by", "change": "Edit app", "version" : "The current version of the application <b class=\"has-text-primary\">{applicationName}</b> is <b class=\"has-text-primary\">{version}.</b>", - "help_config" : "Help PDF configuration" + "help_config" : "Help PDF configuration", + "app_version": "Current app version :" }, "errors": { "authorizationScopeVariableComponentKeyMissingVariable": "You must indicate the variable in which to collect the spatial information to which to attach the data for the management of the rights dataset <code> {dataType} </code> for the authorization <code> {authorizationName} </code>. Possible values ​​<code> {variables} </code> ", diff --git a/ui/src/locales/fr.json b/ui/src/locales/fr.json index 06924a4af..0daaec098 100644 --- a/ui/src/locales/fr.json +++ b/ui/src/locales/fr.json @@ -93,7 +93,8 @@ "filter": "Filtrer", "change": "Modifier l'application", "version" : "La version actuelle de l'application <b class=\"has-text-primary\">{applicationName}</b> est la version <b class=\"has-text-primary\">{version}.</b>", - "help_config" : "PDF aide configuration" + "help_config" : "PDF aide configuration", + "app_version": "Version actuelle de l'application :" }, "errors": { "authorizationScopeVariableComponentKeyMissingVariable": "Il faut indiquer la variable dans laquelle on recueille les informations spatiales à laquelle rattacher la donnée pour le gestion des droits jeu de données <code>{dataType}</code> pour l'autorisation <code>{authorizationName}</code>. Valeurs possibles <code>{variables}</code>", diff --git a/ui/src/services/AlertService.js b/ui/src/services/AlertService.js index bcfe66bf8..a06472de4 100644 --- a/ui/src/services/AlertService.js +++ b/ui/src/services/AlertService.js @@ -43,9 +43,7 @@ export class AlertService { toastServerError(error) { if (error.content != null) { - error.content.then( - value => this.toastError(value.message, error) - ); + error.content.then((value) => this.toastError(value.message, error)); } else { this.toastError(i18n.t("alert.server-error"), error); } diff --git a/ui/src/services/ErrorsService.js b/ui/src/services/ErrorsService.js index af60cfebd..500f022ba 100644 --- a/ui/src/services/ErrorsService.js +++ b/ui/src/services/ErrorsService.js @@ -132,7 +132,7 @@ export class ErrorsService { } getCsvErrorsMessages(csvErrors) { - console.log("coucou : ",csvErrors); + console.log("coucou : ", csvErrors); return csvErrors.map((csvError) => { const func = ERRORS[csvError.validationCheckResult.message]; if (!func) { diff --git a/ui/src/services/Fetcher.js b/ui/src/services/Fetcher.js index 077a9ac6a..e0cf7fda2 100644 --- a/ui/src/services/Fetcher.js +++ b/ui/src/services/Fetcher.js @@ -93,7 +93,7 @@ export class Fetcher { async _handleResponse(response, isText) { try { - const text = await isText?response.text():response.json(); + const text = (await isText) ? response.text() : response.json(); if (response.ok && response.status !== HttpStatusCodes.NO_CONTENT) { return Promise.resolve(text); } @@ -114,11 +114,11 @@ export class Fetcher { async downloadFile(urlPath) { const url = new URL(`${config.API_URL}${urlPath}`); - console.log(url) + console.log(url); const link = document.createElement("a"); - link.href=url; - link.type='application/octet-stream' - link.download = "export.csv" + link.href = url; + link.type = "application/octet-stream"; + link.download = "export.csv"; link.click(); } @@ -146,4 +146,4 @@ export class Fetcher { Locales.FRENCH ); } -} \ No newline at end of file +} diff --git a/ui/src/services/rest/DataService.js b/ui/src/services/rest/DataService.js index fac3f365b..f9a35dc63 100644 --- a/ui/src/services/rest/DataService.js +++ b/ui/src/services/rest/DataService.js @@ -14,9 +14,13 @@ export class DataService extends Fetcher { } async getDataTypesCsv(applicationName, dataTypeId, params) { - return this.get(`applications/${applicationName}/data/${dataTypeId}/csv`, { - downloadDatasetQuery: JSON.stringify(params), - }, true); + return this.get( + `applications/${applicationName}/data/${dataTypeId}/csv`, + { + downloadDatasetQuery: JSON.stringify(params), + }, + true + ); } async addData(applicationName, dataTypeId, dataTypeFile, params) { @@ -25,4 +29,4 @@ export class DataService extends Fetcher { params: JSON.stringify(params), }); } -} \ No newline at end of file +} diff --git a/ui/src/services/rest/ReferenceService.js b/ui/src/services/rest/ReferenceService.js index 5958ab24a..957365878 100644 --- a/ui/src/services/rest/ReferenceService.js +++ b/ui/src/services/rest/ReferenceService.js @@ -24,4 +24,4 @@ export class ReferenceService extends Fetcher { file: refFile, }); } -} \ No newline at end of file +} diff --git a/ui/src/views/application/ApplicationCreationView.vue b/ui/src/views/application/ApplicationCreationView.vue index 4cd459ce2..a02550f47 100644 --- a/ui/src/views/application/ApplicationCreationView.vue +++ b/ui/src/views/application/ApplicationCreationView.vue @@ -6,18 +6,18 @@ <ValidationObserver ref="observer" v-slot="{ handleSubmit }"> <div class="columns"> <ValidationProvider - class="column is-3" - rules="required" - name="applicationCreation" - v-slot="{ errors, valid }" - vid="applicationCreation" + class="column is-3" + rules="required" + name="applicationCreation" + v-slot="{ errors, valid }" + vid="applicationCreation" > <b-field - class="file is-primary" - :type="{ - 'is-danger': errors && errors.length > 0, - 'is-success': valid, - }" + class="file is-primary" + :type="{ + 'is-danger': errors && errors.length > 0, + 'is-success': valid, + }" > <b-upload v-model="applicationConfig.file" class="file-label" accept=".yaml, .zip"> <span class="file-cta"> @@ -30,7 +30,9 @@ </b-upload> <sup> <b-tooltip :label="$t('applications.help_config')" position="is-right"> - <a @click="showHelp" style="color: #006464FF;margin-left: 10px"><b-icon icon="question-circle"> </b-icon></a> + <a @click="showHelp" style="color: #006464ff; margin-left: 10px" + ><b-icon icon="question-circle"> </b-icon + ></a> </b-tooltip> </sup> </b-field> @@ -41,34 +43,41 @@ </b-button> </div> <div class="column is-1"> - <b-tag v-if="applicationConfig.version" type="is-warning" size="is-large" style="margin: 5px;">Version actuelle de l'application : {{ applicationConfig.version }}</b-tag> + <b-tag + v-if="applicationConfig.version" + type="is-warning" + size="is-large" + style="margin: 5px" + > + {{ $t("applications.app_version") }}{{ applicationConfig.version }} + </b-tag> </div> </div> <div class="columns"> <ValidationProvider - v-if="applicationConfig.name" - class="column" - name="applicationsName" - v-slot="{ errors, valid }" - vid="applicationsName" + v-if="applicationConfig.name" + class="column" + name="applicationsName" + v-slot="{ errors, valid }" + vid="applicationsName" > <b-field - class="input-field" - :type="{ - 'is-danger': errors && errors.length > 0, - 'is-success': valid, - }" - :message="errors[0]" + class="input-field" + :type="{ + 'is-danger': errors && errors.length > 0, + 'is-success': valid, + }" + :message="errors[0]" > <template slot="label"> {{ $t("applications.name") }} <span class="mandatory"> - {{ $t("validation.obligatoire") }} - </span> + {{ $t("validation.obligatoire") }} + </span> </template> <b-input - v-model="applicationConfig.name" - :placeholder="$t('applications.name-placeholder')" + v-model="applicationConfig.name" + :placeholder="$t('applications.name-placeholder')" > </b-input> </b-field> @@ -80,10 +89,20 @@ </b-field> </div> <div class="buttons"> - <b-button v-if="btnUpdateConfig" type="is-warning" @click="handleSubmit(changeConfiguration)" icon-left="edit"> + <b-button + v-if="btnUpdateConfig" + type="is-warning" + @click="handleSubmit(changeConfiguration)" + icon-left="edit" + > {{ $t("applications.change") }} </b-button> - <b-button v-if="applicationConfig.name !==''" type="is-primary" @click="handleSubmit(createApplication)" icon-left="plus"> + <b-button + v-if="applicationConfig.name !== ''" + type="is-primary" + @click="handleSubmit(createApplication)" + icon-left="plus" + > {{ $t("applications.create") }} </b-button> </div> @@ -150,9 +169,9 @@ export default class ApplicationCreationView extends Vue { this.checkMessageErrors(error); } } - showHelp(){ + showHelp() { let routeData = this.$router.resolve("/help"); - window.open(routeData.href, '_blank'); + window.open(routeData.href, "_blank"); } async testApplication() { @@ -162,7 +181,7 @@ export default class ApplicationCreationView extends Vue { if (response.valid === true) { this.applicationConfig.name = response.result.application.name.toLowerCase(); this.applicationConfig.version = response.result.application.version; - if(this.applicationConfig.version !==1) { + if (this.applicationConfig.version !== 1) { this.btnUpdateConfig = true; } this.alertService.toastSuccess(this.$t("alert.application-validate-success")); @@ -184,4 +203,4 @@ export default class ApplicationCreationView extends Vue { } } } -</script> \ No newline at end of file +</script> diff --git a/ui/src/views/datatype/DataTypesManagementView.vue b/ui/src/views/datatype/DataTypesManagementView.vue index 3c1817d79..3f6cd7795 100644 --- a/ui/src/views/datatype/DataTypesManagementView.vue +++ b/ui/src/views/datatype/DataTypesManagementView.vue @@ -18,11 +18,11 @@ <div v-if="errorsMessages.length" style="margin: 10px"> <div v-for="msg in errorsMessages" v-bind:key="msg"> <b-message - :title="$t('message.data-type-config-error')" - type="is-danger" - has-icon - :aria-close-label="$t('message.close')" - class="mt-4 DataTypesManagementView-message" + :title="$t('message.data-type-config-error')" + type="is-danger" + has-icon + :aria-close-label="$t('message.close')" + class="mt-4 DataTypesManagementView-message" > <span v-html="msg" /> </b-message> @@ -31,8 +31,8 @@ <div> <CollapsibleTree class="liste" - v-for="(data,i) in dataTypes" - :id="i+1" + v-for="(data, i) in dataTypes" + :id="i + 1" :key="data.id" :option="{ ...data, @@ -88,7 +88,7 @@ import { InternationalisationService } from "@/services/InternationalisationServ import DataTypeDetailsPanel from "@/components/datatype/DataTypeDetailsPanel.vue"; import AvailablityChart from "@/components/charts/AvailiblityChart.vue"; import DetailModalCard from "@/components/charts/DetailModalCard"; -import {DownloadDatasetQuery} from "@/model/application/DownloadDatasetQuery"; +import { DownloadDatasetQuery } from "@/model/application/DownloadDatasetQuery"; @Component({ components: { @@ -267,17 +267,14 @@ export default class DataTypesManagementView extends Vue { } async downloadDataType(event) { - let param = new DownloadDatasetQuery(this.application, this.applicationName, event) - console.log('download',new DownloadDatasetQuery(), event) - let csv = await this.dataService.getDataTypesCsv( - this.applicationName, - event, - param); - var hiddenElement = document.createElement('a'); - hiddenElement.href = 'data:text/csv;charset=utf-8,' + encodeURI(csv); + let param = new DownloadDatasetQuery(this.application, this.applicationName, event); + console.log("download", new DownloadDatasetQuery(), event); + let csv = await this.dataService.getDataTypesCsv(this.applicationName, event, param); + var hiddenElement = document.createElement("a"); + hiddenElement.href = "data:text/csv;charset=utf-8," + encodeURI(csv); //provide the name for the CSV file to be downloaded - hiddenElement.download = 'export.csv'; + hiddenElement.download = "export.csv"; hiddenElement.click(); return false; } @@ -286,19 +283,17 @@ export default class DataTypesManagementView extends Vue { if (error.httpResponseCode === HttpStatusCodes.BAD_REQUEST) { if (error.content != null) { this.errorsList = []; - error.content.then( - value => { - for (let i =0 ; i<value.length; i++) { - console.log(value[i]); - this.errorsList[i] = value[i]; - } - if (this.errorsList.length !== 0) { - this.errorsMessages = this.errorsService.getCsvErrorsMessages(this.errorsList); - } else { - this.errorsMessages = this.errorsService.getErrorsMessages(error); - } + error.content.then((value) => { + for (let i = 0; i < value.length; i++) { + console.log(value[i]); + this.errorsList[i] = value[i]; } - ); + if (this.errorsList.length !== 0) { + this.errorsMessages = this.errorsService.getCsvErrorsMessages(this.errorsList); + } else { + this.errorsMessages = this.errorsService.getErrorsMessages(error); + } + }); } } else { this.alertService.toastServerError(error); @@ -322,4 +317,4 @@ export default class DataTypesManagementView extends Vue { margin-bottom: 10px; border: 1px solid white; } -</style> \ No newline at end of file +</style> diff --git a/ui/src/views/documentation/HelpView.vue b/ui/src/views/documentation/HelpView.vue index 739217be9..9db19966b 100644 --- a/ui/src/views/documentation/HelpView.vue +++ b/ui/src/views/documentation/HelpView.vue @@ -1,9 +1,10 @@ -><template> +> +<template> <PageView> <h1 class="title main-title">{{ $t("titles.aide") }}</h1> <div class="columns columnPrincipale"> - <embed class="column" src="files/aide.pdf" width=800 height=500 type='application/pdf'/> + <embed class="column" src="files/aide.pdf" width="800" height="500" type="application/pdf" /> </div> </PageView> </template> @@ -15,8 +16,7 @@ import PageView from "@/views/common/PageView.vue"; @Component({ components: { PageView }, }) -export default class HelpView extends Vue { -} +export default class HelpView extends Vue {} </script> <style lang="scss" scoped> @@ -80,4 +80,4 @@ export default class HelpView extends Vue { top: 5px; left: 5px; } -</style> \ No newline at end of file +</style> diff --git a/ui/src/views/references/ReferencesManagementView.vue b/ui/src/views/references/ReferencesManagementView.vue index 97e8cec5a..22a507e20 100644 --- a/ui/src/views/references/ReferencesManagementView.vue +++ b/ui/src/views/references/ReferencesManagementView.vue @@ -12,11 +12,11 @@ <div v-if="errorsMessages.length" style="margin: 10px"> <div v-for="msg in errorsMessages" v-bind:key="msg"> <b-message - :title="$t('message.data-type-config-error')" - type="is-danger" - has-icon - :aria-close-label="$t('message.close')" - class="mt-4" + :title="$t('message.data-type-config-error')" + type="is-danger" + has-icon + :aria-close-label="$t('message.close')" + class="mt-4" > <span v-html="msg" /> </b-message> @@ -61,8 +61,8 @@ import { ApplicationResult } from "@/model/ApplicationResult"; import SubMenu, { SubMenuPath } from "@/components/common/SubMenu.vue"; import { AlertService } from "@/services/AlertService"; import { Button } from "@/model/Button"; -import {HttpStatusCodes} from "@/utils/HttpUtils"; -import {ErrorsService} from "@/services/ErrorsService"; +import { HttpStatusCodes } from "@/utils/HttpUtils"; +import { ErrorsService } from "@/services/ErrorsService"; @Component({ components: { CollapsibleTree, ReferencesDetailsPanel, PageView, SubMenu }, @@ -187,7 +187,11 @@ export default class ReferencesManagementView extends Vue { this.errorsMessages = []; const reference = this.findReferenceByLabel(label); try { - let response = await this.referenceService.createReference(this.applicationName, reference.id, refFile); + let response = await this.referenceService.createReference( + this.applicationName, + reference.id, + refFile + ); if (response.valid === true) { this.alertService.toastSuccess(this.$t("alert.reference-updated")); } else { @@ -200,18 +204,16 @@ export default class ReferencesManagementView extends Vue { async checkMessageErrors(errors) { if (errors.httpResponseCode === HttpStatusCodes.BAD_REQUEST) { - errors.content.then( - value => { - for (let i =0 ; i<value.length; i++) { - this.errorsList[i] = value[i]; - } - if (this.errorsList.length !== 0) { - this.errorsMessages = this.errorsService.getCsvErrorsMessages(this.errorsList); - } else { - this.errorsMessages = this.errorsService.getErrorsMessages(errors); - } - } - ); + errors.content.then((value) => { + for (let i = 0; i < value.length; i++) { + this.errorsList[i] = value[i]; + } + if (this.errorsList.length !== 0) { + this.errorsMessages = this.errorsService.getCsvErrorsMessages(this.errorsList); + } else { + this.errorsMessages = this.errorsService.getErrorsMessages(errors); + } + }); } else { this.alertService.toastError(this.$t("alert.reference-csv-upload-error"), errors); } -- GitLab From 09cb7e92f18c44c61efc64f03b79cd965553413f Mon Sep 17 00:00:00 2001 From: lucile varloteaux <lucile.varloteaux@inrae.fr> Date: Tue, 26 Apr 2022 11:53:59 +0200 Subject: [PATCH 05/10] correctif reference --- ui/src/services/Fetcher.js | 2 +- ui/src/views/references/ReferencesManagementView.vue | 8 ++------ 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/ui/src/services/Fetcher.js b/ui/src/services/Fetcher.js index e0cf7fda2..0c7157173 100644 --- a/ui/src/services/Fetcher.js +++ b/ui/src/services/Fetcher.js @@ -93,7 +93,7 @@ export class Fetcher { async _handleResponse(response, isText) { try { - const text = (await isText) ? response.text() : response.json(); + const text = isText ? response.text() : response.json(); if (response.ok && response.status !== HttpStatusCodes.NO_CONTENT) { return Promise.resolve(text); } diff --git a/ui/src/views/references/ReferencesManagementView.vue b/ui/src/views/references/ReferencesManagementView.vue index 22a507e20..9f5aeed48 100644 --- a/ui/src/views/references/ReferencesManagementView.vue +++ b/ui/src/views/references/ReferencesManagementView.vue @@ -187,16 +187,12 @@ export default class ReferencesManagementView extends Vue { this.errorsMessages = []; const reference = this.findReferenceByLabel(label); try { - let response = await this.referenceService.createReference( + await this.referenceService.createReference( this.applicationName, reference.id, refFile ); - if (response.valid === true) { - this.alertService.toastSuccess(this.$t("alert.reference-updated")); - } else { - this.errorsMessages = this.errorsService.getErrorsMessages(response.validationCheckResults); - } + this.alertService.toastSuccess(this.$t("alert.reference-updated")); } catch (errors) { await this.checkMessageErrors(errors); } -- GitLab From 0a410d5ad23c1f85336b555c0be3403efc70ec24 Mon Sep 17 00:00:00 2001 From: lucile varloteaux <lucile.varloteaux@inrae.fr> Date: Wed, 27 Apr 2022 11:26:01 +0200 Subject: [PATCH 06/10] affichage des exceptions dans l'interface --- .../rest/ApplicationConfigurationService.java | 3 +- ui/src/locales/en.json | 5 ++-- ui/src/locales/fr.json | 5 ++-- ui/src/services/ErrorsService.js | 10 +++---- ui/src/services/Fetcher.js | 8 ++---- .../application/ApplicationCreationView.vue | 28 +++++++++++++------ 6 files changed, 34 insertions(+), 25 deletions(-) diff --git a/src/main/java/fr/inra/oresing/rest/ApplicationConfigurationService.java b/src/main/java/fr/inra/oresing/rest/ApplicationConfigurationService.java index a7ccf4053..2a1697b4e 100644 --- a/src/main/java/fr/inra/oresing/rest/ApplicationConfigurationService.java +++ b/src/main/java/fr/inra/oresing/rest/ApplicationConfigurationService.java @@ -96,7 +96,6 @@ public class ApplicationConfigurationService { ImmutableSet.Builder<String> requiredAuthorizationsAttributesBuilder = ImmutableSet.builder(); for (Map.Entry<String, Configuration.CompositeReferenceDescription> compositeReferenceEntry : configuration.getCompositeReferences().entrySet()) { verifyCompositeReferenceReferenceExists(configuration, builder, compositeReferenceEntry); - verifyCompositeReferenceParentColumnExists(configuration, builder, compositeReferenceEntry); verifyCompositeReferenceParentRecursiveColumnExists(configuration, builder, compositeReferenceEntry); } @@ -197,6 +196,8 @@ public class ApplicationConfigurationService { ImmutableSet<String> unknownReferences = Sets.difference(expectingReferences, existingReferences).immutableCopy(); if (!unknownReferences.isEmpty()) { builder.unknownReferenceInCompositeReference(compositeReferenceName, unknownReferences, existingReferences); + } else { + verifyCompositeReferenceParentColumnExists(configuration, builder, compositeReferenceEntry); } } diff --git a/ui/src/locales/en.json b/ui/src/locales/en.json index 8d82b2044..89125b1bf 100644 --- a/ui/src/locales/en.json +++ b/ui/src/locales/en.json @@ -79,7 +79,7 @@ "create":"Create application", "comment": "Comment : ", "no-comment": "No comment", - "test":"Test", + "test":"Configuration validation", "name":"Application name", "name-placeholder":"Ex : olac", "creation-date":"Creation date", @@ -211,7 +211,8 @@ "unknownVariablesInDataGroup": "Data group <code>{dataGroup}</code> has undeclared data : <code>{unknownVariables}</code>. <br>Known data : <code>{variables}</code>", "unrecognizedProperty": "Error in line <code>{lineNumber}</code> (column : <code>{columnNumber}</code>) : <code>{unknownPropertyName}</code>, is not a known property. <br>Known properties : <code>{knownProperties}</code>", "unsupportedVersion": "YAML files with version <code>{actualVersion}</code> aren't currently managed, expected version : <code>{expectedVersion}</code>", - "variableInMultipleDataGroup": "Variable <code>{variable}</code> is declared in several data groups, it needs to be only in one" + "variableInMultipleDataGroup": "Variable <code>{variable}</code> is declared in several data groups, it needs to be only in one", + "expetion": "The translation string is missing for your error contact the administrators: " }, "referencesManagement":{ "actions":"Actions", diff --git a/ui/src/locales/fr.json b/ui/src/locales/fr.json index 0daaec098..f6014a3c9 100644 --- a/ui/src/locales/fr.json +++ b/ui/src/locales/fr.json @@ -79,7 +79,7 @@ "create": "Créer l'application", "comment": "Commentaire : ", "no-comment": "Pas de commentaire", - "test": "Tester", + "test": "Validation configuration", "name": "Nom de l'application", "name-placeholder": "Ex : olac", "creation-date": "Date de création", @@ -211,7 +211,8 @@ "unknownVariablesInDataGroup": "le groupe de données <code>{dataGroup}</code> contient des données qui ne sont pas déclarées <code>{unknownVariables}</code>. Données connues <code>{variables}</code>", "unrecognizedProperty": "Erreur à la ligne <code>{lineNumber}</code> (colonne <code>{columnNumber}</code>) : <code>{unknownPropertyName}</code>, c’est pas une propriété reconnue. Les propriétés reconnues sont <code>{knownProperties}</code>", "unsupportedVersion": "Les fichiers YAML de version <code>{actualVersion}</code> ne sont pas gérés, version attendue <code>{expectedVersion}</code>", - "variableInMultipleDataGroup": "La variable <code>{variable}</code> est déclarée dans plusieurs groupes de données, elle ne doit être présente que dans un groupe" + "variableInMultipleDataGroup": "La variable <code>{variable}</code> est déclarée dans plusieurs groupes de données, elle ne doit être présente que dans un groupe", + "expetion": "Il manque la chaine de traduction pour l'erreur suivante. Merci de vérifiez que ce n'est pas un problème d'indantation avant de contacter les administrateurs. " }, "referencesManagement": { "actions": "Actions", diff --git a/ui/src/services/ErrorsService.js b/ui/src/services/ErrorsService.js index 500f022ba..833a21bce 100644 --- a/ui/src/services/ErrorsService.js +++ b/ui/src/services/ErrorsService.js @@ -125,21 +125,19 @@ export class ErrorsService { return errors.map((error) => { const func = ERRORS[error.message]; if (!func) { - throw new Error("Il manque la chaine de traduction pour l'erreur : " + error.message); + //throw new Error("Il manque la chaine de traduction pour l'erreur : " + error.message); + return i18n.t("errors.expetion"); } return func(error.messageParams); }); } getCsvErrorsMessages(csvErrors) { - console.log("coucou : ", csvErrors); return csvErrors.map((csvError) => { const func = ERRORS[csvError.validationCheckResult.message]; if (!func) { - throw new Error( - "Il manque la chaine de traduction pour l'erreur : " + - csvError.validationCheckResult.message - ); + //throw new Error("Il manque la chaine de traduction pour l'erreur : " + csvError.validationCheckResult.message); + return Error(i18n.t("errors.expetion") + csvError.validationCheckResult.message); } const params = { lineNumber: csvError.lineNumber, diff --git a/ui/src/services/Fetcher.js b/ui/src/services/Fetcher.js index 0c7157173..296f1c9fd 100644 --- a/ui/src/services/Fetcher.js +++ b/ui/src/services/Fetcher.js @@ -97,14 +97,11 @@ export class Fetcher { if (response.ok && response.status !== HttpStatusCodes.NO_CONTENT) { return Promise.resolve(text); } - return Promise.reject({ httpResponseCode: response.status, content: text }); + return Promise.reject({ httpResponseCode: response.status, content: Promise.resolve(text) }); } catch (error) { console.error(error); + return Promise.reject({ httpResponseCode: response.status }); } - if (response.ok) { - return Promise.resolve(); - } - return Promise.reject({ httpResponseCode: response.status }); } async showFile(urlPath) { @@ -114,7 +111,6 @@ export class Fetcher { async downloadFile(urlPath) { const url = new URL(`${config.API_URL}${urlPath}`); - console.log(url); const link = document.createElement("a"); link.href = url; link.type = "application/octet-stream"; diff --git a/ui/src/views/application/ApplicationCreationView.vue b/ui/src/views/application/ApplicationCreationView.vue index a02550f47..196ebbbb2 100644 --- a/ui/src/views/application/ApplicationCreationView.vue +++ b/ui/src/views/application/ApplicationCreationView.vue @@ -6,7 +6,7 @@ <ValidationObserver ref="observer" v-slot="{ handleSubmit }"> <div class="columns"> <ValidationProvider - class="column is-3" + class="column is-4" rules="required" name="applicationCreation" v-slot="{ errors, valid }" @@ -37,14 +37,14 @@ </sup> </b-field> </ValidationProvider> - <div style="margin: 5px" class="column is-1"> + <div style="margin: 5px" class="column is-4"> <b-button type="is-light" @click="handleSubmit(testApplication)" icon-left="vial"> {{ $t("applications.test") }} </b-button> </div> - <div class="column is-1"> + <div class="column is-4"> <b-tag - v-if="applicationConfig.version" + v-if="btnUpdateConfig" type="is-warning" size="is-large" style="margin: 5px" @@ -98,7 +98,7 @@ {{ $t("applications.change") }} </b-button> <b-button - v-if="applicationConfig.name !== ''" + v-if="applicationConfig.name !== '' && !btnUpdateConfig" type="is-primary" @click="handleSubmit(createApplication)" icon-left="plus" @@ -116,7 +116,9 @@ :aria-close-label="$t('message.close')" class="mt-4" > - <span v-html="msg" /> + <span v-if="msg.mess" v-html="msg.mess" class="columns" style="margin: 10px; font-weight: bold"/> + <span v-if="msg.param" class="columns" style="margin: 0">{{ msg.param }}</span> + <span v-else v-html="msg" /> </b-message> </div> </div> @@ -146,6 +148,7 @@ export default class ApplicationCreationView extends Vue { applicationConfig = new ApplicationConfig(); btnUpdateConfig = false; errorsMessages = []; + error = []; comment = ""; async createApplication() { @@ -181,12 +184,21 @@ export default class ApplicationCreationView extends Vue { if (response.valid === true) { this.applicationConfig.name = response.result.application.name.toLowerCase(); this.applicationConfig.version = response.result.application.version; - if (this.applicationConfig.version !== 1) { + if (response.result.application.version !== 1) { this.btnUpdateConfig = true; } this.alertService.toastSuccess(this.$t("alert.application-validate-success")); } else { - this.errorsMessages = this.errorsService.getErrorsMessages(response.validationCheckResults); + for(let i =0; i<response.validationCheckResults.length; i++) { + if (this.errorsService.getErrorsMessages(response.validationCheckResults)[i] === this.$t("errors.expetion")) { + this.error[i] = {...this.error[i], + mess: this.errorsService.getErrorsMessages(response.validationCheckResults)[i], + param: response.validationCheckResults[i].message}; + this.errorsMessages.push(this.error[i]); + } else { + this.errorsMessages = this.errorsService.getErrorsMessages(response.validationCheckResults); + } + } } } catch (error) { this.checkMessageErrors(error); -- GitLab From 8c53a2cfc3fa79d4178c018c557f4ffa02442523 Mon Sep 17 00:00:00 2001 From: lucile varloteaux <lucile.varloteaux@inrae.fr> Date: Fri, 29 Apr 2022 12:15:36 +0200 Subject: [PATCH 07/10] gestion affichage btn ref et data page application --- ui/src/views/application/ApplicationsView.vue | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ui/src/views/application/ApplicationsView.vue b/ui/src/views/application/ApplicationsView.vue index a28d7b41e..f94e5187a 100644 --- a/ui/src/views/application/ApplicationsView.vue +++ b/ui/src/views/application/ApplicationsView.vue @@ -175,6 +175,7 @@ <div class="card-footer"> <div class="card-footer-item"> <b-button + v-if="application.referenceType.length !== 0" icon-left="drafting-compass" @click="displayReferencesManagement(application)" > @@ -182,7 +183,11 @@ </b-button> </div> <div class="card-footer-item"> - <b-button icon-left="poll" @click="displayDataSetManagement(application)"> + <b-button + v-if="application.dataType.length !== 0" + icon-left="poll" + @click="displayDataSetManagement(application)" + > {{ $t("applications.dataset") }} </b-button> </div> -- GitLab From 84e66367e0ef6f98a55cb6e09a714c9a5792ff52 Mon Sep 17 00:00:00 2001 From: lucile varloteaux <lucile.varloteaux@inrae.fr> Date: Fri, 29 Apr 2022 12:15:57 +0200 Subject: [PATCH 08/10] traduction message lors d'une expetion --- ui/src/locales/en.json | 2 +- ui/src/locales/fr.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ui/src/locales/en.json b/ui/src/locales/en.json index 89125b1bf..7cad9f0b9 100644 --- a/ui/src/locales/en.json +++ b/ui/src/locales/en.json @@ -212,7 +212,7 @@ "unrecognizedProperty": "Error in line <code>{lineNumber}</code> (column : <code>{columnNumber}</code>) : <code>{unknownPropertyName}</code>, is not a known property. <br>Known properties : <code>{knownProperties}</code>", "unsupportedVersion": "YAML files with version <code>{actualVersion}</code> aren't currently managed, expected version : <code>{expectedVersion}</code>", "variableInMultipleDataGroup": "Variable <code>{variable}</code> is declared in several data groups, it needs to be only in one", - "expetion": "The translation string is missing for your error contact the administrators: " + "expetion": "The translation string for the following error is missing. Please verify that this is not an indentation problem before contacting the administrators. " }, "referencesManagement":{ "actions":"Actions", diff --git a/ui/src/locales/fr.json b/ui/src/locales/fr.json index f6014a3c9..29a2aa01e 100644 --- a/ui/src/locales/fr.json +++ b/ui/src/locales/fr.json @@ -212,7 +212,7 @@ "unrecognizedProperty": "Erreur à la ligne <code>{lineNumber}</code> (colonne <code>{columnNumber}</code>) : <code>{unknownPropertyName}</code>, c’est pas une propriété reconnue. Les propriétés reconnues sont <code>{knownProperties}</code>", "unsupportedVersion": "Les fichiers YAML de version <code>{actualVersion}</code> ne sont pas gérés, version attendue <code>{expectedVersion}</code>", "variableInMultipleDataGroup": "La variable <code>{variable}</code> est déclarée dans plusieurs groupes de données, elle ne doit être présente que dans un groupe", - "expetion": "Il manque la chaine de traduction pour l'erreur suivante. Merci de vérifiez que ce n'est pas un problème d'indantation avant de contacter les administrateurs. " + "expetion": "Il manque la chaine de traduction pour l'erreur suivante. Merci de vérifiez que ce n'est pas un problème d'indantation avant de contacter les administrateurs. " }, "referencesManagement": { "actions": "Actions", -- GitLab From b183757974b51ea719dc0b5362902fe97e08df86 Mon Sep 17 00:00:00 2001 From: lucile varloteaux <lucile.varloteaux@inrae.fr> Date: Fri, 29 Apr 2022 12:16:18 +0200 Subject: [PATCH 09/10] affichage message lors d'une exception --- ui/src/views/application/ApplicationCreationView.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ui/src/views/application/ApplicationCreationView.vue b/ui/src/views/application/ApplicationCreationView.vue index 196ebbbb2..cebd2fc1d 100644 --- a/ui/src/views/application/ApplicationCreationView.vue +++ b/ui/src/views/application/ApplicationCreationView.vue @@ -117,7 +117,7 @@ class="mt-4" > <span v-if="msg.mess" v-html="msg.mess" class="columns" style="margin: 10px; font-weight: bold"/> - <span v-if="msg.param" class="columns" style="margin: 0">{{ msg.param }}</span> + <span v-if="msg.param" class="columns" style="margin: 0;"><p style=" width: 1650px">{{ msg.param }}</p></span> <span v-else v-html="msg" /> </b-message> </div> @@ -193,7 +193,7 @@ export default class ApplicationCreationView extends Vue { if (this.errorsService.getErrorsMessages(response.validationCheckResults)[i] === this.$t("errors.expetion")) { this.error[i] = {...this.error[i], mess: this.errorsService.getErrorsMessages(response.validationCheckResults)[i], - param: response.validationCheckResults[i].message}; + param: response.validationCheckResults[i].message.toString().split()}; this.errorsMessages.push(this.error[i]); } else { this.errorsMessages = this.errorsService.getErrorsMessages(response.validationCheckResults); -- GitLab From 41f872f00fc36069ff34ea54bcb946785b491d98 Mon Sep 17 00:00:00 2001 From: TCHERNIATINSKY <philippe.tcherniatinsky@inrae.fr> Date: Wed, 4 May 2022 11:35:54 +0200 Subject: [PATCH 10/10] Correction de tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Correction createApplication - Ajout d'un test sur le dépôt de fichiers invalides --- .../ApplicationConfigurationServiceTest.java | 164 +++++++++++------- .../fixtures/applications/errors/errors.json | 1 + .../integration/createApplication_spec.js | 58 ++++++- ui/cypress/integration/errors_test.js | 48 +++++ 4 files changed, 204 insertions(+), 67 deletions(-) create mode 100644 ui/cypress/fixtures/applications/errors/errors.json create mode 100644 ui/cypress/integration/errors_test.js diff --git a/src/test/java/fr/inra/oresing/rest/ApplicationConfigurationServiceTest.java b/src/test/java/fr/inra/oresing/rest/ApplicationConfigurationServiceTest.java index b31314b5f..dc5437bf4 100644 --- a/src/test/java/fr/inra/oresing/rest/ApplicationConfigurationServiceTest.java +++ b/src/test/java/fr/inra/oresing/rest/ApplicationConfigurationServiceTest.java @@ -1,11 +1,13 @@ package fr.inra.oresing.rest; +import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import fr.inra.oresing.OreSiNg; import fr.inra.oresing.OreSiTechnicalException; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.IOUtils; +import org.junit.AfterClass; import org.junit.Assert; import org.junit.Ignore; import org.junit.Test; @@ -21,10 +23,11 @@ import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.context.support.DirtiesContextTestExecutionListener; -import java.io.IOException; -import java.io.InputStream; +import java.io.*; import java.nio.charset.StandardCharsets; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Set; import java.util.stream.Collectors; @@ -44,6 +47,50 @@ public class ApplicationConfigurationServiceTest { @Autowired private ApplicationConfigurationService service; + public static final Map<String, BadApplicationConfigurationException> configurationParsingResults = new HashMap<>(); + + @AfterClass + public static void registerErrors() throws IOException { + final Map<String, ConfigurationParsingResult> collect = configurationParsingResults.entrySet() + .stream().filter(e -> !e.getValue().getConfigurationParsingResult().isValid()) + .collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue().getConfigurationParsingResult())); + final String errorsAsString = new ObjectMapper().writeValueAsString(collect); + File errorsFile = new File("ui/cypress/fixtures/applications/errors/errors.json"); + log.debug(errorsFile.getAbsolutePath()); + BufferedWriter writer = new BufferedWriter(new FileWriter(errorsFile)); + writer.write(errorsAsString); + writer.close(); + } + + private ConfigurationParsingResult getConfigurationParsingResult(String methodName, byte[] bytes) { + final ConfigurationParsingResult configurationParsingResult = service.parseConfigurationBytes(bytes); + try { + BadApplicationConfigurationException.check(configurationParsingResult); + } catch (BadApplicationConfigurationException e) { + configurationParsingResults.put(methodName, e); + } + return configurationParsingResult; + + } + + private ConfigurationParsingResult parseYaml(String methodName, String toReplace, String by) { + ConfigurationParsingResult configurationParsingResult; + try (InputStream configurationFile = getClass().getResourceAsStream(fixtures.getValidationApplicationConfigurationResourceName())) { + String yaml = IOUtils.toString(configurationFile, StandardCharsets.UTF_8); + String wrongYaml = yaml.replace(toReplace, by); + byte[] bytes = wrongYaml.getBytes(StandardCharsets.UTF_8); + configurationParsingResult = service.parseConfigurationBytes(bytes); + try { + BadApplicationConfigurationException.check(configurationParsingResult); + } catch (BadApplicationConfigurationException e) { + configurationParsingResults.put(methodName, e); + } + return configurationParsingResult; + } catch (IOException e) { + throw new OreSiTechnicalException("impossible de lire le fichier de test", e); + } + } + @Test public void parseConfigurationFile() { ImmutableSet.of( @@ -74,23 +121,10 @@ public class ApplicationConfigurationServiceTest { } } - private ConfigurationParsingResult parseYaml(String toReplace, String by) { - ConfigurationParsingResult configurationParsingResult; - try (InputStream configurationFile = getClass().getResourceAsStream(fixtures.getValidationApplicationConfigurationResourceName())) { - String yaml = IOUtils.toString(configurationFile, StandardCharsets.UTF_8); - String wrongYaml = yaml.replace(toReplace, by); - byte[] bytes = wrongYaml.getBytes(StandardCharsets.UTF_8); - configurationParsingResult = service.parseConfigurationBytes(bytes); - return configurationParsingResult; - } catch (IOException e) { - throw new OreSiTechnicalException("impossible de lire le fichier de test", e); - } - } - @Test public void testEmptyFile() { byte[] bytes = "".getBytes(StandardCharsets.UTF_8); - ConfigurationParsingResult configurationParsingResult = service.parseConfigurationBytes(bytes); + ConfigurationParsingResult configurationParsingResult = getConfigurationParsingResult("testEmptyFile", bytes); Assert.assertFalse(configurationParsingResult.isValid()); ValidationCheckResult onlyError = Iterables.getOnlyElement(configurationParsingResult.getValidationCheckResults()); log.debug(onlyError.getMessage()); @@ -99,7 +133,7 @@ public class ApplicationConfigurationServiceTest { @Test public void testMissingReferenceForChecker() { - ConfigurationParsingResult configurationParsingResult = parseYaml("refType: sites", ""); + ConfigurationParsingResult configurationParsingResult = parseYaml("testMissingReferenceForChecker", "refType: sites", ""); Assert.assertFalse(configurationParsingResult.isValid()); List<ValidationCheckResult> validationCheckResults = configurationParsingResult.getValidationCheckResults(); ValidationCheckResult missingReferenceForChecker = Iterables.find(validationCheckResults, vcr -> "missingReferenceForChecker".equals(vcr.getMessage())); @@ -111,7 +145,7 @@ public class ApplicationConfigurationServiceTest { @Test public void testMissingVariableComponentForUniqueness() { - ConfigurationParsingResult configurationParsingResult = parseYaml( + ConfigurationParsingResult configurationParsingResult = parseYaml("testMissingVariableComponentForUniqueness", "- variable: date\n" + " component: day", "- variable: date\n" + @@ -128,7 +162,7 @@ public class ApplicationConfigurationServiceTest { @Test public void testMissingInternationalizedColumn() { - ConfigurationParsingResult configurationParsingResult = parseYaml("internationalizedColumns:\n" + + ConfigurationParsingResult configurationParsingResult = parseYaml("testMissingInternationalizedColumn", "internationalizedColumns:\n" + " nom du projet_key:", "internationalizedColumns:\n" + " nom du projet_unknown:"); Assert.assertFalse(configurationParsingResult.isValid()); @@ -139,7 +173,7 @@ public class ApplicationConfigurationServiceTest { @Test public void testUnknownReferenceForChecker() { - ConfigurationParsingResult configurationParsingResult = parseYaml("refType: sites", "refType: sitee"); + ConfigurationParsingResult configurationParsingResult = parseYaml("testUnknownReferenceForChecker", "refType: sites", "refType: sitee"); Assert.assertFalse(configurationParsingResult.isValid()); List<ValidationCheckResult> validationCheckResults = configurationParsingResult.getValidationCheckResults(); ValidationCheckResult unknownReferenceForChecker = Iterables.find(validationCheckResults, vcr -> "unknownReferenceForChecker".equals(vcr.getMessage())); @@ -151,7 +185,7 @@ public class ApplicationConfigurationServiceTest { @Test public void testUnsupportedVersion() { - ConfigurationParsingResult configurationParsingResult = parseYaml("version: 1", "version: -1"); + ConfigurationParsingResult configurationParsingResult = parseYaml("testUnsupportedVersion", "version: 1", "version: -1"); Assert.assertFalse(configurationParsingResult.isValid()); ValidationCheckResult onlyError = Iterables.getOnlyElement(configurationParsingResult.getValidationCheckResults()); log.debug(onlyError.getMessage()); @@ -160,7 +194,7 @@ public class ApplicationConfigurationServiceTest { @Test public void testUnknownReferenceInCompositeReference() { - ConfigurationParsingResult configurationParsingResult = parseYaml("- reference: typeSites", "- reference: typeDeSites"); + ConfigurationParsingResult configurationParsingResult = parseYaml("testUnknownReferenceInCompositeReference", "- reference: typeSites", "- reference: typeDeSites"); Assert.assertFalse(configurationParsingResult.isValid()); ValidationCheckResult onlyError = Iterables.getOnlyElement(configurationParsingResult.getValidationCheckResults()); log.debug(onlyError.getMessage()); @@ -169,7 +203,7 @@ public class ApplicationConfigurationServiceTest { @Test public void testMissingReferenceInCompositereference() { - ConfigurationParsingResult configurationParsingResult = parseYaml("- reference: typeSites", "- reference: "); + ConfigurationParsingResult configurationParsingResult = parseYaml("testMissingReferenceInCompositereference", "- reference: typeSites", "- reference: "); Assert.assertFalse(configurationParsingResult.isValid()); ValidationCheckResult onlyError = Iterables.getOnlyElement(configurationParsingResult.getValidationCheckResults()); log.debug(onlyError.getMessage()); @@ -178,7 +212,7 @@ public class ApplicationConfigurationServiceTest { @Test public void testRequiredReferenceInCompositeReferenceForParentKeyColumn() { - ConfigurationParsingResult configurationParsingResult = parseYaml("- reference: typeSites", ""); + ConfigurationParsingResult configurationParsingResult = parseYaml("testRequiredReferenceInCompositeReferenceForParentKeyColumn", "- reference: typeSites", ""); Assert.assertFalse(configurationParsingResult.isValid()); ValidationCheckResult onlyError = Iterables.getOnlyElement(configurationParsingResult.getValidationCheckResults()); log.debug(onlyError.getMessage()); @@ -187,7 +221,7 @@ public class ApplicationConfigurationServiceTest { @Test public void testRequiredParentKeyColumnInCompositeReferenceForReference() { - ConfigurationParsingResult configurationParsingResult = parseYaml("parentKeyColumn: \"nom du type de site\"\n" + + ConfigurationParsingResult configurationParsingResult = parseYaml("testRequiredParentKeyColumnInCompositeReferenceForReference", "parentKeyColumn: \"nom du type de site\"\n" + " ", ""); Assert.assertFalse(configurationParsingResult.isValid()); ValidationCheckResult onlyError = Iterables.getOnlyElement(configurationParsingResult.getValidationCheckResults()); @@ -197,7 +231,7 @@ public class ApplicationConfigurationServiceTest { @Test public void testMissingParentColumnForReferenceInCompositeReference() { - ConfigurationParsingResult configurationParsingResult = parseYaml("- parentKeyColumn: \"nom du site\"", ""); + ConfigurationParsingResult configurationParsingResult = parseYaml("testMissingParentColumnForReferenceInCompositeReference", "- parentKeyColumn: \"nom du site\"", ""); Assert.assertFalse(configurationParsingResult.isValid()); boolean hasError = configurationParsingResult.getValidationCheckResults() .stream() @@ -207,7 +241,7 @@ public class ApplicationConfigurationServiceTest { @Test public void testMissingParentRecursiveKeyColumnForReferenceInCompositeReference() { - ConfigurationParsingResult configurationParsingResult = parseYaml("parentKeyColumn: \"nom du site\"\n" + + ConfigurationParsingResult configurationParsingResult = parseYaml("testMissingParentRecursiveKeyColumnForReferenceInCompositeReference", "parentKeyColumn: \"nom du site\"\n" + " ", "parentKeyColumn: \"nom du site\"\n" + " parentRecursiveKey: \"nom du parent\"\n" + " "); @@ -219,7 +253,7 @@ public class ApplicationConfigurationServiceTest { @Test public void testUndeclaredDataGroupForVariable() { - ConfigurationParsingResult configurationParsingResult = parseYaml("data:\n" + + ConfigurationParsingResult configurationParsingResult = parseYaml("testUndeclaredDataGroupForVariable", "data:\n" + " - localization", "data:\n" + " - localizations"); Assert.assertFalse(configurationParsingResult.isValid()); @@ -233,7 +267,7 @@ public class ApplicationConfigurationServiceTest { @Test public void testVariableInMultipleDataGroup() { - ConfigurationParsingResult configurationParsingResult = parseYaml("data:\n" + + ConfigurationParsingResult configurationParsingResult = parseYaml("testVariableInMultipleDataGroup", "data:\n" + " - Couleur des individus", "data:\n" + " - localization\n" + " - Couleur des individus"); @@ -245,7 +279,7 @@ public class ApplicationConfigurationServiceTest { @Test public void testRecordInvalidKeyColumns() { - ConfigurationParsingResult configurationParsingResult = parseYaml("columns:\n" + + ConfigurationParsingResult configurationParsingResult = parseYaml("testRecordInvalidKeyColumns", "columns:\n" + " nom du projet_key:", "columns:\n" + " nom du Projet_key:"); Assert.assertFalse(configurationParsingResult.isValid()); @@ -263,7 +297,7 @@ public class ApplicationConfigurationServiceTest { * on peut omettre le timescope */ public void testMissingTimeScopeVariableComponentKey() { - ConfigurationParsingResult configurationParsingResult = parseYaml("component: site\n" + + ConfigurationParsingResult configurationParsingResult = parseYaml("testMissingTimeScopeVariableComponentKey", "component: site\n" + " timeScope:\n" + " variable: date\n" + " component: day", "component: site\n"); @@ -275,7 +309,7 @@ public class ApplicationConfigurationServiceTest { @Test public void testTimeScopeVariableComponentKeyMissingVariable() { - ConfigurationParsingResult configurationParsingResult = parseYaml("timeScope:\n" + + ConfigurationParsingResult configurationParsingResult = parseYaml("testTimeScopeVariableComponentKeyMissingVariable", "timeScope:\n" + " variable: date\n" + " component: day", "timeScope:\n" + " component: day"); @@ -287,7 +321,7 @@ public class ApplicationConfigurationServiceTest { @Test public void testTimeScopeVariableComponentKeyUnknownVariable() { - ConfigurationParsingResult configurationParsingResult = parseYaml("timeScope:\n" + + ConfigurationParsingResult configurationParsingResult = parseYaml("testTimeScopeVariableComponentKeyUnknownVariable", "timeScope:\n" + " variable: date\n" + " component: day", "timeScope:\n" + " variable: dates\n" + @@ -300,7 +334,7 @@ public class ApplicationConfigurationServiceTest { @Test public void testTimeVariableComponentKeyMissingComponent() { - ConfigurationParsingResult configurationParsingResult = parseYaml("timeScope:\n" + + ConfigurationParsingResult configurationParsingResult = parseYaml("testTimeVariableComponentKeyMissingComponent", "timeScope:\n" + " variable: date\n" + " component: day", "timeScope:\n" + " variable: date\n" + @@ -313,7 +347,7 @@ public class ApplicationConfigurationServiceTest { @Test public void testTimeVariableComponentKeyUnknownComponent() { - ConfigurationParsingResult configurationParsingResult = parseYaml("timeScope:\n" + + ConfigurationParsingResult configurationParsingResult = parseYaml("testTimeVariableComponentKeyUnknownComponent", "timeScope:\n" + " variable: date\n" + " component: day", "timeScope:\n" + " variable: date\n" + @@ -326,7 +360,7 @@ public class ApplicationConfigurationServiceTest { @Test public void testTimeScopeVariableComponentWrongChecker() { - ConfigurationParsingResult configurationParsingResult = parseYaml("checker:\n" + + ConfigurationParsingResult configurationParsingResult = parseYaml("testTimeScopeVariableComponentWrongChecker", "checker:\n" + " name: Date", "checker:\n" + " name: Dates"); Assert.assertFalse(configurationParsingResult.isValid()); @@ -355,7 +389,7 @@ public class ApplicationConfigurationServiceTest { @Test public void testTimeScopeVariableComponentPatternUnknown() { - ConfigurationParsingResult configurationParsingResult = parseYaml("params:\n" + + ConfigurationParsingResult configurationParsingResult = parseYaml("testTimeScopeVariableComponentPatternUnknown", "params:\n" + " pattern: dd/MM/yyyy", "params:\n" + " pattern: dd/MM"); Assert.assertFalse(configurationParsingResult.isValid()); @@ -366,7 +400,7 @@ public class ApplicationConfigurationServiceTest { @Test public void testUnrecognizedProperty() { - ConfigurationParsingResult configurationParsingResult = parseYaml("compositeReferences", "compositReference"); + ConfigurationParsingResult configurationParsingResult = parseYaml("testUnrecognizedProperty", "compositeReferences", "compositReference"); Assert.assertFalse(configurationParsingResult.isValid()); ValidationCheckResult onlyError = Iterables.getOnlyElement(configurationParsingResult.getValidationCheckResults()); log.debug(onlyError.getMessage()); @@ -378,7 +412,7 @@ public class ApplicationConfigurationServiceTest { @Test public void testInvalidFormat() { - ConfigurationParsingResult configurationParsingResult = parseYaml("firstRowLine: 3", "firstRowLine: pas_un_chiffre"); + ConfigurationParsingResult configurationParsingResult = parseYaml("testInvalidFormat", "firstRowLine: 3", "firstRowLine: pas_un_chiffre"); Assert.assertFalse(configurationParsingResult.isValid()); ValidationCheckResult onlyError = Iterables.getOnlyElement(configurationParsingResult.getValidationCheckResults()); log.debug(onlyError.getMessage()); @@ -387,7 +421,7 @@ public class ApplicationConfigurationServiceTest { @Test public void testMissingRequiredExpression() { - ConfigurationParsingResult configurationParsingResult = parseYaml("\"true\"", ""); + ConfigurationParsingResult configurationParsingResult = parseYaml("testMissingRequiredExpression", "\"true\"", ""); Assert.assertFalse(configurationParsingResult.isValid()); ValidationCheckResult onlyError = Iterables.getOnlyElement(configurationParsingResult.getValidationCheckResults()); log.debug(onlyError.getMessage()); @@ -396,7 +430,7 @@ public class ApplicationConfigurationServiceTest { @Test public void testIllegalGroovyExpression() { - ConfigurationParsingResult configurationParsingResult = parseYaml("\"true\"", "if(}"); + ConfigurationParsingResult configurationParsingResult = parseYaml("testIllegalGroovyExpression", "\"true\"", "if(}"); Assert.assertFalse(configurationParsingResult.isValid()); ValidationCheckResult onlyError = Iterables.getOnlyElement(configurationParsingResult.getValidationCheckResults()); log.debug(onlyError.getMessage()); @@ -405,7 +439,7 @@ public class ApplicationConfigurationServiceTest { @Test public void testUnknownCheckerName() { - ConfigurationParsingResult configurationParsingResult = parseYaml("name: GroovyExpression", "name: GroovyExpressions"); + ConfigurationParsingResult configurationParsingResult = parseYaml("testUnknownCheckerName", "name: GroovyExpression", "name: GroovyExpressions"); Assert.assertFalse(configurationParsingResult.isValid()); ValidationCheckResult onlyError = Iterables.getOnlyElement(configurationParsingResult.getValidationCheckResults()); log.debug(onlyError.getMessage()); @@ -414,7 +448,7 @@ public class ApplicationConfigurationServiceTest { @Test public void testCsvBoundToUnknownVariable() { - ConfigurationParsingResult configurationParsingResult = parseYaml("header: \"typeSite\"\n" + + ConfigurationParsingResult configurationParsingResult = parseYaml("testCsvBoundToUnknownVariable", "header: \"typeSite\"\n" + " boundTo:\n" + " variable: localization", "header: \"typeSite\"\n" + " boundTo:\n" + @@ -427,7 +461,7 @@ public class ApplicationConfigurationServiceTest { @Test public void testCsvBoundToUnknownVariableComponent() { - ConfigurationParsingResult configurationParsingResult = parseYaml("components:\n" + + ConfigurationParsingResult configurationParsingResult = parseYaml("testCsvBoundToUnknownVariableComponent", "components:\n" + " site:", "components:\n" + " sites:"); Assert.assertFalse(configurationParsingResult.isValid()); @@ -441,7 +475,7 @@ public class ApplicationConfigurationServiceTest { @Test public void testInvalidKeyColumns() { - ConfigurationParsingResult configurationParsingResult = parseYaml("keyColumns: [nom du projet_key]", "keyColumns: [nom du projet_clé]"); + ConfigurationParsingResult configurationParsingResult = parseYaml("testInvalidKeyColumns", "keyColumns: [nom du projet_key]", "keyColumns: [nom du projet_clé]"); Assert.assertFalse(configurationParsingResult.isValid()); ValidationCheckResult onlyError = Iterables.getOnlyElement(configurationParsingResult.getValidationCheckResults()); log.debug(onlyError.getMessage()); @@ -450,7 +484,7 @@ public class ApplicationConfigurationServiceTest { @Test public void testMissingColumnInInternationalizationDisplayPattern() { - ConfigurationParsingResult configurationParsingResult = parseYaml("'{nom du site_fr}'", "'{nom du site}'"); + ConfigurationParsingResult configurationParsingResult = parseYaml("testMissingColumnInInternationalizationDisplayPattern", "'{nom du site_fr}'", "'{nom du site}'"); Assert.assertFalse(configurationParsingResult.isValid()); ValidationCheckResult onlyError = Iterables.getOnlyElement(configurationParsingResult.getValidationCheckResults()); log.debug(onlyError.getMessage()); @@ -461,7 +495,7 @@ public class ApplicationConfigurationServiceTest { @Test public void testUnknownReferenceInInternationalizationDisplayPatternInDatatype() { - ConfigurationParsingResult configurationParsingResult = parseYaml("internationalizationDisplays:\n" + + ConfigurationParsingResult configurationParsingResult = parseYaml("testUnknownReferenceInInternationalizationDisplayPatternInDatatype", "internationalizationDisplays:\n" + " sites:", "internationalizationDisplays:\n" + " plateforme:"); Assert.assertFalse(configurationParsingResult.isValid()); @@ -472,7 +506,7 @@ public class ApplicationConfigurationServiceTest { @Test public void testMissingColumnInInternationalizationDisplayPatternInDatatype() { - ConfigurationParsingResult configurationParsingResult = parseYaml("'{nom du site_fr}'", "'{nom du site}'"); + ConfigurationParsingResult configurationParsingResult = parseYaml("testMissingColumnInInternationalizationDisplayPatternInDatatype", "'{nom du site_fr}'", "'{nom du site}'"); Assert.assertFalse(configurationParsingResult.isValid()); ValidationCheckResult onlyError = Iterables.getOnlyElement(configurationParsingResult.getValidationCheckResults()); log.debug(onlyError.getMessage()); @@ -483,19 +517,19 @@ public class ApplicationConfigurationServiceTest { @Test public void testUndeclaredValueForChart() { - ConfigurationParsingResult configurationParsingResult = parseYaml("value: \"value\"", "value: null"); + ConfigurationParsingResult configurationParsingResult = parseYaml("testUndeclaredValueForChart", "value: \"value\"", "value: null"); Assert.assertFalse(configurationParsingResult.isValid()); ValidationCheckResult onlyError = Iterables.getOnlyElement(configurationParsingResult.getValidationCheckResults()); log.debug(onlyError.getMessage()); Assert.assertEquals("unDeclaredValueForChart", onlyError.getMessage()); Assert.assertTrue((onlyError.getMessageParams().get("variable")).equals("Nombre d'individus")); Assert.assertTrue((onlyError.getMessageParams().get("dataType")).equals("site")); - Assert.assertTrue(((Set)onlyError.getMessageParams().get("components")).equals(Set.of("value","unit","standardDeviation"))); + Assert.assertTrue(((Set) onlyError.getMessageParams().get("components")).equals(Set.of("value", "unit", "standardDeviation"))); } @Test public void testMissingValueComponentForChart() { - ConfigurationParsingResult configurationParsingResult = parseYaml("value: \"value\"", "value: \"nonvalue\""); + ConfigurationParsingResult configurationParsingResult = parseYaml("testMissingValueComponentForChart", "value: \"value\"", "value: \"nonvalue\""); Assert.assertFalse(configurationParsingResult.isValid()); ValidationCheckResult onlyError = Iterables.getOnlyElement(configurationParsingResult.getValidationCheckResults()); log.debug(onlyError.getMessage()); @@ -503,12 +537,12 @@ public class ApplicationConfigurationServiceTest { Assert.assertTrue((onlyError.getMessageParams().get("variable")).equals("Nombre d'individus")); Assert.assertTrue((onlyError.getMessageParams().get("dataType")).equals("site")); Assert.assertTrue((onlyError.getMessageParams().get("valueComponent")).equals("nonvalue")); - Assert.assertTrue(((Set)onlyError.getMessageParams().get("components")).equals(Set.of("value","unit","standardDeviation"))); + Assert.assertTrue(((Set) onlyError.getMessageParams().get("components")).equals(Set.of("value", "unit", "standardDeviation"))); } @Test public void testMissingAggregationVariableForChart() { - ConfigurationParsingResult configurationParsingResult = parseYaml("aggregation:\n" + + ConfigurationParsingResult configurationParsingResult = parseYaml("testMissingAggregationVariableForChart", "aggregation:\n" + " variable: Couleur des individus\n" + " component: value", "aggregation:\n" + " variable: pasdevariable\n" + @@ -521,12 +555,12 @@ public class ApplicationConfigurationServiceTest { Assert.assertTrue((onlyError.getMessageParams().get("dataType")).equals("site")); Assert.assertTrue((onlyError.getMessageParams().get("aggregationVariable")).equals("pasdevariable")); Assert.assertTrue((onlyError.getMessageParams().get("aggregationComponent")).equals("value")); - Assert.assertTrue(((Set)onlyError.getMessageParams().get("variables")).equals(Set.of("date","localization","Couleur des individus","Nombre d'individus"))); + Assert.assertTrue(((Set) onlyError.getMessageParams().get("variables")).equals(Set.of("date", "localization", "Couleur des individus", "Nombre d'individus"))); } @Test public void testMissingAggregationComponentForChart() { - ConfigurationParsingResult configurationParsingResult = parseYaml("aggregation:\n" + + ConfigurationParsingResult configurationParsingResult = parseYaml("testMissingAggregationComponentForChart", "aggregation:\n" + " variable: Couleur des individus\n" + " component: value", "aggregation:\n" + " variable: Couleur des individus\n" + @@ -539,12 +573,12 @@ public class ApplicationConfigurationServiceTest { Assert.assertTrue((onlyError.getMessageParams().get("dataType")).equals("site")); Assert.assertTrue((onlyError.getMessageParams().get("aggregationVariable")).equals("Couleur des individus")); Assert.assertTrue((onlyError.getMessageParams().get("aggregationComponent")).equals("pasdevalue")); - Assert.assertTrue(((Set)onlyError.getMessageParams().get("components")).equals(Set.of("value","unit","standardDeviation"))); + Assert.assertTrue(((Set) onlyError.getMessageParams().get("components")).equals(Set.of("value", "unit", "standardDeviation"))); } @Test public void testMissingStandardDeviationComponentForChart() { - ConfigurationParsingResult configurationParsingResult = parseYaml("standardDeviation: \"standardDeviation\"", "standardDeviation: \"badstandardDeviation\""); + ConfigurationParsingResult configurationParsingResult = parseYaml("testMissingStandardDeviationComponentForChart", "standardDeviation: \"standardDeviation\"", "standardDeviation: \"badstandardDeviation\""); Assert.assertFalse(configurationParsingResult.isValid()); ValidationCheckResult onlyError = Iterables.getOnlyElement(configurationParsingResult.getValidationCheckResults()); log.debug(onlyError.getMessage()); @@ -552,12 +586,12 @@ public class ApplicationConfigurationServiceTest { Assert.assertTrue((onlyError.getMessageParams().get("variable")).equals("Nombre d'individus")); Assert.assertTrue((onlyError.getMessageParams().get("dataType")).equals("site")); Assert.assertTrue((onlyError.getMessageParams().get("standardDeviation")).equals("badstandardDeviation")); - Assert.assertTrue(((Set)onlyError.getMessageParams().get("components")).equals(Set.of("value","unit","standardDeviation"))); + Assert.assertTrue(((Set) onlyError.getMessageParams().get("components")).equals(Set.of("value", "unit", "standardDeviation"))); } @Test public void testMissingUnitComponentForChart() { - ConfigurationParsingResult configurationParsingResult = parseYaml("unit: \"unit\"", "unit: \"badunit\""); + ConfigurationParsingResult configurationParsingResult = parseYaml("testMissingUnitComponentForChart", "unit: \"unit\"", "unit: \"badunit\""); Assert.assertFalse(configurationParsingResult.isValid()); ValidationCheckResult onlyError = Iterables.getOnlyElement(configurationParsingResult.getValidationCheckResults()); log.debug(onlyError.getMessage()); @@ -565,18 +599,18 @@ public class ApplicationConfigurationServiceTest { Assert.assertTrue((onlyError.getMessageParams().get("variable")).equals("Nombre d'individus")); Assert.assertTrue((onlyError.getMessageParams().get("dataType")).equals("site")); Assert.assertTrue((onlyError.getMessageParams().get("unit")).equals("badunit")); - Assert.assertTrue(((Set)onlyError.getMessageParams().get("components")).equals(Set.of("value","unit","standardDeviation"))); + Assert.assertTrue(((Set) onlyError.getMessageParams().get("components")).equals(Set.of("value", "unit", "standardDeviation"))); } @Test - public void testvalid(){ - ConfigurationParsingResult configurationParsingResult = parseYaml("",""); + public void testvalid() { + ConfigurationParsingResult configurationParsingResult = parseYaml("", "", ""); Assert.assertTrue(configurationParsingResult.isValid()); } @Test public void testMissingKeyColumnsForReference() { - ConfigurationParsingResult configurationParsingResult = parseYaml("keyColumns: [nom du projet_key]", ""); + ConfigurationParsingResult configurationParsingResult = parseYaml("testMissingKeyColumnsForReference", "keyColumns: [nom du projet_key]", ""); Assert.assertFalse(configurationParsingResult.isValid()); ValidationCheckResult onlyError = Iterables.getOnlyElement(configurationParsingResult.getValidationCheckResults()); log.debug(onlyError.getMessage()); @@ -595,7 +629,7 @@ public class ApplicationConfigurationServiceTest { " params:\n" + " pattern: dd/MM/yyyy\n" + " refType: peu_importe_refType_n_a_pas_de_sens"; - ConfigurationParsingResult configurationParsingResult = parseYaml(toReplace, replacement); + ConfigurationParsingResult configurationParsingResult = parseYaml("testIllegalCheckerConfigurationParameterForVariableComponentChecker", toReplace, replacement); Assert.assertFalse(configurationParsingResult.isValid()); ValidationCheckResult onlyError = Iterables.getOnlyElement(configurationParsingResult.getValidationCheckResults()); log.debug(onlyError.getMessage()); @@ -614,7 +648,7 @@ public class ApplicationConfigurationServiceTest { " params:\n" + " refType: sites"; String replacement = ""; - ConfigurationParsingResult configurationParsingResult = parseYaml(toReplace, replacement); + ConfigurationParsingResult configurationParsingResult = parseYaml("testauthorizationScopeMissingReferenceCheckerForAuthorizationScope", toReplace, replacement); Assert.assertFalse(configurationParsingResult.isValid()); ValidationCheckResult onlyError = Iterables.getOnlyElement(configurationParsingResult.getValidationCheckResults()); log.debug(onlyError.getMessage()); diff --git a/ui/cypress/fixtures/applications/errors/errors.json b/ui/cypress/fixtures/applications/errors/errors.json new file mode 100644 index 000000000..292290b2e --- /dev/null +++ b/ui/cypress/fixtures/applications/errors/errors.json @@ -0,0 +1 @@ +{"testMissingValueComponentForChart":{"validationCheckResults":[{"level":"ERROR","message":"missingValueComponentForChart","messageParams":{"variable":"Nombre d'individus","valueComponent":"nonvalue","dataType":"site","components":["value","unit","standardDeviation"]},"error":true,"success":false}],"result":{"requiredAuthorizationsAttributes":["localization"],"version":1,"internationalization":{"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}},"references":{"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"internationalizedValidations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"internationalizedValidations":{}},"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"authorization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}},"internationalizationDisplay":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"internationalizedValidations":{"exempledeDeRegleDeValidation":{"fr":"Juste un exemple"}}}}},"comment":null,"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"},"internationalizedColumns":null,"name":"Sites","version":1,"defaultLanguage":null,"internationalization":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}}},"references":{"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":";","keyColumns":["name"],"columns":{"name":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"separator":"\u0000","keyColumns":["nom du site_key"],"columns":{"nom du type de site":null,"nom du site_key":null,"nom du site_fr":null,"nom du site_en":null,"description du site_fr":null,"description du site_en":null,"code sandre du Plan d'eau":null,"code sandre de la Masse d'eau plan d'eau":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom_key"],"columns":{"nom_key":null,"nom_fr":null,"nom_en":null,"description_fr":null,"description_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom de la plateforme_key"],"columns":{"nom de la plateforme_key":null,"nom du site":null,"nom de la plateforme_fr":null,"nom de la plateforme_en":null,"latitude":null,"longitude":null,"altitude":null,"nom du type de plateforme":null,"code sandre":null,"code sandre du contexte":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"separator":"\u0000","keyColumns":["nom du projet_key"],"columns":{"nom du projet_key":null,"nom du projet_fr":null,"nom du projet_en":null,"description du projet_fr":null,"description du projet_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}}},"compositeReferences":{"localizations":{"internationalizationName":null,"internationalizedColumns":null,"components":[{"internationalizationName":null,"internationalizedColumns":null,"reference":"typeSites","parentKeyColumn":null,"parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"sites","parentKeyColumn":"nom du type de site","parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"plateformes","parentKeyColumn":"nom du site","parentRecursiveKey":null}]}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"internationalizationDisplays":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"format":{"headerLine":2,"firstRowLine":3,"separator":";","columns":[{"header":"typeSite","boundTo":{"variable":"localization","component":"typeSite","id":"localization_typeSite","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"site","boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"date","boundTo":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"heure","boundTo":{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Couleur des individus","boundTo":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus valeur","boundTo":{"variable":"Nombre d'individus","component":"value","id":"Nombre d'individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus ecart type","boundTo":{"variable":"Nombre d'individus","component":"standardDeviation","id":"Nombre d'individus_standardDeviation","type":"PARAM_VARIABLE_COMPONENT_KEY"}}],"repeatedColumns":[],"constants":[{"rowNumber":1,"columnNumber":2,"headerName":null,"boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"},"exportHeader":"Site"}]},"data":{"date":{"chartDescription":null,"components":{"day":{"checker":{"name":"Date","params":{"pattern":"dd/MM/yyyy","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"time":{"checker":{"name":"Date","params":{"pattern":"hh:mm:ss","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"localization":{"chartDescription":null,"components":{"site":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"sites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"typeSite":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"typeSites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"Couleur des individus":{"chartDescription":null,"components":{"value":null},"computedComponents":{}},"Nombre d'individus":{"chartDescription":{"value":"nonvalue","aggregation":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"},"unit":"unit","gap":null,"standardDeviation":"standardDeviation"},"components":{"value":null,"unit":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"units","groovy":null,"duration":null,"transformation":{"codify":true,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"standardDeviation":null},"computedComponents":{}}},"validations":{"exempledeDeRegleDeValidation":{"internationalizationName":{"fr":"Juste un exemple"},"internationalizedColumns":null,"checker":{"name":"GroovyExpression","params":{"pattern":null,"refType":null,"groovy":{"expression":"true","references":[],"datatypes":[]},"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"variableComponents":null}},"uniqueness":[{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}],"migrations":{},"authorization":{"timeScope":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},"authorizationScopes":{"localization":{"internationalizationName":null,"internationalizedColumns":null,"variable":"localization","component":"site","variableComponentKey":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}}},"dataGroups":{"referentiel":{"internationalizationName":null,"internationalizedColumns":null,"label":"Référentiel","data":["localization","date"]},"qualitatif":{"internationalizationName":null,"internationalizedColumns":null,"label":"Données qualitatives","data":["Nombre d'individus","Couleur des individus"]}},"internationalization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}}},"repository":null}}},"valid":false},"testCsvBoundToUnknownVariableComponent":{"validationCheckResults":[{"level":"ERROR","message":"unknownUsedAsVariableComponentUniqueness","messageParams":{"dataType":"site","unknownUsedAsVariableComponentUniqueness":["localization_site"],"availableVariableComponents":["Nombre d'individus_value","date_time","Nombre d'individus_unit","Nombre d'individus_standardDeviation","localization_typeSite","date_day","localization_sites","Couleur des individus_value"]},"error":true,"success":false},{"level":"ERROR","message":"authorizationVariableComponentKeyUnknownComponent","messageParams":{"variable":"localization","component":"site","knownComponents":["sites","typeSite"]},"error":true,"success":false},{"level":"ERROR","message":"csvBoundToUnknownVariableComponent","messageParams":{"header":"site","variable":"localization","component":"site","components":["sites","typeSite"]},"error":true,"success":false}],"result":{"requiredAuthorizationsAttributes":["localization"],"version":1,"internationalization":{"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}},"references":{"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"internationalizedValidations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"internationalizedValidations":{}},"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"authorization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}},"internationalizationDisplay":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"internationalizedValidations":{"exempledeDeRegleDeValidation":{"fr":"Juste un exemple"}}}}},"comment":null,"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"},"internationalizedColumns":null,"name":"Sites","version":1,"defaultLanguage":null,"internationalization":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}}},"references":{"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":";","keyColumns":["name"],"columns":{"name":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"separator":"\u0000","keyColumns":["nom du site_key"],"columns":{"nom du type de site":null,"nom du site_key":null,"nom du site_fr":null,"nom du site_en":null,"description du site_fr":null,"description du site_en":null,"code sandre du Plan d'eau":null,"code sandre de la Masse d'eau plan d'eau":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom_key"],"columns":{"nom_key":null,"nom_fr":null,"nom_en":null,"description_fr":null,"description_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom de la plateforme_key"],"columns":{"nom de la plateforme_key":null,"nom du site":null,"nom de la plateforme_fr":null,"nom de la plateforme_en":null,"latitude":null,"longitude":null,"altitude":null,"nom du type de plateforme":null,"code sandre":null,"code sandre du contexte":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"separator":"\u0000","keyColumns":["nom du projet_key"],"columns":{"nom du projet_key":null,"nom du projet_fr":null,"nom du projet_en":null,"description du projet_fr":null,"description du projet_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}}},"compositeReferences":{"localizations":{"internationalizationName":null,"internationalizedColumns":null,"components":[{"internationalizationName":null,"internationalizedColumns":null,"reference":"typeSites","parentKeyColumn":null,"parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"sites","parentKeyColumn":"nom du type de site","parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"plateformes","parentKeyColumn":"nom du site","parentRecursiveKey":null}]}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"internationalizationDisplays":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"format":{"headerLine":2,"firstRowLine":3,"separator":";","columns":[{"header":"typeSite","boundTo":{"variable":"localization","component":"typeSite","id":"localization_typeSite","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"site","boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"date","boundTo":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"heure","boundTo":{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Couleur des individus","boundTo":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus valeur","boundTo":{"variable":"Nombre d'individus","component":"value","id":"Nombre d'individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus ecart type","boundTo":{"variable":"Nombre d'individus","component":"standardDeviation","id":"Nombre d'individus_standardDeviation","type":"PARAM_VARIABLE_COMPONENT_KEY"}}],"repeatedColumns":[],"constants":[{"rowNumber":1,"columnNumber":2,"headerName":null,"boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"},"exportHeader":"Site"}]},"data":{"date":{"chartDescription":null,"components":{"day":{"checker":{"name":"Date","params":{"pattern":"dd/MM/yyyy","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"time":{"checker":{"name":"Date","params":{"pattern":"hh:mm:ss","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"localization":{"chartDescription":null,"components":{"sites":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"sites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"typeSite":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"typeSites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"Couleur des individus":{"chartDescription":null,"components":{"value":null},"computedComponents":{}},"Nombre d'individus":{"chartDescription":{"value":"value","aggregation":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"},"unit":"unit","gap":null,"standardDeviation":"standardDeviation"},"components":{"value":null,"unit":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"units","groovy":null,"duration":null,"transformation":{"codify":true,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"standardDeviation":null},"computedComponents":{}}},"validations":{"exempledeDeRegleDeValidation":{"internationalizationName":{"fr":"Juste un exemple"},"internationalizedColumns":null,"checker":{"name":"GroovyExpression","params":{"pattern":null,"refType":null,"groovy":{"expression":"true","references":[],"datatypes":[]},"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"variableComponents":null}},"uniqueness":[{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}],"migrations":{},"authorization":{"timeScope":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},"authorizationScopes":{"localization":{"internationalizationName":null,"internationalizedColumns":null,"variable":"localization","component":"site","variableComponentKey":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}}},"dataGroups":{"referentiel":{"internationalizationName":null,"internationalizedColumns":null,"label":"Référentiel","data":["localization","date"]},"qualitatif":{"internationalizationName":null,"internationalizedColumns":null,"label":"Données qualitatives","data":["Nombre d'individus","Couleur des individus"]}},"internationalization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}}},"repository":null}}},"valid":false},"testTimeScopeVariableComponentWrongChecker":{"validationCheckResults":[{"level":"ERROR","message":"unknownCheckerNameForVariableComponent","messageParams":{"datatype":"site","variable":"date","component":"day","checkerName":"Dates","knownCheckerNames":["Date","Float","Integer","RegularExpression","Reference"]},"error":true,"success":false},{"level":"ERROR","message":"unknownCheckerNameForVariableComponent","messageParams":{"datatype":"site","variable":"date","component":"time","checkerName":"Dates","knownCheckerNames":["Date","Float","Integer","RegularExpression","Reference"]},"error":true,"success":false},{"level":"ERROR","message":"timeScopeVariableComponentWrongChecker","messageParams":{"variable":"date","component":"day","expectedChecker":"Date"},"error":true,"success":false}],"result":{"requiredAuthorizationsAttributes":["localization"],"version":1,"internationalization":{"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}},"references":{"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"internationalizedValidations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"internationalizedValidations":{}},"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"authorization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}},"internationalizationDisplay":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"internationalizedValidations":{"exempledeDeRegleDeValidation":{"fr":"Juste un exemple"}}}}},"comment":null,"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"},"internationalizedColumns":null,"name":"Sites","version":1,"defaultLanguage":null,"internationalization":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}}},"references":{"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":";","keyColumns":["name"],"columns":{"name":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"separator":"\u0000","keyColumns":["nom du site_key"],"columns":{"nom du type de site":null,"nom du site_key":null,"nom du site_fr":null,"nom du site_en":null,"description du site_fr":null,"description du site_en":null,"code sandre du Plan d'eau":null,"code sandre de la Masse d'eau plan d'eau":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom_key"],"columns":{"nom_key":null,"nom_fr":null,"nom_en":null,"description_fr":null,"description_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom de la plateforme_key"],"columns":{"nom de la plateforme_key":null,"nom du site":null,"nom de la plateforme_fr":null,"nom de la plateforme_en":null,"latitude":null,"longitude":null,"altitude":null,"nom du type de plateforme":null,"code sandre":null,"code sandre du contexte":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"separator":"\u0000","keyColumns":["nom du projet_key"],"columns":{"nom du projet_key":null,"nom du projet_fr":null,"nom du projet_en":null,"description du projet_fr":null,"description du projet_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}}},"compositeReferences":{"localizations":{"internationalizationName":null,"internationalizedColumns":null,"components":[{"internationalizationName":null,"internationalizedColumns":null,"reference":"typeSites","parentKeyColumn":null,"parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"sites","parentKeyColumn":"nom du type de site","parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"plateformes","parentKeyColumn":"nom du site","parentRecursiveKey":null}]}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"internationalizationDisplays":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"format":{"headerLine":2,"firstRowLine":3,"separator":";","columns":[{"header":"typeSite","boundTo":{"variable":"localization","component":"typeSite","id":"localization_typeSite","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"site","boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"date","boundTo":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"heure","boundTo":{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Couleur des individus","boundTo":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus valeur","boundTo":{"variable":"Nombre d'individus","component":"value","id":"Nombre d'individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus ecart type","boundTo":{"variable":"Nombre d'individus","component":"standardDeviation","id":"Nombre d'individus_standardDeviation","type":"PARAM_VARIABLE_COMPONENT_KEY"}}],"repeatedColumns":[],"constants":[{"rowNumber":1,"columnNumber":2,"headerName":null,"boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"},"exportHeader":"Site"}]},"data":{"date":{"chartDescription":null,"components":{"day":{"checker":{"name":"Dates","params":{"pattern":"dd/MM/yyyy","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"time":{"checker":{"name":"Dates","params":{"pattern":"hh:mm:ss","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"localization":{"chartDescription":null,"components":{"site":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"sites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"typeSite":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"typeSites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"Couleur des individus":{"chartDescription":null,"components":{"value":null},"computedComponents":{}},"Nombre d'individus":{"chartDescription":{"value":"value","aggregation":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"},"unit":"unit","gap":null,"standardDeviation":"standardDeviation"},"components":{"value":null,"unit":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"units","groovy":null,"duration":null,"transformation":{"codify":true,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"standardDeviation":null},"computedComponents":{}}},"validations":{"exempledeDeRegleDeValidation":{"internationalizationName":{"fr":"Juste un exemple"},"internationalizedColumns":null,"checker":{"name":"GroovyExpression","params":{"pattern":null,"refType":null,"groovy":{"expression":"true","references":[],"datatypes":[]},"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"variableComponents":null}},"uniqueness":[{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}],"migrations":{},"authorization":{"timeScope":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},"authorizationScopes":{"localization":{"internationalizationName":null,"internationalizedColumns":null,"variable":"localization","component":"site","variableComponentKey":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}}},"dataGroups":{"referentiel":{"internationalizationName":null,"internationalizedColumns":null,"label":"Référentiel","data":["localization","date"]},"qualitatif":{"internationalizationName":null,"internationalizedColumns":null,"label":"Données qualitatives","data":["Nombre d'individus","Couleur des individus"]}},"internationalization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}}},"repository":null}}},"valid":false},"testUnknownReferenceInInternationalizationDisplayPatternInDatatype":{"validationCheckResults":[{"level":"ERROR","message":"unknownReferenceInDatatypeReferenceDisplay","messageParams":{"dataType":"site","reference":"plateforme","references":["units","sites","typeSites","plateformes","projets"]},"error":true,"success":false}],"result":{"requiredAuthorizationsAttributes":["localization"],"version":1,"internationalization":{"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}},"references":{"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"internationalizedValidations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"internationalizedValidations":{}},"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"authorization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}},"internationalizationDisplay":{"plateforme":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"internationalizedValidations":{"exempledeDeRegleDeValidation":{"fr":"Juste un exemple"}}}}},"comment":null,"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"},"internationalizedColumns":null,"name":"Sites","version":1,"defaultLanguage":null,"internationalization":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}}},"references":{"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":";","keyColumns":["name"],"columns":{"name":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"separator":"\u0000","keyColumns":["nom du site_key"],"columns":{"nom du type de site":null,"nom du site_key":null,"nom du site_fr":null,"nom du site_en":null,"description du site_fr":null,"description du site_en":null,"code sandre du Plan d'eau":null,"code sandre de la Masse d'eau plan d'eau":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom_key"],"columns":{"nom_key":null,"nom_fr":null,"nom_en":null,"description_fr":null,"description_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom de la plateforme_key"],"columns":{"nom de la plateforme_key":null,"nom du site":null,"nom de la plateforme_fr":null,"nom de la plateforme_en":null,"latitude":null,"longitude":null,"altitude":null,"nom du type de plateforme":null,"code sandre":null,"code sandre du contexte":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"separator":"\u0000","keyColumns":["nom du projet_key"],"columns":{"nom du projet_key":null,"nom du projet_fr":null,"nom du projet_en":null,"description du projet_fr":null,"description du projet_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}}},"compositeReferences":{"localizations":{"internationalizationName":null,"internationalizedColumns":null,"components":[{"internationalizationName":null,"internationalizedColumns":null,"reference":"typeSites","parentKeyColumn":null,"parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"sites","parentKeyColumn":"nom du type de site","parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"plateformes","parentKeyColumn":"nom du site","parentRecursiveKey":null}]}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"internationalizationDisplays":{"plateforme":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"format":{"headerLine":2,"firstRowLine":3,"separator":";","columns":[{"header":"typeSite","boundTo":{"variable":"localization","component":"typeSite","id":"localization_typeSite","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"site","boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"date","boundTo":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"heure","boundTo":{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Couleur des individus","boundTo":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus valeur","boundTo":{"variable":"Nombre d'individus","component":"value","id":"Nombre d'individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus ecart type","boundTo":{"variable":"Nombre d'individus","component":"standardDeviation","id":"Nombre d'individus_standardDeviation","type":"PARAM_VARIABLE_COMPONENT_KEY"}}],"repeatedColumns":[],"constants":[{"rowNumber":1,"columnNumber":2,"headerName":null,"boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"},"exportHeader":"Site"}]},"data":{"date":{"chartDescription":null,"components":{"day":{"checker":{"name":"Date","params":{"pattern":"dd/MM/yyyy","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"time":{"checker":{"name":"Date","params":{"pattern":"hh:mm:ss","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"localization":{"chartDescription":null,"components":{"site":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"sites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"typeSite":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"typeSites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"Couleur des individus":{"chartDescription":null,"components":{"value":null},"computedComponents":{}},"Nombre d'individus":{"chartDescription":{"value":"value","aggregation":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"},"unit":"unit","gap":null,"standardDeviation":"standardDeviation"},"components":{"value":null,"unit":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"units","groovy":null,"duration":null,"transformation":{"codify":true,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"standardDeviation":null},"computedComponents":{}}},"validations":{"exempledeDeRegleDeValidation":{"internationalizationName":{"fr":"Juste un exemple"},"internationalizedColumns":null,"checker":{"name":"GroovyExpression","params":{"pattern":null,"refType":null,"groovy":{"expression":"true","references":[],"datatypes":[]},"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"variableComponents":null}},"uniqueness":[{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}],"migrations":{},"authorization":{"timeScope":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},"authorizationScopes":{"localization":{"internationalizationName":null,"internationalizedColumns":null,"variable":"localization","component":"site","variableComponentKey":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}}},"dataGroups":{"referentiel":{"internationalizationName":null,"internationalizedColumns":null,"label":"Référentiel","data":["localization","date"]},"qualitatif":{"internationalizationName":null,"internationalizedColumns":null,"label":"Données qualitatives","data":["Nombre d'individus","Couleur des individus"]}},"internationalization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}}},"repository":null}}},"valid":false},"testRequiredReferenceInCompositeReferenceForParentKeyColumn":{"validationCheckResults":[{"level":"ERROR","message":"requiredReferenceInCompositeReferenceForParentKeyColumn","messageParams":{"compositeReference":"localizations","parentKeyColumn":"nom du type de site"},"error":true,"success":false}],"result":{"requiredAuthorizationsAttributes":["localization"],"version":1,"internationalization":{"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}},"references":{"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"internationalizedValidations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"internationalizedValidations":{}},"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"authorization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}},"internationalizationDisplay":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"internationalizedValidations":{"exempledeDeRegleDeValidation":{"fr":"Juste un exemple"}}}}},"comment":null,"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"},"internationalizedColumns":null,"name":"Sites","version":1,"defaultLanguage":null,"internationalization":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}}},"references":{"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":";","keyColumns":["name"],"columns":{"name":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"separator":"\u0000","keyColumns":["nom du site_key"],"columns":{"nom du type de site":null,"nom du site_key":null,"nom du site_fr":null,"nom du site_en":null,"description du site_fr":null,"description du site_en":null,"code sandre du Plan d'eau":null,"code sandre de la Masse d'eau plan d'eau":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom_key"],"columns":{"nom_key":null,"nom_fr":null,"nom_en":null,"description_fr":null,"description_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom de la plateforme_key"],"columns":{"nom de la plateforme_key":null,"nom du site":null,"nom de la plateforme_fr":null,"nom de la plateforme_en":null,"latitude":null,"longitude":null,"altitude":null,"nom du type de plateforme":null,"code sandre":null,"code sandre du contexte":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"separator":"\u0000","keyColumns":["nom du projet_key"],"columns":{"nom du projet_key":null,"nom du projet_fr":null,"nom du projet_en":null,"description du projet_fr":null,"description du projet_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}}},"compositeReferences":{"localizations":{"internationalizationName":null,"internationalizedColumns":null,"components":[{"internationalizationName":null,"internationalizedColumns":null,"reference":"sites","parentKeyColumn":"nom du type de site","parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"plateformes","parentKeyColumn":"nom du site","parentRecursiveKey":null}]}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"internationalizationDisplays":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"format":{"headerLine":2,"firstRowLine":3,"separator":";","columns":[{"header":"typeSite","boundTo":{"variable":"localization","component":"typeSite","id":"localization_typeSite","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"site","boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"date","boundTo":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"heure","boundTo":{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Couleur des individus","boundTo":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus valeur","boundTo":{"variable":"Nombre d'individus","component":"value","id":"Nombre d'individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus ecart type","boundTo":{"variable":"Nombre d'individus","component":"standardDeviation","id":"Nombre d'individus_standardDeviation","type":"PARAM_VARIABLE_COMPONENT_KEY"}}],"repeatedColumns":[],"constants":[{"rowNumber":1,"columnNumber":2,"headerName":null,"boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"},"exportHeader":"Site"}]},"data":{"date":{"chartDescription":null,"components":{"day":{"checker":{"name":"Date","params":{"pattern":"dd/MM/yyyy","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"time":{"checker":{"name":"Date","params":{"pattern":"hh:mm:ss","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"localization":{"chartDescription":null,"components":{"site":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"sites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"typeSite":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"typeSites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"Couleur des individus":{"chartDescription":null,"components":{"value":null},"computedComponents":{}},"Nombre d'individus":{"chartDescription":{"value":"value","aggregation":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"},"unit":"unit","gap":null,"standardDeviation":"standardDeviation"},"components":{"value":null,"unit":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"units","groovy":null,"duration":null,"transformation":{"codify":true,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"standardDeviation":null},"computedComponents":{}}},"validations":{"exempledeDeRegleDeValidation":{"internationalizationName":{"fr":"Juste un exemple"},"internationalizedColumns":null,"checker":{"name":"GroovyExpression","params":{"pattern":null,"refType":null,"groovy":{"expression":"true","references":[],"datatypes":[]},"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"variableComponents":null}},"uniqueness":[{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}],"migrations":{},"authorization":{"timeScope":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},"authorizationScopes":{"localization":{"internationalizationName":null,"internationalizedColumns":null,"variable":"localization","component":"site","variableComponentKey":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}}},"dataGroups":{"referentiel":{"internationalizationName":null,"internationalizedColumns":null,"label":"Référentiel","data":["localization","date"]},"qualitatif":{"internationalizationName":null,"internationalizedColumns":null,"label":"Données qualitatives","data":["Nombre d'individus","Couleur des individus"]}},"internationalization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}}},"repository":null}}},"valid":false},"testTimeScopeVariableComponentKeyMissingVariable":{"validationCheckResults":[{"level":"ERROR","message":"timeScopeVariableComponentKeyMissingVariable","messageParams":{"dataType":"site","variables":["date","localization","Couleur des individus","Nombre d'individus"]},"error":true,"success":false}],"result":{"requiredAuthorizationsAttributes":["localization"],"version":1,"internationalization":{"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}},"references":{"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"internationalizedValidations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"internationalizedValidations":{}},"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"authorization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}},"internationalizationDisplay":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"internationalizedValidations":{"exempledeDeRegleDeValidation":{"fr":"Juste un exemple"}}}}},"comment":null,"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"},"internationalizedColumns":null,"name":"Sites","version":1,"defaultLanguage":null,"internationalization":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}}},"references":{"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":";","keyColumns":["name"],"columns":{"name":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"separator":"\u0000","keyColumns":["nom du site_key"],"columns":{"nom du type de site":null,"nom du site_key":null,"nom du site_fr":null,"nom du site_en":null,"description du site_fr":null,"description du site_en":null,"code sandre du Plan d'eau":null,"code sandre de la Masse d'eau plan d'eau":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom_key"],"columns":{"nom_key":null,"nom_fr":null,"nom_en":null,"description_fr":null,"description_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom de la plateforme_key"],"columns":{"nom de la plateforme_key":null,"nom du site":null,"nom de la plateforme_fr":null,"nom de la plateforme_en":null,"latitude":null,"longitude":null,"altitude":null,"nom du type de plateforme":null,"code sandre":null,"code sandre du contexte":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"separator":"\u0000","keyColumns":["nom du projet_key"],"columns":{"nom du projet_key":null,"nom du projet_fr":null,"nom du projet_en":null,"description du projet_fr":null,"description du projet_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}}},"compositeReferences":{"localizations":{"internationalizationName":null,"internationalizedColumns":null,"components":[{"internationalizationName":null,"internationalizedColumns":null,"reference":"typeSites","parentKeyColumn":null,"parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"sites","parentKeyColumn":"nom du type de site","parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"plateformes","parentKeyColumn":"nom du site","parentRecursiveKey":null}]}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"internationalizationDisplays":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"format":{"headerLine":2,"firstRowLine":3,"separator":";","columns":[{"header":"typeSite","boundTo":{"variable":"localization","component":"typeSite","id":"localization_typeSite","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"site","boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"date","boundTo":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"heure","boundTo":{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Couleur des individus","boundTo":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus valeur","boundTo":{"variable":"Nombre d'individus","component":"value","id":"Nombre d'individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus ecart type","boundTo":{"variable":"Nombre d'individus","component":"standardDeviation","id":"Nombre d'individus_standardDeviation","type":"PARAM_VARIABLE_COMPONENT_KEY"}}],"repeatedColumns":[],"constants":[{"rowNumber":1,"columnNumber":2,"headerName":null,"boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"},"exportHeader":"Site"}]},"data":{"date":{"chartDescription":null,"components":{"day":{"checker":{"name":"Date","params":{"pattern":"dd/MM/yyyy","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"time":{"checker":{"name":"Date","params":{"pattern":"hh:mm:ss","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"localization":{"chartDescription":null,"components":{"site":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"sites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"typeSite":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"typeSites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"Couleur des individus":{"chartDescription":null,"components":{"value":null},"computedComponents":{}},"Nombre d'individus":{"chartDescription":{"value":"value","aggregation":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"},"unit":"unit","gap":null,"standardDeviation":"standardDeviation"},"components":{"value":null,"unit":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"units","groovy":null,"duration":null,"transformation":{"codify":true,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"standardDeviation":null},"computedComponents":{}}},"validations":{"exempledeDeRegleDeValidation":{"internationalizationName":{"fr":"Juste un exemple"},"internationalizedColumns":null,"checker":{"name":"GroovyExpression","params":{"pattern":null,"refType":null,"groovy":{"expression":"true","references":[],"datatypes":[]},"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"variableComponents":null}},"uniqueness":[{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}],"migrations":{},"authorization":{"timeScope":{"variable":null,"component":"day","id":"null_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},"authorizationScopes":{"localization":{"internationalizationName":null,"internationalizedColumns":null,"variable":"localization","component":"site","variableComponentKey":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}}},"dataGroups":{"referentiel":{"internationalizationName":null,"internationalizedColumns":null,"label":"Référentiel","data":["localization","date"]},"qualitatif":{"internationalizationName":null,"internationalizedColumns":null,"label":"Données qualitatives","data":["Nombre d'individus","Couleur des individus"]}},"internationalization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}}},"repository":null}}},"valid":false},"testCsvBoundToUnknownVariable":{"validationCheckResults":[{"level":"ERROR","message":"csvBoundToUnknownVariable","messageParams":{"header":"typeSite","variable":"localizations","variables":["date","localization","Couleur des individus","Nombre d'individus"]},"error":true,"success":false}],"result":{"requiredAuthorizationsAttributes":["localization"],"version":1,"internationalization":{"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}},"references":{"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"internationalizedValidations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"internationalizedValidations":{}},"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"authorization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}},"internationalizationDisplay":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"internationalizedValidations":{"exempledeDeRegleDeValidation":{"fr":"Juste un exemple"}}}}},"comment":null,"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"},"internationalizedColumns":null,"name":"Sites","version":1,"defaultLanguage":null,"internationalization":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}}},"references":{"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":";","keyColumns":["name"],"columns":{"name":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"separator":"\u0000","keyColumns":["nom du site_key"],"columns":{"nom du type de site":null,"nom du site_key":null,"nom du site_fr":null,"nom du site_en":null,"description du site_fr":null,"description du site_en":null,"code sandre du Plan d'eau":null,"code sandre de la Masse d'eau plan d'eau":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom_key"],"columns":{"nom_key":null,"nom_fr":null,"nom_en":null,"description_fr":null,"description_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom de la plateforme_key"],"columns":{"nom de la plateforme_key":null,"nom du site":null,"nom de la plateforme_fr":null,"nom de la plateforme_en":null,"latitude":null,"longitude":null,"altitude":null,"nom du type de plateforme":null,"code sandre":null,"code sandre du contexte":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"separator":"\u0000","keyColumns":["nom du projet_key"],"columns":{"nom du projet_key":null,"nom du projet_fr":null,"nom du projet_en":null,"description du projet_fr":null,"description du projet_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}}},"compositeReferences":{"localizations":{"internationalizationName":null,"internationalizedColumns":null,"components":[{"internationalizationName":null,"internationalizedColumns":null,"reference":"typeSites","parentKeyColumn":null,"parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"sites","parentKeyColumn":"nom du type de site","parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"plateformes","parentKeyColumn":"nom du site","parentRecursiveKey":null}]}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"internationalizationDisplays":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"format":{"headerLine":2,"firstRowLine":3,"separator":";","columns":[{"header":"typeSite","boundTo":{"variable":"localizations","component":"typeSite","id":"localizations_typeSite","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"site","boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"date","boundTo":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"heure","boundTo":{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Couleur des individus","boundTo":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus valeur","boundTo":{"variable":"Nombre d'individus","component":"value","id":"Nombre d'individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus ecart type","boundTo":{"variable":"Nombre d'individus","component":"standardDeviation","id":"Nombre d'individus_standardDeviation","type":"PARAM_VARIABLE_COMPONENT_KEY"}}],"repeatedColumns":[],"constants":[{"rowNumber":1,"columnNumber":2,"headerName":null,"boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"},"exportHeader":"Site"}]},"data":{"date":{"chartDescription":null,"components":{"day":{"checker":{"name":"Date","params":{"pattern":"dd/MM/yyyy","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"time":{"checker":{"name":"Date","params":{"pattern":"hh:mm:ss","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"localization":{"chartDescription":null,"components":{"site":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"sites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"typeSite":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"typeSites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"Couleur des individus":{"chartDescription":null,"components":{"value":null},"computedComponents":{}},"Nombre d'individus":{"chartDescription":{"value":"value","aggregation":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"},"unit":"unit","gap":null,"standardDeviation":"standardDeviation"},"components":{"value":null,"unit":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"units","groovy":null,"duration":null,"transformation":{"codify":true,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"standardDeviation":null},"computedComponents":{}}},"validations":{"exempledeDeRegleDeValidation":{"internationalizationName":{"fr":"Juste un exemple"},"internationalizedColumns":null,"checker":{"name":"GroovyExpression","params":{"pattern":null,"refType":null,"groovy":{"expression":"true","references":[],"datatypes":[]},"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"variableComponents":null}},"uniqueness":[{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}],"migrations":{},"authorization":{"timeScope":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},"authorizationScopes":{"localization":{"internationalizationName":null,"internationalizedColumns":null,"variable":"localization","component":"site","variableComponentKey":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}}},"dataGroups":{"referentiel":{"internationalizationName":null,"internationalizedColumns":null,"label":"Référentiel","data":["localization","date"]},"qualitatif":{"internationalizationName":null,"internationalizedColumns":null,"label":"Données qualitatives","data":["Nombre d'individus","Couleur des individus"]}},"internationalization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}}},"repository":null}}},"valid":false},"testMissingReferenceForChecker":{"validationCheckResults":[{"level":"ERROR","message":"missingReferenceForChecker","messageParams":{"dataType":"site","datum":"localization","component":"site","references":["units","sites","typeSites","plateformes","projets"]},"error":true,"success":false},{"level":"ERROR","message":"authorizationScopeVariableComponentReftypeNull","messageParams":{"variable":"localization","component":"site","knownPatterns":["units","sites","typeSites","plateformes","projets"]},"error":true,"success":false}],"result":{"requiredAuthorizationsAttributes":["localization"],"version":1,"internationalization":{"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}},"references":{"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"internationalizedValidations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"internationalizedValidations":{}},"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"authorization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}},"internationalizationDisplay":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"internationalizedValidations":{"exempledeDeRegleDeValidation":{"fr":"Juste un exemple"}}}}},"comment":null,"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"},"internationalizedColumns":null,"name":"Sites","version":1,"defaultLanguage":null,"internationalization":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}}},"references":{"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":";","keyColumns":["name"],"columns":{"name":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"separator":"\u0000","keyColumns":["nom du site_key"],"columns":{"nom du type de site":null,"nom du site_key":null,"nom du site_fr":null,"nom du site_en":null,"description du site_fr":null,"description du site_en":null,"code sandre du Plan d'eau":null,"code sandre de la Masse d'eau plan d'eau":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom_key"],"columns":{"nom_key":null,"nom_fr":null,"nom_en":null,"description_fr":null,"description_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom de la plateforme_key"],"columns":{"nom de la plateforme_key":null,"nom du site":null,"nom de la plateforme_fr":null,"nom de la plateforme_en":null,"latitude":null,"longitude":null,"altitude":null,"nom du type de plateforme":null,"code sandre":null,"code sandre du contexte":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"separator":"\u0000","keyColumns":["nom du projet_key"],"columns":{"nom du projet_key":null,"nom du projet_fr":null,"nom du projet_en":null,"description du projet_fr":null,"description du projet_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}}},"compositeReferences":{"localizations":{"internationalizationName":null,"internationalizedColumns":null,"components":[{"internationalizationName":null,"internationalizedColumns":null,"reference":"typeSites","parentKeyColumn":null,"parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"sites","parentKeyColumn":"nom du type de site","parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"plateformes","parentKeyColumn":"nom du site","parentRecursiveKey":null}]}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"internationalizationDisplays":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"format":{"headerLine":2,"firstRowLine":3,"separator":";","columns":[{"header":"typeSite","boundTo":{"variable":"localization","component":"typeSite","id":"localization_typeSite","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"site","boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"date","boundTo":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"heure","boundTo":{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Couleur des individus","boundTo":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus valeur","boundTo":{"variable":"Nombre d'individus","component":"value","id":"Nombre d'individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus ecart type","boundTo":{"variable":"Nombre d'individus","component":"standardDeviation","id":"Nombre d'individus_standardDeviation","type":"PARAM_VARIABLE_COMPONENT_KEY"}}],"repeatedColumns":[],"constants":[{"rowNumber":1,"columnNumber":2,"headerName":null,"boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"},"exportHeader":"Site"}]},"data":{"date":{"chartDescription":null,"components":{"day":{"checker":{"name":"Date","params":{"pattern":"dd/MM/yyyy","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"time":{"checker":{"name":"Date","params":{"pattern":"hh:mm:ss","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"localization":{"chartDescription":null,"components":{"site":{"checker":{"name":"Reference","params":null},"defaultValue":null},"typeSite":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"typeSites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"Couleur des individus":{"chartDescription":null,"components":{"value":null},"computedComponents":{}},"Nombre d'individus":{"chartDescription":{"value":"value","aggregation":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"},"unit":"unit","gap":null,"standardDeviation":"standardDeviation"},"components":{"value":null,"unit":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"units","groovy":null,"duration":null,"transformation":{"codify":true,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"standardDeviation":null},"computedComponents":{}}},"validations":{"exempledeDeRegleDeValidation":{"internationalizationName":{"fr":"Juste un exemple"},"internationalizedColumns":null,"checker":{"name":"GroovyExpression","params":{"pattern":null,"refType":null,"groovy":{"expression":"true","references":[],"datatypes":[]},"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"variableComponents":null}},"uniqueness":[{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}],"migrations":{},"authorization":{"timeScope":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},"authorizationScopes":{"localization":{"internationalizationName":null,"internationalizedColumns":null,"variable":"localization","component":"site","variableComponentKey":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}}},"dataGroups":{"referentiel":{"internationalizationName":null,"internationalizedColumns":null,"label":"Référentiel","data":["localization","date"]},"qualitatif":{"internationalizationName":null,"internationalizedColumns":null,"label":"Données qualitatives","data":["Nombre d'individus","Couleur des individus"]}},"internationalization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}}},"repository":null}}},"valid":false},"testUnknownReferenceInCompositeReference":{"validationCheckResults":[{"level":"ERROR","message":"unknownReferenceInCompositeReference","messageParams":{"compositeReference":"localizations","unknownReferences":["typeDeSites"],"references":["units","sites","typeSites","plateformes","projets"]},"error":true,"success":false}],"result":{"requiredAuthorizationsAttributes":["localization"],"version":1,"internationalization":{"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}},"references":{"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"internationalizedValidations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"internationalizedValidations":{}},"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"authorization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}},"internationalizationDisplay":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"internationalizedValidations":{"exempledeDeRegleDeValidation":{"fr":"Juste un exemple"}}}}},"comment":null,"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"},"internationalizedColumns":null,"name":"Sites","version":1,"defaultLanguage":null,"internationalization":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}}},"references":{"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":";","keyColumns":["name"],"columns":{"name":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"separator":"\u0000","keyColumns":["nom du site_key"],"columns":{"nom du type de site":null,"nom du site_key":null,"nom du site_fr":null,"nom du site_en":null,"description du site_fr":null,"description du site_en":null,"code sandre du Plan d'eau":null,"code sandre de la Masse d'eau plan d'eau":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom_key"],"columns":{"nom_key":null,"nom_fr":null,"nom_en":null,"description_fr":null,"description_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom de la plateforme_key"],"columns":{"nom de la plateforme_key":null,"nom du site":null,"nom de la plateforme_fr":null,"nom de la plateforme_en":null,"latitude":null,"longitude":null,"altitude":null,"nom du type de plateforme":null,"code sandre":null,"code sandre du contexte":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"separator":"\u0000","keyColumns":["nom du projet_key"],"columns":{"nom du projet_key":null,"nom du projet_fr":null,"nom du projet_en":null,"description du projet_fr":null,"description du projet_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}}},"compositeReferences":{"localizations":{"internationalizationName":null,"internationalizedColumns":null,"components":[{"internationalizationName":null,"internationalizedColumns":null,"reference":"typeDeSites","parentKeyColumn":null,"parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"sites","parentKeyColumn":"nom du type de site","parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"plateformes","parentKeyColumn":"nom du site","parentRecursiveKey":null}]}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"internationalizationDisplays":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"format":{"headerLine":2,"firstRowLine":3,"separator":";","columns":[{"header":"typeSite","boundTo":{"variable":"localization","component":"typeSite","id":"localization_typeSite","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"site","boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"date","boundTo":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"heure","boundTo":{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Couleur des individus","boundTo":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus valeur","boundTo":{"variable":"Nombre d'individus","component":"value","id":"Nombre d'individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus ecart type","boundTo":{"variable":"Nombre d'individus","component":"standardDeviation","id":"Nombre d'individus_standardDeviation","type":"PARAM_VARIABLE_COMPONENT_KEY"}}],"repeatedColumns":[],"constants":[{"rowNumber":1,"columnNumber":2,"headerName":null,"boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"},"exportHeader":"Site"}]},"data":{"date":{"chartDescription":null,"components":{"day":{"checker":{"name":"Date","params":{"pattern":"dd/MM/yyyy","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"time":{"checker":{"name":"Date","params":{"pattern":"hh:mm:ss","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"localization":{"chartDescription":null,"components":{"site":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"sites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"typeSite":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"typeSites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"Couleur des individus":{"chartDescription":null,"components":{"value":null},"computedComponents":{}},"Nombre d'individus":{"chartDescription":{"value":"value","aggregation":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"},"unit":"unit","gap":null,"standardDeviation":"standardDeviation"},"components":{"value":null,"unit":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"units","groovy":null,"duration":null,"transformation":{"codify":true,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"standardDeviation":null},"computedComponents":{}}},"validations":{"exempledeDeRegleDeValidation":{"internationalizationName":{"fr":"Juste un exemple"},"internationalizedColumns":null,"checker":{"name":"GroovyExpression","params":{"pattern":null,"refType":null,"groovy":{"expression":"true","references":[],"datatypes":[]},"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"variableComponents":null}},"uniqueness":[{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}],"migrations":{},"authorization":{"timeScope":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},"authorizationScopes":{"localization":{"internationalizationName":null,"internationalizedColumns":null,"variable":"localization","component":"site","variableComponentKey":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}}},"dataGroups":{"referentiel":{"internationalizationName":null,"internationalizedColumns":null,"label":"Référentiel","data":["localization","date"]},"qualitatif":{"internationalizationName":null,"internationalizedColumns":null,"label":"Données qualitatives","data":["Nombre d'individus","Couleur des individus"]}},"internationalization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}}},"repository":null}}},"valid":false},"testTimeScopeVariableComponentPatternUnknown":{"validationCheckResults":[{"level":"ERROR","message":"timeScopeVariableComponentPatternUnknown","messageParams":{"variable":"date","component":"day","pattern":"dd/MM","knownPatterns":["MM/yyyy","yyyy","dd/MM/yyyy","dd/MM/yyyy HH:mm:ss"]},"error":true,"success":false}],"result":{"requiredAuthorizationsAttributes":["localization"],"version":1,"internationalization":{"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}},"references":{"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"internationalizedValidations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"internationalizedValidations":{}},"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"authorization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}},"internationalizationDisplay":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"internationalizedValidations":{"exempledeDeRegleDeValidation":{"fr":"Juste un exemple"}}}}},"comment":null,"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"},"internationalizedColumns":null,"name":"Sites","version":1,"defaultLanguage":null,"internationalization":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}}},"references":{"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":";","keyColumns":["name"],"columns":{"name":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"separator":"\u0000","keyColumns":["nom du site_key"],"columns":{"nom du type de site":null,"nom du site_key":null,"nom du site_fr":null,"nom du site_en":null,"description du site_fr":null,"description du site_en":null,"code sandre du Plan d'eau":null,"code sandre de la Masse d'eau plan d'eau":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom_key"],"columns":{"nom_key":null,"nom_fr":null,"nom_en":null,"description_fr":null,"description_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom de la plateforme_key"],"columns":{"nom de la plateforme_key":null,"nom du site":null,"nom de la plateforme_fr":null,"nom de la plateforme_en":null,"latitude":null,"longitude":null,"altitude":null,"nom du type de plateforme":null,"code sandre":null,"code sandre du contexte":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"separator":"\u0000","keyColumns":["nom du projet_key"],"columns":{"nom du projet_key":null,"nom du projet_fr":null,"nom du projet_en":null,"description du projet_fr":null,"description du projet_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}}},"compositeReferences":{"localizations":{"internationalizationName":null,"internationalizedColumns":null,"components":[{"internationalizationName":null,"internationalizedColumns":null,"reference":"typeSites","parentKeyColumn":null,"parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"sites","parentKeyColumn":"nom du type de site","parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"plateformes","parentKeyColumn":"nom du site","parentRecursiveKey":null}]}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"internationalizationDisplays":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"format":{"headerLine":2,"firstRowLine":3,"separator":";","columns":[{"header":"typeSite","boundTo":{"variable":"localization","component":"typeSite","id":"localization_typeSite","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"site","boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"date","boundTo":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"heure","boundTo":{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Couleur des individus","boundTo":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus valeur","boundTo":{"variable":"Nombre d'individus","component":"value","id":"Nombre d'individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus ecart type","boundTo":{"variable":"Nombre d'individus","component":"standardDeviation","id":"Nombre d'individus_standardDeviation","type":"PARAM_VARIABLE_COMPONENT_KEY"}}],"repeatedColumns":[],"constants":[{"rowNumber":1,"columnNumber":2,"headerName":null,"boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"},"exportHeader":"Site"}]},"data":{"date":{"chartDescription":null,"components":{"day":{"checker":{"name":"Date","params":{"pattern":"dd/MM","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"time":{"checker":{"name":"Date","params":{"pattern":"hh:mm:ss","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"localization":{"chartDescription":null,"components":{"site":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"sites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"typeSite":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"typeSites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"Couleur des individus":{"chartDescription":null,"components":{"value":null},"computedComponents":{}},"Nombre d'individus":{"chartDescription":{"value":"value","aggregation":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"},"unit":"unit","gap":null,"standardDeviation":"standardDeviation"},"components":{"value":null,"unit":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"units","groovy":null,"duration":null,"transformation":{"codify":true,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"standardDeviation":null},"computedComponents":{}}},"validations":{"exempledeDeRegleDeValidation":{"internationalizationName":{"fr":"Juste un exemple"},"internationalizedColumns":null,"checker":{"name":"GroovyExpression","params":{"pattern":null,"refType":null,"groovy":{"expression":"true","references":[],"datatypes":[]},"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"variableComponents":null}},"uniqueness":[{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}],"migrations":{},"authorization":{"timeScope":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},"authorizationScopes":{"localization":{"internationalizationName":null,"internationalizedColumns":null,"variable":"localization","component":"site","variableComponentKey":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}}},"dataGroups":{"referentiel":{"internationalizationName":null,"internationalizedColumns":null,"label":"Référentiel","data":["localization","date"]},"qualitatif":{"internationalizationName":null,"internationalizedColumns":null,"label":"Données qualitatives","data":["Nombre d'individus","Couleur des individus"]}},"internationalization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}}},"repository":null}}},"valid":false},"testRequiredParentKeyColumnInCompositeReferenceForReference":{"validationCheckResults":[{"level":"ERROR","message":"requiredParentKeyColumnInCompositeReferenceForReference","messageParams":{"compositeReference":"localizations","reference":"sites","referenceTo":"typeSites"},"error":true,"success":false}],"result":{"requiredAuthorizationsAttributes":["localization"],"version":1,"internationalization":{"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}},"references":{"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"internationalizedValidations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"internationalizedValidations":{}},"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"authorization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}},"internationalizationDisplay":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"internationalizedValidations":{"exempledeDeRegleDeValidation":{"fr":"Juste un exemple"}}}}},"comment":null,"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"},"internationalizedColumns":null,"name":"Sites","version":1,"defaultLanguage":null,"internationalization":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}}},"references":{"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":";","keyColumns":["name"],"columns":{"name":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"separator":"\u0000","keyColumns":["nom du site_key"],"columns":{"nom du type de site":null,"nom du site_key":null,"nom du site_fr":null,"nom du site_en":null,"description du site_fr":null,"description du site_en":null,"code sandre du Plan d'eau":null,"code sandre de la Masse d'eau plan d'eau":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom_key"],"columns":{"nom_key":null,"nom_fr":null,"nom_en":null,"description_fr":null,"description_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom de la plateforme_key"],"columns":{"nom de la plateforme_key":null,"nom du site":null,"nom de la plateforme_fr":null,"nom de la plateforme_en":null,"latitude":null,"longitude":null,"altitude":null,"nom du type de plateforme":null,"code sandre":null,"code sandre du contexte":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"separator":"\u0000","keyColumns":["nom du projet_key"],"columns":{"nom du projet_key":null,"nom du projet_fr":null,"nom du projet_en":null,"description du projet_fr":null,"description du projet_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}}},"compositeReferences":{"localizations":{"internationalizationName":null,"internationalizedColumns":null,"components":[{"internationalizationName":null,"internationalizedColumns":null,"reference":"typeSites","parentKeyColumn":null,"parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"sites","parentKeyColumn":null,"parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"plateformes","parentKeyColumn":"nom du site","parentRecursiveKey":null}]}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"internationalizationDisplays":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"format":{"headerLine":2,"firstRowLine":3,"separator":";","columns":[{"header":"typeSite","boundTo":{"variable":"localization","component":"typeSite","id":"localization_typeSite","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"site","boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"date","boundTo":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"heure","boundTo":{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Couleur des individus","boundTo":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus valeur","boundTo":{"variable":"Nombre d'individus","component":"value","id":"Nombre d'individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus ecart type","boundTo":{"variable":"Nombre d'individus","component":"standardDeviation","id":"Nombre d'individus_standardDeviation","type":"PARAM_VARIABLE_COMPONENT_KEY"}}],"repeatedColumns":[],"constants":[{"rowNumber":1,"columnNumber":2,"headerName":null,"boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"},"exportHeader":"Site"}]},"data":{"date":{"chartDescription":null,"components":{"day":{"checker":{"name":"Date","params":{"pattern":"dd/MM/yyyy","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"time":{"checker":{"name":"Date","params":{"pattern":"hh:mm:ss","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"localization":{"chartDescription":null,"components":{"site":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"sites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"typeSite":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"typeSites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"Couleur des individus":{"chartDescription":null,"components":{"value":null},"computedComponents":{}},"Nombre d'individus":{"chartDescription":{"value":"value","aggregation":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"},"unit":"unit","gap":null,"standardDeviation":"standardDeviation"},"components":{"value":null,"unit":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"units","groovy":null,"duration":null,"transformation":{"codify":true,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"standardDeviation":null},"computedComponents":{}}},"validations":{"exempledeDeRegleDeValidation":{"internationalizationName":{"fr":"Juste un exemple"},"internationalizedColumns":null,"checker":{"name":"GroovyExpression","params":{"pattern":null,"refType":null,"groovy":{"expression":"true","references":[],"datatypes":[]},"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"variableComponents":null}},"uniqueness":[{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}],"migrations":{},"authorization":{"timeScope":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},"authorizationScopes":{"localization":{"internationalizationName":null,"internationalizedColumns":null,"variable":"localization","component":"site","variableComponentKey":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}}},"dataGroups":{"referentiel":{"internationalizationName":null,"internationalizedColumns":null,"label":"Référentiel","data":["localization","date"]},"qualitatif":{"internationalizationName":null,"internationalizedColumns":null,"label":"Données qualitatives","data":["Nombre d'individus","Couleur des individus"]}},"internationalization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}}},"repository":null}}},"valid":false},"testTimeVariableComponentKeyMissingComponent":{"validationCheckResults":[{"level":"ERROR","message":"timeVariableComponentKeyMissingComponent","messageParams":{"dataType":"site","variable":"date","knownComponents":["day","time"]},"error":true,"success":false}],"result":{"requiredAuthorizationsAttributes":["localization"],"version":1,"internationalization":{"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}},"references":{"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"internationalizedValidations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"internationalizedValidations":{}},"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"authorization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}},"internationalizationDisplay":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"internationalizedValidations":{"exempledeDeRegleDeValidation":{"fr":"Juste un exemple"}}}}},"comment":null,"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"},"internationalizedColumns":null,"name":"Sites","version":1,"defaultLanguage":null,"internationalization":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}}},"references":{"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":";","keyColumns":["name"],"columns":{"name":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"separator":"\u0000","keyColumns":["nom du site_key"],"columns":{"nom du type de site":null,"nom du site_key":null,"nom du site_fr":null,"nom du site_en":null,"description du site_fr":null,"description du site_en":null,"code sandre du Plan d'eau":null,"code sandre de la Masse d'eau plan d'eau":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom_key"],"columns":{"nom_key":null,"nom_fr":null,"nom_en":null,"description_fr":null,"description_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom de la plateforme_key"],"columns":{"nom de la plateforme_key":null,"nom du site":null,"nom de la plateforme_fr":null,"nom de la plateforme_en":null,"latitude":null,"longitude":null,"altitude":null,"nom du type de plateforme":null,"code sandre":null,"code sandre du contexte":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"separator":"\u0000","keyColumns":["nom du projet_key"],"columns":{"nom du projet_key":null,"nom du projet_fr":null,"nom du projet_en":null,"description du projet_fr":null,"description du projet_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}}},"compositeReferences":{"localizations":{"internationalizationName":null,"internationalizedColumns":null,"components":[{"internationalizationName":null,"internationalizedColumns":null,"reference":"typeSites","parentKeyColumn":null,"parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"sites","parentKeyColumn":"nom du type de site","parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"plateformes","parentKeyColumn":"nom du site","parentRecursiveKey":null}]}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"internationalizationDisplays":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"format":{"headerLine":2,"firstRowLine":3,"separator":";","columns":[{"header":"typeSite","boundTo":{"variable":"localization","component":"typeSite","id":"localization_typeSite","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"site","boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"date","boundTo":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"heure","boundTo":{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Couleur des individus","boundTo":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus valeur","boundTo":{"variable":"Nombre d'individus","component":"value","id":"Nombre d'individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus ecart type","boundTo":{"variable":"Nombre d'individus","component":"standardDeviation","id":"Nombre d'individus_standardDeviation","type":"PARAM_VARIABLE_COMPONENT_KEY"}}],"repeatedColumns":[],"constants":[{"rowNumber":1,"columnNumber":2,"headerName":null,"boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"},"exportHeader":"Site"}]},"data":{"date":{"chartDescription":null,"components":{"day":{"checker":{"name":"Date","params":{"pattern":"dd/MM/yyyy","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"time":{"checker":{"name":"Date","params":{"pattern":"hh:mm:ss","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"localization":{"chartDescription":null,"components":{"site":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"sites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"typeSite":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"typeSites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"Couleur des individus":{"chartDescription":null,"components":{"value":null},"computedComponents":{}},"Nombre d'individus":{"chartDescription":{"value":"value","aggregation":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"},"unit":"unit","gap":null,"standardDeviation":"standardDeviation"},"components":{"value":null,"unit":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"units","groovy":null,"duration":null,"transformation":{"codify":true,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"standardDeviation":null},"computedComponents":{}}},"validations":{"exempledeDeRegleDeValidation":{"internationalizationName":{"fr":"Juste un exemple"},"internationalizedColumns":null,"checker":{"name":"GroovyExpression","params":{"pattern":null,"refType":null,"groovy":{"expression":"true","references":[],"datatypes":[]},"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"variableComponents":null}},"uniqueness":[{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}],"migrations":{},"authorization":{"timeScope":{"variable":"date","component":null,"id":"date_null","type":"PARAM_VARIABLE_COMPONENT_KEY"},"authorizationScopes":{"localization":{"internationalizationName":null,"internationalizedColumns":null,"variable":"localization","component":"site","variableComponentKey":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}}},"dataGroups":{"referentiel":{"internationalizationName":null,"internationalizedColumns":null,"label":"Référentiel","data":["localization","date"]},"qualitatif":{"internationalizationName":null,"internationalizedColumns":null,"label":"Données qualitatives","data":["Nombre d'individus","Couleur des individus"]}},"internationalization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}}},"repository":null}}},"valid":false},"testTimeScopeVariableComponentKeyUnknownVariable":{"validationCheckResults":[{"level":"ERROR","message":"timeScopeVariableComponentKeyUnknownVariable","messageParams":{"variable":"dates","knownVariables":["date","localization","Couleur des individus","Nombre d'individus"]},"error":true,"success":false}],"result":{"requiredAuthorizationsAttributes":["localization"],"version":1,"internationalization":{"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}},"references":{"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"internationalizedValidations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"internationalizedValidations":{}},"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"authorization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}},"internationalizationDisplay":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"internationalizedValidations":{"exempledeDeRegleDeValidation":{"fr":"Juste un exemple"}}}}},"comment":null,"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"},"internationalizedColumns":null,"name":"Sites","version":1,"defaultLanguage":null,"internationalization":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}}},"references":{"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":";","keyColumns":["name"],"columns":{"name":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"separator":"\u0000","keyColumns":["nom du site_key"],"columns":{"nom du type de site":null,"nom du site_key":null,"nom du site_fr":null,"nom du site_en":null,"description du site_fr":null,"description du site_en":null,"code sandre du Plan d'eau":null,"code sandre de la Masse d'eau plan d'eau":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom_key"],"columns":{"nom_key":null,"nom_fr":null,"nom_en":null,"description_fr":null,"description_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom de la plateforme_key"],"columns":{"nom de la plateforme_key":null,"nom du site":null,"nom de la plateforme_fr":null,"nom de la plateforme_en":null,"latitude":null,"longitude":null,"altitude":null,"nom du type de plateforme":null,"code sandre":null,"code sandre du contexte":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"separator":"\u0000","keyColumns":["nom du projet_key"],"columns":{"nom du projet_key":null,"nom du projet_fr":null,"nom du projet_en":null,"description du projet_fr":null,"description du projet_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}}},"compositeReferences":{"localizations":{"internationalizationName":null,"internationalizedColumns":null,"components":[{"internationalizationName":null,"internationalizedColumns":null,"reference":"typeSites","parentKeyColumn":null,"parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"sites","parentKeyColumn":"nom du type de site","parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"plateformes","parentKeyColumn":"nom du site","parentRecursiveKey":null}]}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"internationalizationDisplays":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"format":{"headerLine":2,"firstRowLine":3,"separator":";","columns":[{"header":"typeSite","boundTo":{"variable":"localization","component":"typeSite","id":"localization_typeSite","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"site","boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"date","boundTo":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"heure","boundTo":{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Couleur des individus","boundTo":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus valeur","boundTo":{"variable":"Nombre d'individus","component":"value","id":"Nombre d'individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus ecart type","boundTo":{"variable":"Nombre d'individus","component":"standardDeviation","id":"Nombre d'individus_standardDeviation","type":"PARAM_VARIABLE_COMPONENT_KEY"}}],"repeatedColumns":[],"constants":[{"rowNumber":1,"columnNumber":2,"headerName":null,"boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"},"exportHeader":"Site"}]},"data":{"date":{"chartDescription":null,"components":{"day":{"checker":{"name":"Date","params":{"pattern":"dd/MM/yyyy","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"time":{"checker":{"name":"Date","params":{"pattern":"hh:mm:ss","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"localization":{"chartDescription":null,"components":{"site":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"sites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"typeSite":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"typeSites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"Couleur des individus":{"chartDescription":null,"components":{"value":null},"computedComponents":{}},"Nombre d'individus":{"chartDescription":{"value":"value","aggregation":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"},"unit":"unit","gap":null,"standardDeviation":"standardDeviation"},"components":{"value":null,"unit":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"units","groovy":null,"duration":null,"transformation":{"codify":true,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"standardDeviation":null},"computedComponents":{}}},"validations":{"exempledeDeRegleDeValidation":{"internationalizationName":{"fr":"Juste un exemple"},"internationalizedColumns":null,"checker":{"name":"GroovyExpression","params":{"pattern":null,"refType":null,"groovy":{"expression":"true","references":[],"datatypes":[]},"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"variableComponents":null}},"uniqueness":[{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}],"migrations":{},"authorization":{"timeScope":{"variable":"dates","component":"day","id":"dates_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},"authorizationScopes":{"localization":{"internationalizationName":null,"internationalizedColumns":null,"variable":"localization","component":"site","variableComponentKey":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}}},"dataGroups":{"referentiel":{"internationalizationName":null,"internationalizedColumns":null,"label":"Référentiel","data":["localization","date"]},"qualitatif":{"internationalizationName":null,"internationalizedColumns":null,"label":"Données qualitatives","data":["Nombre d'individus","Couleur des individus"]}},"internationalization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}}},"repository":null}}},"valid":false},"testIllegalGroovyExpression":{"validationCheckResults":[{"level":"ERROR","message":"illegalGroovyExpressionForValidationRuleInDataType","messageParams":{"lineValidationRuleKey":"exempledeDeRegleDeValidation","dataType":"site","expression":"if(}","compilationError":{"lineNumber":-1,"columnNumber":-1,"message":"startup failed:\nScript7.groovy: 1: unexpected token: } @ line 1, column 4.\n if(}\n ^\n\n1 error\n"}},"error":true,"success":false}],"result":{"requiredAuthorizationsAttributes":["localization"],"version":1,"internationalization":{"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}},"references":{"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"internationalizedValidations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"internationalizedValidations":{}},"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"authorization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}},"internationalizationDisplay":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"internationalizedValidations":{"exempledeDeRegleDeValidation":{"fr":"Juste un exemple"}}}}},"comment":null,"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"},"internationalizedColumns":null,"name":"Sites","version":1,"defaultLanguage":null,"internationalization":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}}},"references":{"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":";","keyColumns":["name"],"columns":{"name":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"separator":"\u0000","keyColumns":["nom du site_key"],"columns":{"nom du type de site":null,"nom du site_key":null,"nom du site_fr":null,"nom du site_en":null,"description du site_fr":null,"description du site_en":null,"code sandre du Plan d'eau":null,"code sandre de la Masse d'eau plan d'eau":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom_key"],"columns":{"nom_key":null,"nom_fr":null,"nom_en":null,"description_fr":null,"description_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom de la plateforme_key"],"columns":{"nom de la plateforme_key":null,"nom du site":null,"nom de la plateforme_fr":null,"nom de la plateforme_en":null,"latitude":null,"longitude":null,"altitude":null,"nom du type de plateforme":null,"code sandre":null,"code sandre du contexte":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"separator":"\u0000","keyColumns":["nom du projet_key"],"columns":{"nom du projet_key":null,"nom du projet_fr":null,"nom du projet_en":null,"description du projet_fr":null,"description du projet_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}}},"compositeReferences":{"localizations":{"internationalizationName":null,"internationalizedColumns":null,"components":[{"internationalizationName":null,"internationalizedColumns":null,"reference":"typeSites","parentKeyColumn":null,"parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"sites","parentKeyColumn":"nom du type de site","parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"plateformes","parentKeyColumn":"nom du site","parentRecursiveKey":null}]}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"internationalizationDisplays":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"format":{"headerLine":2,"firstRowLine":3,"separator":";","columns":[{"header":"typeSite","boundTo":{"variable":"localization","component":"typeSite","id":"localization_typeSite","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"site","boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"date","boundTo":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"heure","boundTo":{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Couleur des individus","boundTo":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus valeur","boundTo":{"variable":"Nombre d'individus","component":"value","id":"Nombre d'individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus ecart type","boundTo":{"variable":"Nombre d'individus","component":"standardDeviation","id":"Nombre d'individus_standardDeviation","type":"PARAM_VARIABLE_COMPONENT_KEY"}}],"repeatedColumns":[],"constants":[{"rowNumber":1,"columnNumber":2,"headerName":null,"boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"},"exportHeader":"Site"}]},"data":{"date":{"chartDescription":null,"components":{"day":{"checker":{"name":"Date","params":{"pattern":"dd/MM/yyyy","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"time":{"checker":{"name":"Date","params":{"pattern":"hh:mm:ss","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"localization":{"chartDescription":null,"components":{"site":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"sites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"typeSite":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"typeSites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"Couleur des individus":{"chartDescription":null,"components":{"value":null},"computedComponents":{}},"Nombre d'individus":{"chartDescription":{"value":"value","aggregation":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"},"unit":"unit","gap":null,"standardDeviation":"standardDeviation"},"components":{"value":null,"unit":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"units","groovy":null,"duration":null,"transformation":{"codify":true,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"standardDeviation":null},"computedComponents":{}}},"validations":{"exempledeDeRegleDeValidation":{"internationalizationName":{"fr":"Juste un exemple"},"internationalizedColumns":null,"checker":{"name":"GroovyExpression","params":{"pattern":null,"refType":null,"groovy":{"expression":"if(}","references":[],"datatypes":[]},"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"variableComponents":null}},"uniqueness":[{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}],"migrations":{},"authorization":{"timeScope":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},"authorizationScopes":{"localization":{"internationalizationName":null,"internationalizedColumns":null,"variable":"localization","component":"site","variableComponentKey":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}}},"dataGroups":{"referentiel":{"internationalizationName":null,"internationalizedColumns":null,"label":"Référentiel","data":["localization","date"]},"qualitatif":{"internationalizationName":null,"internationalizedColumns":null,"label":"Données qualitatives","data":["Nombre d'individus","Couleur des individus"]}},"internationalization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}}},"repository":null}}},"valid":false},"testVariableInMultipleDataGroup":{"validationCheckResults":[{"level":"ERROR","message":"variableInMultipleDataGroup","messageParams":{"variable":"localization"},"error":true,"success":false}],"result":{"requiredAuthorizationsAttributes":["localization"],"version":1,"internationalization":{"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}},"references":{"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"internationalizedValidations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"internationalizedValidations":{}},"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"authorization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}},"internationalizationDisplay":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"internationalizedValidations":{"exempledeDeRegleDeValidation":{"fr":"Juste un exemple"}}}}},"comment":null,"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"},"internationalizedColumns":null,"name":"Sites","version":1,"defaultLanguage":null,"internationalization":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}}},"references":{"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":";","keyColumns":["name"],"columns":{"name":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"separator":"\u0000","keyColumns":["nom du site_key"],"columns":{"nom du type de site":null,"nom du site_key":null,"nom du site_fr":null,"nom du site_en":null,"description du site_fr":null,"description du site_en":null,"code sandre du Plan d'eau":null,"code sandre de la Masse d'eau plan d'eau":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom_key"],"columns":{"nom_key":null,"nom_fr":null,"nom_en":null,"description_fr":null,"description_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom de la plateforme_key"],"columns":{"nom de la plateforme_key":null,"nom du site":null,"nom de la plateforme_fr":null,"nom de la plateforme_en":null,"latitude":null,"longitude":null,"altitude":null,"nom du type de plateforme":null,"code sandre":null,"code sandre du contexte":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"separator":"\u0000","keyColumns":["nom du projet_key"],"columns":{"nom du projet_key":null,"nom du projet_fr":null,"nom du projet_en":null,"description du projet_fr":null,"description du projet_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}}},"compositeReferences":{"localizations":{"internationalizationName":null,"internationalizedColumns":null,"components":[{"internationalizationName":null,"internationalizedColumns":null,"reference":"typeSites","parentKeyColumn":null,"parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"sites","parentKeyColumn":"nom du type de site","parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"plateformes","parentKeyColumn":"nom du site","parentRecursiveKey":null}]}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"internationalizationDisplays":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"format":{"headerLine":2,"firstRowLine":3,"separator":";","columns":[{"header":"typeSite","boundTo":{"variable":"localization","component":"typeSite","id":"localization_typeSite","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"site","boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"date","boundTo":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"heure","boundTo":{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Couleur des individus","boundTo":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus valeur","boundTo":{"variable":"Nombre d'individus","component":"value","id":"Nombre d'individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus ecart type","boundTo":{"variable":"Nombre d'individus","component":"standardDeviation","id":"Nombre d'individus_standardDeviation","type":"PARAM_VARIABLE_COMPONENT_KEY"}}],"repeatedColumns":[],"constants":[{"rowNumber":1,"columnNumber":2,"headerName":null,"boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"},"exportHeader":"Site"}]},"data":{"date":{"chartDescription":null,"components":{"day":{"checker":{"name":"Date","params":{"pattern":"dd/MM/yyyy","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"time":{"checker":{"name":"Date","params":{"pattern":"hh:mm:ss","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"localization":{"chartDescription":null,"components":{"site":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"sites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"typeSite":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"typeSites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"Couleur des individus":{"chartDescription":null,"components":{"value":null},"computedComponents":{}},"Nombre d'individus":{"chartDescription":{"value":"value","aggregation":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"},"unit":"unit","gap":null,"standardDeviation":"standardDeviation"},"components":{"value":null,"unit":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"units","groovy":null,"duration":null,"transformation":{"codify":true,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"standardDeviation":null},"computedComponents":{}}},"validations":{"exempledeDeRegleDeValidation":{"internationalizationName":{"fr":"Juste un exemple"},"internationalizedColumns":null,"checker":{"name":"GroovyExpression","params":{"pattern":null,"refType":null,"groovy":{"expression":"true","references":[],"datatypes":[]},"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"variableComponents":null}},"uniqueness":[{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}],"migrations":{},"authorization":{"timeScope":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},"authorizationScopes":{"localization":{"internationalizationName":null,"internationalizedColumns":null,"variable":"localization","component":"site","variableComponentKey":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}}},"dataGroups":{"referentiel":{"internationalizationName":null,"internationalizedColumns":null,"label":"Référentiel","data":["localization","date"]},"qualitatif":{"internationalizationName":null,"internationalizedColumns":null,"label":"Données qualitatives","data":["localization","Nombre d'individus","Couleur des individus"]}},"internationalization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}}},"repository":null}}},"valid":false},"testMissingParentRecursiveKeyColumnForReferenceInCompositeReference":{"validationCheckResults":[{"level":"ERROR","message":"missingParentRecursiveKeyColumnForReferenceInCompositeReference","messageParams":{"compositeReference":"localizations","reference":"plateformes","parentRecursiveKey":"nom du parent"},"error":true,"success":false}],"result":{"requiredAuthorizationsAttributes":["localization"],"version":1,"internationalization":{"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}},"references":{"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"internationalizedValidations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"internationalizedValidations":{}},"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"authorization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}},"internationalizationDisplay":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"internationalizedValidations":{"exempledeDeRegleDeValidation":{"fr":"Juste un exemple"}}}}},"comment":null,"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"},"internationalizedColumns":null,"name":"Sites","version":1,"defaultLanguage":null,"internationalization":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}}},"references":{"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":";","keyColumns":["name"],"columns":{"name":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"separator":"\u0000","keyColumns":["nom du site_key"],"columns":{"nom du type de site":null,"nom du site_key":null,"nom du site_fr":null,"nom du site_en":null,"description du site_fr":null,"description du site_en":null,"code sandre du Plan d'eau":null,"code sandre de la Masse d'eau plan d'eau":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom_key"],"columns":{"nom_key":null,"nom_fr":null,"nom_en":null,"description_fr":null,"description_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom de la plateforme_key"],"columns":{"nom de la plateforme_key":null,"nom du site":null,"nom de la plateforme_fr":null,"nom de la plateforme_en":null,"latitude":null,"longitude":null,"altitude":null,"nom du type de plateforme":null,"code sandre":null,"code sandre du contexte":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"separator":"\u0000","keyColumns":["nom du projet_key"],"columns":{"nom du projet_key":null,"nom du projet_fr":null,"nom du projet_en":null,"description du projet_fr":null,"description du projet_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}}},"compositeReferences":{"localizations":{"internationalizationName":null,"internationalizedColumns":null,"components":[{"internationalizationName":null,"internationalizedColumns":null,"reference":"typeSites","parentKeyColumn":null,"parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"sites","parentKeyColumn":"nom du type de site","parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"plateformes","parentKeyColumn":"nom du site","parentRecursiveKey":"nom du parent"}]}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"internationalizationDisplays":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"format":{"headerLine":2,"firstRowLine":3,"separator":";","columns":[{"header":"typeSite","boundTo":{"variable":"localization","component":"typeSite","id":"localization_typeSite","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"site","boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"date","boundTo":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"heure","boundTo":{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Couleur des individus","boundTo":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus valeur","boundTo":{"variable":"Nombre d'individus","component":"value","id":"Nombre d'individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus ecart type","boundTo":{"variable":"Nombre d'individus","component":"standardDeviation","id":"Nombre d'individus_standardDeviation","type":"PARAM_VARIABLE_COMPONENT_KEY"}}],"repeatedColumns":[],"constants":[{"rowNumber":1,"columnNumber":2,"headerName":null,"boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"},"exportHeader":"Site"}]},"data":{"date":{"chartDescription":null,"components":{"day":{"checker":{"name":"Date","params":{"pattern":"dd/MM/yyyy","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"time":{"checker":{"name":"Date","params":{"pattern":"hh:mm:ss","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"localization":{"chartDescription":null,"components":{"site":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"sites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"typeSite":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"typeSites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"Couleur des individus":{"chartDescription":null,"components":{"value":null},"computedComponents":{}},"Nombre d'individus":{"chartDescription":{"value":"value","aggregation":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"},"unit":"unit","gap":null,"standardDeviation":"standardDeviation"},"components":{"value":null,"unit":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"units","groovy":null,"duration":null,"transformation":{"codify":true,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"standardDeviation":null},"computedComponents":{}}},"validations":{"exempledeDeRegleDeValidation":{"internationalizationName":{"fr":"Juste un exemple"},"internationalizedColumns":null,"checker":{"name":"GroovyExpression","params":{"pattern":null,"refType":null,"groovy":{"expression":"true","references":[],"datatypes":[]},"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"variableComponents":null}},"uniqueness":[{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}],"migrations":{},"authorization":{"timeScope":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},"authorizationScopes":{"localization":{"internationalizationName":null,"internationalizedColumns":null,"variable":"localization","component":"site","variableComponentKey":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}}},"dataGroups":{"referentiel":{"internationalizationName":null,"internationalizedColumns":null,"label":"Référentiel","data":["localization","date"]},"qualitatif":{"internationalizationName":null,"internationalizedColumns":null,"label":"Données qualitatives","data":["Nombre d'individus","Couleur des individus"]}},"internationalization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}}},"repository":null}}},"valid":false},"testMissingVariableComponentForUniqueness":{"validationCheckResults":[{"level":"ERROR","message":"unknownUsedAsVariableComponentUniqueness","messageParams":{"dataType":"site","unknownUsedAsVariableComponentUniqueness":["date_jour"],"availableVariableComponents":["Nombre d'individus_value","date_time","localization_site","Nombre d'individus_unit","Nombre d'individus_standardDeviation","localization_typeSite","date_day","Couleur des individus_value"]},"error":true,"success":false}],"result":{"requiredAuthorizationsAttributes":["localization"],"version":1,"internationalization":{"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}},"references":{"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"internationalizedValidations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"internationalizedValidations":{}},"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"authorization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}},"internationalizationDisplay":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"internationalizedValidations":{"exempledeDeRegleDeValidation":{"fr":"Juste un exemple"}}}}},"comment":null,"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"},"internationalizedColumns":null,"name":"Sites","version":1,"defaultLanguage":null,"internationalization":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}}},"references":{"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":";","keyColumns":["name"],"columns":{"name":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"separator":"\u0000","keyColumns":["nom du site_key"],"columns":{"nom du type de site":null,"nom du site_key":null,"nom du site_fr":null,"nom du site_en":null,"description du site_fr":null,"description du site_en":null,"code sandre du Plan d'eau":null,"code sandre de la Masse d'eau plan d'eau":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom_key"],"columns":{"nom_key":null,"nom_fr":null,"nom_en":null,"description_fr":null,"description_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom de la plateforme_key"],"columns":{"nom de la plateforme_key":null,"nom du site":null,"nom de la plateforme_fr":null,"nom de la plateforme_en":null,"latitude":null,"longitude":null,"altitude":null,"nom du type de plateforme":null,"code sandre":null,"code sandre du contexte":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"separator":"\u0000","keyColumns":["nom du projet_key"],"columns":{"nom du projet_key":null,"nom du projet_fr":null,"nom du projet_en":null,"description du projet_fr":null,"description du projet_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}}},"compositeReferences":{"localizations":{"internationalizationName":null,"internationalizedColumns":null,"components":[{"internationalizationName":null,"internationalizedColumns":null,"reference":"typeSites","parentKeyColumn":null,"parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"sites","parentKeyColumn":"nom du type de site","parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"plateformes","parentKeyColumn":"nom du site","parentRecursiveKey":null}]}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"internationalizationDisplays":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"format":{"headerLine":2,"firstRowLine":3,"separator":";","columns":[{"header":"typeSite","boundTo":{"variable":"localization","component":"typeSite","id":"localization_typeSite","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"site","boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"date","boundTo":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"heure","boundTo":{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Couleur des individus","boundTo":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus valeur","boundTo":{"variable":"Nombre d'individus","component":"value","id":"Nombre d'individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus ecart type","boundTo":{"variable":"Nombre d'individus","component":"standardDeviation","id":"Nombre d'individus_standardDeviation","type":"PARAM_VARIABLE_COMPONENT_KEY"}}],"repeatedColumns":[],"constants":[{"rowNumber":1,"columnNumber":2,"headerName":null,"boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"},"exportHeader":"Site"}]},"data":{"date":{"chartDescription":null,"components":{"day":{"checker":{"name":"Date","params":{"pattern":"dd/MM/yyyy","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"time":{"checker":{"name":"Date","params":{"pattern":"hh:mm:ss","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"localization":{"chartDescription":null,"components":{"site":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"sites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"typeSite":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"typeSites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"Couleur des individus":{"chartDescription":null,"components":{"value":null},"computedComponents":{}},"Nombre d'individus":{"chartDescription":{"value":"value","aggregation":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"},"unit":"unit","gap":null,"standardDeviation":"standardDeviation"},"components":{"value":null,"unit":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"units","groovy":null,"duration":null,"transformation":{"codify":true,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"standardDeviation":null},"computedComponents":{}}},"validations":{"exempledeDeRegleDeValidation":{"internationalizationName":{"fr":"Juste un exemple"},"internationalizedColumns":null,"checker":{"name":"GroovyExpression","params":{"pattern":null,"refType":null,"groovy":{"expression":"true","references":[],"datatypes":[]},"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"variableComponents":null}},"uniqueness":[{"variable":"date","component":"jour","id":"date_jour","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}],"migrations":{},"authorization":{"timeScope":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},"authorizationScopes":{"localization":{"internationalizationName":null,"internationalizedColumns":null,"variable":"localization","component":"site","variableComponentKey":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}}},"dataGroups":{"referentiel":{"internationalizationName":null,"internationalizedColumns":null,"label":"Référentiel","data":["localization","date"]},"qualitatif":{"internationalizationName":null,"internationalizedColumns":null,"label":"Données qualitatives","data":["Nombre d'individus","Couleur des individus"]}},"internationalization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}}},"repository":null}}},"valid":false},"testMissingAggregationVariableForChart":{"validationCheckResults":[{"level":"ERROR","message":"missingAggregationVariableForChart","messageParams":{"variable":"Nombre d'individus","aggregationVariable":"pasdevariable","aggregationComponent":"value","dataType":"site","variables":["date","localization","Couleur des individus","Nombre d'individus"]},"error":true,"success":false}],"result":{"requiredAuthorizationsAttributes":["localization"],"version":1,"internationalization":{"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}},"references":{"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"internationalizedValidations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"internationalizedValidations":{}},"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"authorization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}},"internationalizationDisplay":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"internationalizedValidations":{"exempledeDeRegleDeValidation":{"fr":"Juste un exemple"}}}}},"comment":null,"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"},"internationalizedColumns":null,"name":"Sites","version":1,"defaultLanguage":null,"internationalization":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}}},"references":{"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":";","keyColumns":["name"],"columns":{"name":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"separator":"\u0000","keyColumns":["nom du site_key"],"columns":{"nom du type de site":null,"nom du site_key":null,"nom du site_fr":null,"nom du site_en":null,"description du site_fr":null,"description du site_en":null,"code sandre du Plan d'eau":null,"code sandre de la Masse d'eau plan d'eau":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom_key"],"columns":{"nom_key":null,"nom_fr":null,"nom_en":null,"description_fr":null,"description_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom de la plateforme_key"],"columns":{"nom de la plateforme_key":null,"nom du site":null,"nom de la plateforme_fr":null,"nom de la plateforme_en":null,"latitude":null,"longitude":null,"altitude":null,"nom du type de plateforme":null,"code sandre":null,"code sandre du contexte":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"separator":"\u0000","keyColumns":["nom du projet_key"],"columns":{"nom du projet_key":null,"nom du projet_fr":null,"nom du projet_en":null,"description du projet_fr":null,"description du projet_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}}},"compositeReferences":{"localizations":{"internationalizationName":null,"internationalizedColumns":null,"components":[{"internationalizationName":null,"internationalizedColumns":null,"reference":"typeSites","parentKeyColumn":null,"parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"sites","parentKeyColumn":"nom du type de site","parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"plateformes","parentKeyColumn":"nom du site","parentRecursiveKey":null}]}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"internationalizationDisplays":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"format":{"headerLine":2,"firstRowLine":3,"separator":";","columns":[{"header":"typeSite","boundTo":{"variable":"localization","component":"typeSite","id":"localization_typeSite","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"site","boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"date","boundTo":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"heure","boundTo":{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Couleur des individus","boundTo":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus valeur","boundTo":{"variable":"Nombre d'individus","component":"value","id":"Nombre d'individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus ecart type","boundTo":{"variable":"Nombre d'individus","component":"standardDeviation","id":"Nombre d'individus_standardDeviation","type":"PARAM_VARIABLE_COMPONENT_KEY"}}],"repeatedColumns":[],"constants":[{"rowNumber":1,"columnNumber":2,"headerName":null,"boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"},"exportHeader":"Site"}]},"data":{"date":{"chartDescription":null,"components":{"day":{"checker":{"name":"Date","params":{"pattern":"dd/MM/yyyy","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"time":{"checker":{"name":"Date","params":{"pattern":"hh:mm:ss","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"localization":{"chartDescription":null,"components":{"site":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"sites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"typeSite":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"typeSites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"Couleur des individus":{"chartDescription":null,"components":{"value":null},"computedComponents":{}},"Nombre d'individus":{"chartDescription":{"value":"value","aggregation":{"variable":"pasdevariable","component":"value","id":"pasdevariable_value","type":"PARAM_VARIABLE_COMPONENT_KEY"},"unit":"unit","gap":null,"standardDeviation":"standardDeviation"},"components":{"value":null,"unit":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"units","groovy":null,"duration":null,"transformation":{"codify":true,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"standardDeviation":null},"computedComponents":{}}},"validations":{"exempledeDeRegleDeValidation":{"internationalizationName":{"fr":"Juste un exemple"},"internationalizedColumns":null,"checker":{"name":"GroovyExpression","params":{"pattern":null,"refType":null,"groovy":{"expression":"true","references":[],"datatypes":[]},"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"variableComponents":null}},"uniqueness":[{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}],"migrations":{},"authorization":{"timeScope":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},"authorizationScopes":{"localization":{"internationalizationName":null,"internationalizedColumns":null,"variable":"localization","component":"site","variableComponentKey":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}}},"dataGroups":{"referentiel":{"internationalizationName":null,"internationalizedColumns":null,"label":"Référentiel","data":["localization","date"]},"qualitatif":{"internationalizationName":null,"internationalizedColumns":null,"label":"Données qualitatives","data":["Nombre d'individus","Couleur des individus"]}},"internationalization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}}},"repository":null}}},"valid":false},"testUnknownCheckerName":{"validationCheckResults":[{"level":"ERROR","message":"unknownCheckerNameForValidationRuleInDataType","messageParams":{"lineValidationRuleKey":"exempledeDeRegleDeValidation","dataType":"site","allCheckerNames":["Date","Float","Integer","RegularExpression","Reference","GroovyExpression"],"checkerName":"GroovyExpressions"},"error":true,"success":false}],"result":{"requiredAuthorizationsAttributes":["localization"],"version":1,"internationalization":{"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}},"references":{"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"internationalizedValidations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"internationalizedValidations":{}},"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"authorization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}},"internationalizationDisplay":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"internationalizedValidations":{"exempledeDeRegleDeValidation":{"fr":"Juste un exemple"}}}}},"comment":null,"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"},"internationalizedColumns":null,"name":"Sites","version":1,"defaultLanguage":null,"internationalization":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}}},"references":{"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":";","keyColumns":["name"],"columns":{"name":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"separator":"\u0000","keyColumns":["nom du site_key"],"columns":{"nom du type de site":null,"nom du site_key":null,"nom du site_fr":null,"nom du site_en":null,"description du site_fr":null,"description du site_en":null,"code sandre du Plan d'eau":null,"code sandre de la Masse d'eau plan d'eau":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom_key"],"columns":{"nom_key":null,"nom_fr":null,"nom_en":null,"description_fr":null,"description_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom de la plateforme_key"],"columns":{"nom de la plateforme_key":null,"nom du site":null,"nom de la plateforme_fr":null,"nom de la plateforme_en":null,"latitude":null,"longitude":null,"altitude":null,"nom du type de plateforme":null,"code sandre":null,"code sandre du contexte":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"separator":"\u0000","keyColumns":["nom du projet_key"],"columns":{"nom du projet_key":null,"nom du projet_fr":null,"nom du projet_en":null,"description du projet_fr":null,"description du projet_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}}},"compositeReferences":{"localizations":{"internationalizationName":null,"internationalizedColumns":null,"components":[{"internationalizationName":null,"internationalizedColumns":null,"reference":"typeSites","parentKeyColumn":null,"parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"sites","parentKeyColumn":"nom du type de site","parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"plateformes","parentKeyColumn":"nom du site","parentRecursiveKey":null}]}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"internationalizationDisplays":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"format":{"headerLine":2,"firstRowLine":3,"separator":";","columns":[{"header":"typeSite","boundTo":{"variable":"localization","component":"typeSite","id":"localization_typeSite","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"site","boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"date","boundTo":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"heure","boundTo":{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Couleur des individus","boundTo":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus valeur","boundTo":{"variable":"Nombre d'individus","component":"value","id":"Nombre d'individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus ecart type","boundTo":{"variable":"Nombre d'individus","component":"standardDeviation","id":"Nombre d'individus_standardDeviation","type":"PARAM_VARIABLE_COMPONENT_KEY"}}],"repeatedColumns":[],"constants":[{"rowNumber":1,"columnNumber":2,"headerName":null,"boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"},"exportHeader":"Site"}]},"data":{"date":{"chartDescription":null,"components":{"day":{"checker":{"name":"Date","params":{"pattern":"dd/MM/yyyy","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"time":{"checker":{"name":"Date","params":{"pattern":"hh:mm:ss","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"localization":{"chartDescription":null,"components":{"site":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"sites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"typeSite":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"typeSites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"Couleur des individus":{"chartDescription":null,"components":{"value":null},"computedComponents":{}},"Nombre d'individus":{"chartDescription":{"value":"value","aggregation":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"},"unit":"unit","gap":null,"standardDeviation":"standardDeviation"},"components":{"value":null,"unit":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"units","groovy":null,"duration":null,"transformation":{"codify":true,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"standardDeviation":null},"computedComponents":{}}},"validations":{"exempledeDeRegleDeValidation":{"internationalizationName":{"fr":"Juste un exemple"},"internationalizedColumns":null,"checker":{"name":"GroovyExpressions","params":{"pattern":null,"refType":null,"groovy":{"expression":"true","references":[],"datatypes":[]},"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"variableComponents":null}},"uniqueness":[{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}],"migrations":{},"authorization":{"timeScope":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},"authorizationScopes":{"localization":{"internationalizationName":null,"internationalizedColumns":null,"variable":"localization","component":"site","variableComponentKey":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}}},"dataGroups":{"referentiel":{"internationalizationName":null,"internationalizedColumns":null,"label":"Référentiel","data":["localization","date"]},"qualitatif":{"internationalizationName":null,"internationalizedColumns":null,"label":"Données qualitatives","data":["Nombre d'individus","Couleur des individus"]}},"internationalization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}}},"repository":null}}},"valid":false},"testTimeVariableComponentKeyUnknownComponent":{"validationCheckResults":[{"level":"ERROR","message":"timeVariableComponentKeyUnknownComponent","messageParams":{"variable":"date","component":"days","knownComponents":["day","time"]},"error":true,"success":false}],"result":{"requiredAuthorizationsAttributes":["localization"],"version":1,"internationalization":{"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}},"references":{"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"internationalizedValidations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"internationalizedValidations":{}},"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"authorization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}},"internationalizationDisplay":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"internationalizedValidations":{"exempledeDeRegleDeValidation":{"fr":"Juste un exemple"}}}}},"comment":null,"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"},"internationalizedColumns":null,"name":"Sites","version":1,"defaultLanguage":null,"internationalization":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}}},"references":{"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":";","keyColumns":["name"],"columns":{"name":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"separator":"\u0000","keyColumns":["nom du site_key"],"columns":{"nom du type de site":null,"nom du site_key":null,"nom du site_fr":null,"nom du site_en":null,"description du site_fr":null,"description du site_en":null,"code sandre du Plan d'eau":null,"code sandre de la Masse d'eau plan d'eau":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom_key"],"columns":{"nom_key":null,"nom_fr":null,"nom_en":null,"description_fr":null,"description_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom de la plateforme_key"],"columns":{"nom de la plateforme_key":null,"nom du site":null,"nom de la plateforme_fr":null,"nom de la plateforme_en":null,"latitude":null,"longitude":null,"altitude":null,"nom du type de plateforme":null,"code sandre":null,"code sandre du contexte":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"separator":"\u0000","keyColumns":["nom du projet_key"],"columns":{"nom du projet_key":null,"nom du projet_fr":null,"nom du projet_en":null,"description du projet_fr":null,"description du projet_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}}},"compositeReferences":{"localizations":{"internationalizationName":null,"internationalizedColumns":null,"components":[{"internationalizationName":null,"internationalizedColumns":null,"reference":"typeSites","parentKeyColumn":null,"parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"sites","parentKeyColumn":"nom du type de site","parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"plateformes","parentKeyColumn":"nom du site","parentRecursiveKey":null}]}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"internationalizationDisplays":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"format":{"headerLine":2,"firstRowLine":3,"separator":";","columns":[{"header":"typeSite","boundTo":{"variable":"localization","component":"typeSite","id":"localization_typeSite","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"site","boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"date","boundTo":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"heure","boundTo":{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Couleur des individus","boundTo":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus valeur","boundTo":{"variable":"Nombre d'individus","component":"value","id":"Nombre d'individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus ecart type","boundTo":{"variable":"Nombre d'individus","component":"standardDeviation","id":"Nombre d'individus_standardDeviation","type":"PARAM_VARIABLE_COMPONENT_KEY"}}],"repeatedColumns":[],"constants":[{"rowNumber":1,"columnNumber":2,"headerName":null,"boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"},"exportHeader":"Site"}]},"data":{"date":{"chartDescription":null,"components":{"day":{"checker":{"name":"Date","params":{"pattern":"dd/MM/yyyy","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"time":{"checker":{"name":"Date","params":{"pattern":"hh:mm:ss","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"localization":{"chartDescription":null,"components":{"site":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"sites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"typeSite":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"typeSites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"Couleur des individus":{"chartDescription":null,"components":{"value":null},"computedComponents":{}},"Nombre d'individus":{"chartDescription":{"value":"value","aggregation":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"},"unit":"unit","gap":null,"standardDeviation":"standardDeviation"},"components":{"value":null,"unit":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"units","groovy":null,"duration":null,"transformation":{"codify":true,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"standardDeviation":null},"computedComponents":{}}},"validations":{"exempledeDeRegleDeValidation":{"internationalizationName":{"fr":"Juste un exemple"},"internationalizedColumns":null,"checker":{"name":"GroovyExpression","params":{"pattern":null,"refType":null,"groovy":{"expression":"true","references":[],"datatypes":[]},"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"variableComponents":null}},"uniqueness":[{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}],"migrations":{},"authorization":{"timeScope":{"variable":"date","component":"days","id":"date_days","type":"PARAM_VARIABLE_COMPONENT_KEY"},"authorizationScopes":{"localization":{"internationalizationName":null,"internationalizedColumns":null,"variable":"localization","component":"site","variableComponentKey":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}}},"dataGroups":{"referentiel":{"internationalizationName":null,"internationalizedColumns":null,"label":"Référentiel","data":["localization","date"]},"qualitatif":{"internationalizationName":null,"internationalizedColumns":null,"label":"Données qualitatives","data":["Nombre d'individus","Couleur des individus"]}},"internationalization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}}},"repository":null}}},"valid":false},"testMissingUnitComponentForChart":{"validationCheckResults":[{"level":"ERROR","message":"missingUnitComponentForChart","messageParams":{"variable":"Nombre d'individus","unit":"badunit","dataType":"site","components":["value","unit","standardDeviation"]},"error":true,"success":false}],"result":{"requiredAuthorizationsAttributes":["localization"],"version":1,"internationalization":{"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}},"references":{"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"internationalizedValidations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"internationalizedValidations":{}},"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"authorization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}},"internationalizationDisplay":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"internationalizedValidations":{"exempledeDeRegleDeValidation":{"fr":"Juste un exemple"}}}}},"comment":null,"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"},"internationalizedColumns":null,"name":"Sites","version":1,"defaultLanguage":null,"internationalization":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}}},"references":{"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":";","keyColumns":["name"],"columns":{"name":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"separator":"\u0000","keyColumns":["nom du site_key"],"columns":{"nom du type de site":null,"nom du site_key":null,"nom du site_fr":null,"nom du site_en":null,"description du site_fr":null,"description du site_en":null,"code sandre du Plan d'eau":null,"code sandre de la Masse d'eau plan d'eau":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom_key"],"columns":{"nom_key":null,"nom_fr":null,"nom_en":null,"description_fr":null,"description_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom de la plateforme_key"],"columns":{"nom de la plateforme_key":null,"nom du site":null,"nom de la plateforme_fr":null,"nom de la plateforme_en":null,"latitude":null,"longitude":null,"altitude":null,"nom du type de plateforme":null,"code sandre":null,"code sandre du contexte":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"separator":"\u0000","keyColumns":["nom du projet_key"],"columns":{"nom du projet_key":null,"nom du projet_fr":null,"nom du projet_en":null,"description du projet_fr":null,"description du projet_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}}},"compositeReferences":{"localizations":{"internationalizationName":null,"internationalizedColumns":null,"components":[{"internationalizationName":null,"internationalizedColumns":null,"reference":"typeSites","parentKeyColumn":null,"parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"sites","parentKeyColumn":"nom du type de site","parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"plateformes","parentKeyColumn":"nom du site","parentRecursiveKey":null}]}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"internationalizationDisplays":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"format":{"headerLine":2,"firstRowLine":3,"separator":";","columns":[{"header":"typeSite","boundTo":{"variable":"localization","component":"typeSite","id":"localization_typeSite","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"site","boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"date","boundTo":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"heure","boundTo":{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Couleur des individus","boundTo":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus valeur","boundTo":{"variable":"Nombre d'individus","component":"value","id":"Nombre d'individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus ecart type","boundTo":{"variable":"Nombre d'individus","component":"standardDeviation","id":"Nombre d'individus_standardDeviation","type":"PARAM_VARIABLE_COMPONENT_KEY"}}],"repeatedColumns":[],"constants":[{"rowNumber":1,"columnNumber":2,"headerName":null,"boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"},"exportHeader":"Site"}]},"data":{"date":{"chartDescription":null,"components":{"day":{"checker":{"name":"Date","params":{"pattern":"dd/MM/yyyy","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"time":{"checker":{"name":"Date","params":{"pattern":"hh:mm:ss","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"localization":{"chartDescription":null,"components":{"site":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"sites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"typeSite":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"typeSites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"Couleur des individus":{"chartDescription":null,"components":{"value":null},"computedComponents":{}},"Nombre d'individus":{"chartDescription":{"value":"value","aggregation":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"},"unit":"badunit","gap":null,"standardDeviation":"standardDeviation"},"components":{"value":null,"unit":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"units","groovy":null,"duration":null,"transformation":{"codify":true,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"standardDeviation":null},"computedComponents":{}}},"validations":{"exempledeDeRegleDeValidation":{"internationalizationName":{"fr":"Juste un exemple"},"internationalizedColumns":null,"checker":{"name":"GroovyExpression","params":{"pattern":null,"refType":null,"groovy":{"expression":"true","references":[],"datatypes":[]},"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"variableComponents":null}},"uniqueness":[{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}],"migrations":{},"authorization":{"timeScope":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},"authorizationScopes":{"localization":{"internationalizationName":null,"internationalizedColumns":null,"variable":"localization","component":"site","variableComponentKey":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}}},"dataGroups":{"referentiel":{"internationalizationName":null,"internationalizedColumns":null,"label":"Référentiel","data":["localization","date"]},"qualitatif":{"internationalizationName":null,"internationalizedColumns":null,"label":"Données qualitatives","data":["Nombre d'individus","Couleur des individus"]}},"internationalization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}}},"repository":null}}},"valid":false},"testauthorizationScopeMissingReferenceCheckerForAuthorizationScope":{"validationCheckResults":[{"level":"ERROR","message":"authorizationScopeMissingReferenceCheckerForAuthorizationScope","messageParams":{"authorizationScopeName":"localization","variable":"localization","component":"site","dataType":"site"},"error":true,"success":false}],"result":{"requiredAuthorizationsAttributes":["localization"],"version":1,"internationalization":{"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}},"references":{"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"internationalizedValidations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"internationalizedValidations":{}},"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"authorization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}},"internationalizationDisplay":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"internationalizedValidations":{"exempledeDeRegleDeValidation":{"fr":"Juste un exemple"}}}}},"comment":null,"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"},"internationalizedColumns":null,"name":"Sites","version":1,"defaultLanguage":null,"internationalization":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}}},"references":{"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":";","keyColumns":["name"],"columns":{"name":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"separator":"\u0000","keyColumns":["nom du site_key"],"columns":{"nom du type de site":null,"nom du site_key":null,"nom du site_fr":null,"nom du site_en":null,"description du site_fr":null,"description du site_en":null,"code sandre du Plan d'eau":null,"code sandre de la Masse d'eau plan d'eau":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom_key"],"columns":{"nom_key":null,"nom_fr":null,"nom_en":null,"description_fr":null,"description_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom de la plateforme_key"],"columns":{"nom de la plateforme_key":null,"nom du site":null,"nom de la plateforme_fr":null,"nom de la plateforme_en":null,"latitude":null,"longitude":null,"altitude":null,"nom du type de plateforme":null,"code sandre":null,"code sandre du contexte":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"separator":"\u0000","keyColumns":["nom du projet_key"],"columns":{"nom du projet_key":null,"nom du projet_fr":null,"nom du projet_en":null,"description du projet_fr":null,"description du projet_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}}},"compositeReferences":{"localizations":{"internationalizationName":null,"internationalizedColumns":null,"components":[{"internationalizationName":null,"internationalizedColumns":null,"reference":"typeSites","parentKeyColumn":null,"parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"sites","parentKeyColumn":"nom du type de site","parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"plateformes","parentKeyColumn":"nom du site","parentRecursiveKey":null}]}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"internationalizationDisplays":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"format":{"headerLine":2,"firstRowLine":3,"separator":";","columns":[{"header":"typeSite","boundTo":{"variable":"localization","component":"typeSite","id":"localization_typeSite","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"site","boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"date","boundTo":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"heure","boundTo":{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Couleur des individus","boundTo":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus valeur","boundTo":{"variable":"Nombre d'individus","component":"value","id":"Nombre d'individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus ecart type","boundTo":{"variable":"Nombre d'individus","component":"standardDeviation","id":"Nombre d'individus_standardDeviation","type":"PARAM_VARIABLE_COMPONENT_KEY"}}],"repeatedColumns":[],"constants":[{"rowNumber":1,"columnNumber":2,"headerName":null,"boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"},"exportHeader":"Site"}]},"data":{"date":{"chartDescription":null,"components":{"day":{"checker":{"name":"Date","params":{"pattern":"dd/MM/yyyy","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"time":{"checker":{"name":"Date","params":{"pattern":"hh:mm:ss","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"localization":{"chartDescription":null,"components":{"site":null,"typeSite":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"typeSites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"Couleur des individus":{"chartDescription":null,"components":{"value":null},"computedComponents":{}},"Nombre d'individus":{"chartDescription":{"value":"value","aggregation":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"},"unit":"unit","gap":null,"standardDeviation":"standardDeviation"},"components":{"value":null,"unit":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"units","groovy":null,"duration":null,"transformation":{"codify":true,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"standardDeviation":null},"computedComponents":{}}},"validations":{"exempledeDeRegleDeValidation":{"internationalizationName":{"fr":"Juste un exemple"},"internationalizedColumns":null,"checker":{"name":"GroovyExpression","params":{"pattern":null,"refType":null,"groovy":{"expression":"true","references":[],"datatypes":[]},"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"variableComponents":null}},"uniqueness":[{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}],"migrations":{},"authorization":{"timeScope":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},"authorizationScopes":{"localization":{"internationalizationName":null,"internationalizedColumns":null,"variable":"localization","component":"site","variableComponentKey":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}}},"dataGroups":{"referentiel":{"internationalizationName":null,"internationalizedColumns":null,"label":"Référentiel","data":["localization","date"]},"qualitatif":{"internationalizationName":null,"internationalizedColumns":null,"label":"Données qualitatives","data":["Nombre d'individus","Couleur des individus"]}},"internationalization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}}},"repository":null}}},"valid":false},"testMissingInternationalizedColumn":{"validationCheckResults":[{"level":"ERROR","message":"invalidInternationalizedColumns","messageParams":{"reference":"projets","unknownUsedAsInternationalizedColumns":["nom du projet_unknown"],"knownColumns":["nom du projet_key","nom du projet_fr","nom du projet_en","description du projet_fr","description du projet_en"]},"error":true,"success":false}],"result":{"requiredAuthorizationsAttributes":["localization"],"version":1,"internationalization":{"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}},"references":{"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_unknown":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"internationalizedValidations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"internationalizedValidations":{}},"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"authorization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}},"internationalizationDisplay":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"internationalizedValidations":{"exempledeDeRegleDeValidation":{"fr":"Juste un exemple"}}}}},"comment":null,"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"},"internationalizedColumns":null,"name":"Sites","version":1,"defaultLanguage":null,"internationalization":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}}},"references":{"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":";","keyColumns":["name"],"columns":{"name":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"separator":"\u0000","keyColumns":["nom du site_key"],"columns":{"nom du type de site":null,"nom du site_key":null,"nom du site_fr":null,"nom du site_en":null,"description du site_fr":null,"description du site_en":null,"code sandre du Plan d'eau":null,"code sandre de la Masse d'eau plan d'eau":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom_key"],"columns":{"nom_key":null,"nom_fr":null,"nom_en":null,"description_fr":null,"description_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom de la plateforme_key"],"columns":{"nom de la plateforme_key":null,"nom du site":null,"nom de la plateforme_fr":null,"nom de la plateforme_en":null,"latitude":null,"longitude":null,"altitude":null,"nom du type de plateforme":null,"code sandre":null,"code sandre du contexte":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_unknown":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"separator":"\u0000","keyColumns":["nom du projet_key"],"columns":{"nom du projet_key":null,"nom du projet_fr":null,"nom du projet_en":null,"description du projet_fr":null,"description du projet_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}}},"compositeReferences":{"localizations":{"internationalizationName":null,"internationalizedColumns":null,"components":[{"internationalizationName":null,"internationalizedColumns":null,"reference":"typeSites","parentKeyColumn":null,"parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"sites","parentKeyColumn":"nom du type de site","parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"plateformes","parentKeyColumn":"nom du site","parentRecursiveKey":null}]}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"internationalizationDisplays":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"format":{"headerLine":2,"firstRowLine":3,"separator":";","columns":[{"header":"typeSite","boundTo":{"variable":"localization","component":"typeSite","id":"localization_typeSite","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"site","boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"date","boundTo":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"heure","boundTo":{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Couleur des individus","boundTo":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus valeur","boundTo":{"variable":"Nombre d'individus","component":"value","id":"Nombre d'individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus ecart type","boundTo":{"variable":"Nombre d'individus","component":"standardDeviation","id":"Nombre d'individus_standardDeviation","type":"PARAM_VARIABLE_COMPONENT_KEY"}}],"repeatedColumns":[],"constants":[{"rowNumber":1,"columnNumber":2,"headerName":null,"boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"},"exportHeader":"Site"}]},"data":{"date":{"chartDescription":null,"components":{"day":{"checker":{"name":"Date","params":{"pattern":"dd/MM/yyyy","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"time":{"checker":{"name":"Date","params":{"pattern":"hh:mm:ss","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"localization":{"chartDescription":null,"components":{"site":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"sites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"typeSite":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"typeSites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"Couleur des individus":{"chartDescription":null,"components":{"value":null},"computedComponents":{}},"Nombre d'individus":{"chartDescription":{"value":"value","aggregation":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"},"unit":"unit","gap":null,"standardDeviation":"standardDeviation"},"components":{"value":null,"unit":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"units","groovy":null,"duration":null,"transformation":{"codify":true,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"standardDeviation":null},"computedComponents":{}}},"validations":{"exempledeDeRegleDeValidation":{"internationalizationName":{"fr":"Juste un exemple"},"internationalizedColumns":null,"checker":{"name":"GroovyExpression","params":{"pattern":null,"refType":null,"groovy":{"expression":"true","references":[],"datatypes":[]},"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"variableComponents":null}},"uniqueness":[{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}],"migrations":{},"authorization":{"timeScope":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},"authorizationScopes":{"localization":{"internationalizationName":null,"internationalizedColumns":null,"variable":"localization","component":"site","variableComponentKey":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}}},"dataGroups":{"referentiel":{"internationalizationName":null,"internationalizedColumns":null,"label":"Référentiel","data":["localization","date"]},"qualitatif":{"internationalizationName":null,"internationalizedColumns":null,"label":"Données qualitatives","data":["Nombre d'individus","Couleur des individus"]}},"internationalization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}}},"repository":null}}},"valid":false},"testMissingKeyColumnsForReference":{"validationCheckResults":[{"level":"ERROR","message":"missingKeyColumnsForReference","messageParams":{"reference":"projets"},"error":true,"success":false}],"result":{"requiredAuthorizationsAttributes":["localization"],"version":1,"internationalization":{"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}},"references":{"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"internationalizedValidations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"internationalizedValidations":{}},"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"authorization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}},"internationalizationDisplay":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"internationalizedValidations":{"exempledeDeRegleDeValidation":{"fr":"Juste un exemple"}}}}},"comment":null,"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"},"internationalizedColumns":null,"name":"Sites","version":1,"defaultLanguage":null,"internationalization":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}}},"references":{"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":";","keyColumns":["name"],"columns":{"name":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"separator":"\u0000","keyColumns":["nom du site_key"],"columns":{"nom du type de site":null,"nom du site_key":null,"nom du site_fr":null,"nom du site_en":null,"description du site_fr":null,"description du site_en":null,"code sandre du Plan d'eau":null,"code sandre de la Masse d'eau plan d'eau":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom_key"],"columns":{"nom_key":null,"nom_fr":null,"nom_en":null,"description_fr":null,"description_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom de la plateforme_key"],"columns":{"nom de la plateforme_key":null,"nom du site":null,"nom de la plateforme_fr":null,"nom de la plateforme_en":null,"latitude":null,"longitude":null,"altitude":null,"nom du type de plateforme":null,"code sandre":null,"code sandre du contexte":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"separator":"\u0000","keyColumns":[],"columns":{"nom du projet_key":null,"nom du projet_fr":null,"nom du projet_en":null,"description du projet_fr":null,"description du projet_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}}},"compositeReferences":{"localizations":{"internationalizationName":null,"internationalizedColumns":null,"components":[{"internationalizationName":null,"internationalizedColumns":null,"reference":"typeSites","parentKeyColumn":null,"parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"sites","parentKeyColumn":"nom du type de site","parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"plateformes","parentKeyColumn":"nom du site","parentRecursiveKey":null}]}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"internationalizationDisplays":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"format":{"headerLine":2,"firstRowLine":3,"separator":";","columns":[{"header":"typeSite","boundTo":{"variable":"localization","component":"typeSite","id":"localization_typeSite","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"site","boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"date","boundTo":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"heure","boundTo":{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Couleur des individus","boundTo":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus valeur","boundTo":{"variable":"Nombre d'individus","component":"value","id":"Nombre d'individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus ecart type","boundTo":{"variable":"Nombre d'individus","component":"standardDeviation","id":"Nombre d'individus_standardDeviation","type":"PARAM_VARIABLE_COMPONENT_KEY"}}],"repeatedColumns":[],"constants":[{"rowNumber":1,"columnNumber":2,"headerName":null,"boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"},"exportHeader":"Site"}]},"data":{"date":{"chartDescription":null,"components":{"day":{"checker":{"name":"Date","params":{"pattern":"dd/MM/yyyy","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"time":{"checker":{"name":"Date","params":{"pattern":"hh:mm:ss","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"localization":{"chartDescription":null,"components":{"site":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"sites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"typeSite":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"typeSites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"Couleur des individus":{"chartDescription":null,"components":{"value":null},"computedComponents":{}},"Nombre d'individus":{"chartDescription":{"value":"value","aggregation":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"},"unit":"unit","gap":null,"standardDeviation":"standardDeviation"},"components":{"value":null,"unit":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"units","groovy":null,"duration":null,"transformation":{"codify":true,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"standardDeviation":null},"computedComponents":{}}},"validations":{"exempledeDeRegleDeValidation":{"internationalizationName":{"fr":"Juste un exemple"},"internationalizedColumns":null,"checker":{"name":"GroovyExpression","params":{"pattern":null,"refType":null,"groovy":{"expression":"true","references":[],"datatypes":[]},"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"variableComponents":null}},"uniqueness":[{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}],"migrations":{},"authorization":{"timeScope":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},"authorizationScopes":{"localization":{"internationalizationName":null,"internationalizedColumns":null,"variable":"localization","component":"site","variableComponentKey":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}}},"dataGroups":{"referentiel":{"internationalizationName":null,"internationalizedColumns":null,"label":"Référentiel","data":["localization","date"]},"qualitatif":{"internationalizationName":null,"internationalizedColumns":null,"label":"Données qualitatives","data":["Nombre d'individus","Couleur des individus"]}},"internationalization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}}},"repository":null}}},"valid":false},"testUndeclaredDataGroupForVariable":{"validationCheckResults":[{"level":"ERROR","message":"unknownVariablesInDataGroup","messageParams":{"dataGroup":"referentiel","unknownVariables":["localizations"],"variables":["date","localization","Couleur des individus","Nombre d'individus"]},"error":true,"success":false},{"level":"ERROR","message":"undeclaredDataGroupForVariable","messageParams":{"variable":"localization"},"error":true,"success":false}],"result":{"requiredAuthorizationsAttributes":["localization"],"version":1,"internationalization":{"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}},"references":{"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"internationalizedValidations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"internationalizedValidations":{}},"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"authorization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}},"internationalizationDisplay":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"internationalizedValidations":{"exempledeDeRegleDeValidation":{"fr":"Juste un exemple"}}}}},"comment":null,"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"},"internationalizedColumns":null,"name":"Sites","version":1,"defaultLanguage":null,"internationalization":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}}},"references":{"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":";","keyColumns":["name"],"columns":{"name":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"separator":"\u0000","keyColumns":["nom du site_key"],"columns":{"nom du type de site":null,"nom du site_key":null,"nom du site_fr":null,"nom du site_en":null,"description du site_fr":null,"description du site_en":null,"code sandre du Plan d'eau":null,"code sandre de la Masse d'eau plan d'eau":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom_key"],"columns":{"nom_key":null,"nom_fr":null,"nom_en":null,"description_fr":null,"description_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom de la plateforme_key"],"columns":{"nom de la plateforme_key":null,"nom du site":null,"nom de la plateforme_fr":null,"nom de la plateforme_en":null,"latitude":null,"longitude":null,"altitude":null,"nom du type de plateforme":null,"code sandre":null,"code sandre du contexte":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"separator":"\u0000","keyColumns":["nom du projet_key"],"columns":{"nom du projet_key":null,"nom du projet_fr":null,"nom du projet_en":null,"description du projet_fr":null,"description du projet_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}}},"compositeReferences":{"localizations":{"internationalizationName":null,"internationalizedColumns":null,"components":[{"internationalizationName":null,"internationalizedColumns":null,"reference":"typeSites","parentKeyColumn":null,"parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"sites","parentKeyColumn":"nom du type de site","parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"plateformes","parentKeyColumn":"nom du site","parentRecursiveKey":null}]}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"internationalizationDisplays":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"format":{"headerLine":2,"firstRowLine":3,"separator":";","columns":[{"header":"typeSite","boundTo":{"variable":"localization","component":"typeSite","id":"localization_typeSite","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"site","boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"date","boundTo":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"heure","boundTo":{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Couleur des individus","boundTo":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus valeur","boundTo":{"variable":"Nombre d'individus","component":"value","id":"Nombre d'individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus ecart type","boundTo":{"variable":"Nombre d'individus","component":"standardDeviation","id":"Nombre d'individus_standardDeviation","type":"PARAM_VARIABLE_COMPONENT_KEY"}}],"repeatedColumns":[],"constants":[{"rowNumber":1,"columnNumber":2,"headerName":null,"boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"},"exportHeader":"Site"}]},"data":{"date":{"chartDescription":null,"components":{"day":{"checker":{"name":"Date","params":{"pattern":"dd/MM/yyyy","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"time":{"checker":{"name":"Date","params":{"pattern":"hh:mm:ss","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"localization":{"chartDescription":null,"components":{"site":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"sites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"typeSite":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"typeSites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"Couleur des individus":{"chartDescription":null,"components":{"value":null},"computedComponents":{}},"Nombre d'individus":{"chartDescription":{"value":"value","aggregation":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"},"unit":"unit","gap":null,"standardDeviation":"standardDeviation"},"components":{"value":null,"unit":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"units","groovy":null,"duration":null,"transformation":{"codify":true,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"standardDeviation":null},"computedComponents":{}}},"validations":{"exempledeDeRegleDeValidation":{"internationalizationName":{"fr":"Juste un exemple"},"internationalizedColumns":null,"checker":{"name":"GroovyExpression","params":{"pattern":null,"refType":null,"groovy":{"expression":"true","references":[],"datatypes":[]},"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"variableComponents":null}},"uniqueness":[{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}],"migrations":{},"authorization":{"timeScope":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},"authorizationScopes":{"localization":{"internationalizationName":null,"internationalizedColumns":null,"variable":"localization","component":"site","variableComponentKey":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}}},"dataGroups":{"referentiel":{"internationalizationName":null,"internationalizedColumns":null,"label":"Référentiel","data":["date","localizations"]},"qualitatif":{"internationalizationName":null,"internationalizedColumns":null,"label":"Données qualitatives","data":["Nombre d'individus","Couleur des individus"]}},"internationalization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}}},"repository":null}}},"valid":false},"testRecordInvalidKeyColumns":{"validationCheckResults":[{"level":"ERROR","message":"invalidKeyColumns","messageParams":{"reference":"projets","unknownUsedAsKeyElementColumns":["nom du projet_key"],"knownColumns":["nom du Projet_key","nom du projet_fr","nom du projet_en","description du projet_fr","description du projet_en"]},"error":true,"success":false},{"level":"ERROR","message":"invalidInternationalizedColumns","messageParams":{"reference":"projets","unknownUsedAsInternationalizedColumns":["nom du projet_key"],"knownColumns":["nom du Projet_key","nom du projet_fr","nom du projet_en","description du projet_fr","description du projet_en"]},"error":true,"success":false}],"result":{"requiredAuthorizationsAttributes":["localization"],"version":1,"internationalization":{"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}},"references":{"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"internationalizedValidations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"internationalizedValidations":{}},"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"authorization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}},"internationalizationDisplay":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"internationalizedValidations":{"exempledeDeRegleDeValidation":{"fr":"Juste un exemple"}}}}},"comment":null,"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"},"internationalizedColumns":null,"name":"Sites","version":1,"defaultLanguage":null,"internationalization":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}}},"references":{"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":";","keyColumns":["name"],"columns":{"name":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"separator":"\u0000","keyColumns":["nom du site_key"],"columns":{"nom du type de site":null,"nom du site_key":null,"nom du site_fr":null,"nom du site_en":null,"description du site_fr":null,"description du site_en":null,"code sandre du Plan d'eau":null,"code sandre de la Masse d'eau plan d'eau":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom_key"],"columns":{"nom_key":null,"nom_fr":null,"nom_en":null,"description_fr":null,"description_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom de la plateforme_key"],"columns":{"nom de la plateforme_key":null,"nom du site":null,"nom de la plateforme_fr":null,"nom de la plateforme_en":null,"latitude":null,"longitude":null,"altitude":null,"nom du type de plateforme":null,"code sandre":null,"code sandre du contexte":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"separator":"\u0000","keyColumns":["nom du projet_key"],"columns":{"nom du Projet_key":null,"nom du projet_fr":null,"nom du projet_en":null,"description du projet_fr":null,"description du projet_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}}},"compositeReferences":{"localizations":{"internationalizationName":null,"internationalizedColumns":null,"components":[{"internationalizationName":null,"internationalizedColumns":null,"reference":"typeSites","parentKeyColumn":null,"parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"sites","parentKeyColumn":"nom du type de site","parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"plateformes","parentKeyColumn":"nom du site","parentRecursiveKey":null}]}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"internationalizationDisplays":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"format":{"headerLine":2,"firstRowLine":3,"separator":";","columns":[{"header":"typeSite","boundTo":{"variable":"localization","component":"typeSite","id":"localization_typeSite","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"site","boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"date","boundTo":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"heure","boundTo":{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Couleur des individus","boundTo":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus valeur","boundTo":{"variable":"Nombre d'individus","component":"value","id":"Nombre d'individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus ecart type","boundTo":{"variable":"Nombre d'individus","component":"standardDeviation","id":"Nombre d'individus_standardDeviation","type":"PARAM_VARIABLE_COMPONENT_KEY"}}],"repeatedColumns":[],"constants":[{"rowNumber":1,"columnNumber":2,"headerName":null,"boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"},"exportHeader":"Site"}]},"data":{"date":{"chartDescription":null,"components":{"day":{"checker":{"name":"Date","params":{"pattern":"dd/MM/yyyy","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"time":{"checker":{"name":"Date","params":{"pattern":"hh:mm:ss","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"localization":{"chartDescription":null,"components":{"site":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"sites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"typeSite":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"typeSites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"Couleur des individus":{"chartDescription":null,"components":{"value":null},"computedComponents":{}},"Nombre d'individus":{"chartDescription":{"value":"value","aggregation":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"},"unit":"unit","gap":null,"standardDeviation":"standardDeviation"},"components":{"value":null,"unit":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"units","groovy":null,"duration":null,"transformation":{"codify":true,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"standardDeviation":null},"computedComponents":{}}},"validations":{"exempledeDeRegleDeValidation":{"internationalizationName":{"fr":"Juste un exemple"},"internationalizedColumns":null,"checker":{"name":"GroovyExpression","params":{"pattern":null,"refType":null,"groovy":{"expression":"true","references":[],"datatypes":[]},"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"variableComponents":null}},"uniqueness":[{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}],"migrations":{},"authorization":{"timeScope":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},"authorizationScopes":{"localization":{"internationalizationName":null,"internationalizedColumns":null,"variable":"localization","component":"site","variableComponentKey":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}}},"dataGroups":{"referentiel":{"internationalizationName":null,"internationalizedColumns":null,"label":"Référentiel","data":["localization","date"]},"qualitatif":{"internationalizationName":null,"internationalizedColumns":null,"label":"Données qualitatives","data":["Nombre d'individus","Couleur des individus"]}},"internationalization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}}},"repository":null}}},"valid":false},"testUnsupportedVersion":{"validationCheckResults":[{"level":"ERROR","message":"unsupportedVersion","messageParams":{"actualVersion":-1,"expectedVersion":1},"error":true,"success":false}],"result":null,"valid":false},"testMissingColumnInInternationalizationDisplayPatternInDatatype":{"validationCheckResults":[{"level":"ERROR","message":"invalidInternationalizedColumns","messageParams":{"reference":"sites","unknownUsedAsInternationalizedColumns":["nom du site"],"knownColumns":["nom du type de site","nom du site_key","nom du site_fr","nom du site_en","description du site_fr","description du site_en","code sandre du Plan d'eau","code sandre de la Masse d'eau plan d'eau"]},"error":true,"success":false}],"result":{"requiredAuthorizationsAttributes":["localization"],"version":1,"internationalization":{"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}},"references":{"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"internationalizedValidations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du site}","en":"{nom du site_en}"}},"internationalizedValidations":{}},"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"authorization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}},"internationalizationDisplay":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"internationalizedValidations":{"exempledeDeRegleDeValidation":{"fr":"Juste un exemple"}}}}},"comment":null,"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"},"internationalizedColumns":null,"name":"Sites","version":1,"defaultLanguage":null,"internationalization":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}}},"references":{"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":";","keyColumns":["name"],"columns":{"name":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du site}","en":"{nom du site_en}"}},"separator":"\u0000","keyColumns":["nom du site_key"],"columns":{"nom du type de site":null,"nom du site_key":null,"nom du site_fr":null,"nom du site_en":null,"description du site_fr":null,"description du site_en":null,"code sandre du Plan d'eau":null,"code sandre de la Masse d'eau plan d'eau":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom_key"],"columns":{"nom_key":null,"nom_fr":null,"nom_en":null,"description_fr":null,"description_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom de la plateforme_key"],"columns":{"nom de la plateforme_key":null,"nom du site":null,"nom de la plateforme_fr":null,"nom de la plateforme_en":null,"latitude":null,"longitude":null,"altitude":null,"nom du type de plateforme":null,"code sandre":null,"code sandre du contexte":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"separator":"\u0000","keyColumns":["nom du projet_key"],"columns":{"nom du projet_key":null,"nom du projet_fr":null,"nom du projet_en":null,"description du projet_fr":null,"description du projet_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}}},"compositeReferences":{"localizations":{"internationalizationName":null,"internationalizedColumns":null,"components":[{"internationalizationName":null,"internationalizedColumns":null,"reference":"typeSites","parentKeyColumn":null,"parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"sites","parentKeyColumn":"nom du type de site","parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"plateformes","parentKeyColumn":"nom du site","parentRecursiveKey":null}]}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"internationalizationDisplays":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"format":{"headerLine":2,"firstRowLine":3,"separator":";","columns":[{"header":"typeSite","boundTo":{"variable":"localization","component":"typeSite","id":"localization_typeSite","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"site","boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"date","boundTo":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"heure","boundTo":{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Couleur des individus","boundTo":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus valeur","boundTo":{"variable":"Nombre d'individus","component":"value","id":"Nombre d'individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus ecart type","boundTo":{"variable":"Nombre d'individus","component":"standardDeviation","id":"Nombre d'individus_standardDeviation","type":"PARAM_VARIABLE_COMPONENT_KEY"}}],"repeatedColumns":[],"constants":[{"rowNumber":1,"columnNumber":2,"headerName":null,"boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"},"exportHeader":"Site"}]},"data":{"date":{"chartDescription":null,"components":{"day":{"checker":{"name":"Date","params":{"pattern":"dd/MM/yyyy","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"time":{"checker":{"name":"Date","params":{"pattern":"hh:mm:ss","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"localization":{"chartDescription":null,"components":{"site":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"sites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"typeSite":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"typeSites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"Couleur des individus":{"chartDescription":null,"components":{"value":null},"computedComponents":{}},"Nombre d'individus":{"chartDescription":{"value":"value","aggregation":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"},"unit":"unit","gap":null,"standardDeviation":"standardDeviation"},"components":{"value":null,"unit":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"units","groovy":null,"duration":null,"transformation":{"codify":true,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"standardDeviation":null},"computedComponents":{}}},"validations":{"exempledeDeRegleDeValidation":{"internationalizationName":{"fr":"Juste un exemple"},"internationalizedColumns":null,"checker":{"name":"GroovyExpression","params":{"pattern":null,"refType":null,"groovy":{"expression":"true","references":[],"datatypes":[]},"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"variableComponents":null}},"uniqueness":[{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}],"migrations":{},"authorization":{"timeScope":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},"authorizationScopes":{"localization":{"internationalizationName":null,"internationalizedColumns":null,"variable":"localization","component":"site","variableComponentKey":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}}},"dataGroups":{"referentiel":{"internationalizationName":null,"internationalizedColumns":null,"label":"Référentiel","data":["localization","date"]},"qualitatif":{"internationalizationName":null,"internationalizedColumns":null,"label":"Données qualitatives","data":["Nombre d'individus","Couleur des individus"]}},"internationalization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}}},"repository":null}}},"valid":false},"testUndeclaredValueForChart":{"validationCheckResults":[{"level":"ERROR","message":"unDeclaredValueForChart","messageParams":{"variable":"Nombre d'individus","dataType":"site","components":["value","unit","standardDeviation"]},"error":true,"success":false}],"result":{"requiredAuthorizationsAttributes":["localization"],"version":1,"internationalization":{"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}},"references":{"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"internationalizedValidations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"internationalizedValidations":{}},"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"authorization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}},"internationalizationDisplay":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"internationalizedValidations":{"exempledeDeRegleDeValidation":{"fr":"Juste un exemple"}}}}},"comment":null,"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"},"internationalizedColumns":null,"name":"Sites","version":1,"defaultLanguage":null,"internationalization":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}}},"references":{"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":";","keyColumns":["name"],"columns":{"name":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"separator":"\u0000","keyColumns":["nom du site_key"],"columns":{"nom du type de site":null,"nom du site_key":null,"nom du site_fr":null,"nom du site_en":null,"description du site_fr":null,"description du site_en":null,"code sandre du Plan d'eau":null,"code sandre de la Masse d'eau plan d'eau":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom_key"],"columns":{"nom_key":null,"nom_fr":null,"nom_en":null,"description_fr":null,"description_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom de la plateforme_key"],"columns":{"nom de la plateforme_key":null,"nom du site":null,"nom de la plateforme_fr":null,"nom de la plateforme_en":null,"latitude":null,"longitude":null,"altitude":null,"nom du type de plateforme":null,"code sandre":null,"code sandre du contexte":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"separator":"\u0000","keyColumns":["nom du projet_key"],"columns":{"nom du projet_key":null,"nom du projet_fr":null,"nom du projet_en":null,"description du projet_fr":null,"description du projet_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}}},"compositeReferences":{"localizations":{"internationalizationName":null,"internationalizedColumns":null,"components":[{"internationalizationName":null,"internationalizedColumns":null,"reference":"typeSites","parentKeyColumn":null,"parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"sites","parentKeyColumn":"nom du type de site","parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"plateformes","parentKeyColumn":"nom du site","parentRecursiveKey":null}]}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"internationalizationDisplays":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"format":{"headerLine":2,"firstRowLine":3,"separator":";","columns":[{"header":"typeSite","boundTo":{"variable":"localization","component":"typeSite","id":"localization_typeSite","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"site","boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"date","boundTo":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"heure","boundTo":{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Couleur des individus","boundTo":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus valeur","boundTo":{"variable":"Nombre d'individus","component":"value","id":"Nombre d'individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus ecart type","boundTo":{"variable":"Nombre d'individus","component":"standardDeviation","id":"Nombre d'individus_standardDeviation","type":"PARAM_VARIABLE_COMPONENT_KEY"}}],"repeatedColumns":[],"constants":[{"rowNumber":1,"columnNumber":2,"headerName":null,"boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"},"exportHeader":"Site"}]},"data":{"date":{"chartDescription":null,"components":{"day":{"checker":{"name":"Date","params":{"pattern":"dd/MM/yyyy","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"time":{"checker":{"name":"Date","params":{"pattern":"hh:mm:ss","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"localization":{"chartDescription":null,"components":{"site":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"sites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"typeSite":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"typeSites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"Couleur des individus":{"chartDescription":null,"components":{"value":null},"computedComponents":{}},"Nombre d'individus":{"chartDescription":{"value":null,"aggregation":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"},"unit":"unit","gap":null,"standardDeviation":"standardDeviation"},"components":{"value":null,"unit":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"units","groovy":null,"duration":null,"transformation":{"codify":true,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"standardDeviation":null},"computedComponents":{}}},"validations":{"exempledeDeRegleDeValidation":{"internationalizationName":{"fr":"Juste un exemple"},"internationalizedColumns":null,"checker":{"name":"GroovyExpression","params":{"pattern":null,"refType":null,"groovy":{"expression":"true","references":[],"datatypes":[]},"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"variableComponents":null}},"uniqueness":[{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}],"migrations":{},"authorization":{"timeScope":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},"authorizationScopes":{"localization":{"internationalizationName":null,"internationalizedColumns":null,"variable":"localization","component":"site","variableComponentKey":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}}},"dataGroups":{"referentiel":{"internationalizationName":null,"internationalizedColumns":null,"label":"Référentiel","data":["localization","date"]},"qualitatif":{"internationalizationName":null,"internationalizedColumns":null,"label":"Données qualitatives","data":["Nombre d'individus","Couleur des individus"]}},"internationalization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}}},"repository":null}}},"valid":false},"testUnknownReferenceForChecker":{"validationCheckResults":[{"level":"ERROR","message":"unknownReferenceForChecker","messageParams":{"dataType":"site","datum":"localization","refType":"sitee","component":"site","references":["units","sites","typeSites","plateformes","projets"]},"error":true,"success":false},{"level":"ERROR","message":"authorizationScopeVariableComponentReftypeUnknown","messageParams":{"variable":"localization","component":"site","refType":"sitee","knownPatterns":["units","sites","typeSites","plateformes","projets"]},"error":true,"success":false}],"result":{"requiredAuthorizationsAttributes":["localization"],"version":1,"internationalization":{"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}},"references":{"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"internationalizedValidations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"internationalizedValidations":{}},"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"authorization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}},"internationalizationDisplay":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"internationalizedValidations":{"exempledeDeRegleDeValidation":{"fr":"Juste un exemple"}}}}},"comment":null,"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"},"internationalizedColumns":null,"name":"Sites","version":1,"defaultLanguage":null,"internationalization":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}}},"references":{"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":";","keyColumns":["name"],"columns":{"name":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"separator":"\u0000","keyColumns":["nom du site_key"],"columns":{"nom du type de site":null,"nom du site_key":null,"nom du site_fr":null,"nom du site_en":null,"description du site_fr":null,"description du site_en":null,"code sandre du Plan d'eau":null,"code sandre de la Masse d'eau plan d'eau":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom_key"],"columns":{"nom_key":null,"nom_fr":null,"nom_en":null,"description_fr":null,"description_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom de la plateforme_key"],"columns":{"nom de la plateforme_key":null,"nom du site":null,"nom de la plateforme_fr":null,"nom de la plateforme_en":null,"latitude":null,"longitude":null,"altitude":null,"nom du type de plateforme":null,"code sandre":null,"code sandre du contexte":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"separator":"\u0000","keyColumns":["nom du projet_key"],"columns":{"nom du projet_key":null,"nom du projet_fr":null,"nom du projet_en":null,"description du projet_fr":null,"description du projet_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}}},"compositeReferences":{"localizations":{"internationalizationName":null,"internationalizedColumns":null,"components":[{"internationalizationName":null,"internationalizedColumns":null,"reference":"typeSites","parentKeyColumn":null,"parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"sites","parentKeyColumn":"nom du type de site","parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"plateformes","parentKeyColumn":"nom du site","parentRecursiveKey":null}]}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"internationalizationDisplays":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"format":{"headerLine":2,"firstRowLine":3,"separator":";","columns":[{"header":"typeSite","boundTo":{"variable":"localization","component":"typeSite","id":"localization_typeSite","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"site","boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"date","boundTo":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"heure","boundTo":{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Couleur des individus","boundTo":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus valeur","boundTo":{"variable":"Nombre d'individus","component":"value","id":"Nombre d'individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus ecart type","boundTo":{"variable":"Nombre d'individus","component":"standardDeviation","id":"Nombre d'individus_standardDeviation","type":"PARAM_VARIABLE_COMPONENT_KEY"}}],"repeatedColumns":[],"constants":[{"rowNumber":1,"columnNumber":2,"headerName":null,"boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"},"exportHeader":"Site"}]},"data":{"date":{"chartDescription":null,"components":{"day":{"checker":{"name":"Date","params":{"pattern":"dd/MM/yyyy","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"time":{"checker":{"name":"Date","params":{"pattern":"hh:mm:ss","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"localization":{"chartDescription":null,"components":{"site":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"sitee","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"typeSite":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"typeSites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"Couleur des individus":{"chartDescription":null,"components":{"value":null},"computedComponents":{}},"Nombre d'individus":{"chartDescription":{"value":"value","aggregation":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"},"unit":"unit","gap":null,"standardDeviation":"standardDeviation"},"components":{"value":null,"unit":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"units","groovy":null,"duration":null,"transformation":{"codify":true,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"standardDeviation":null},"computedComponents":{}}},"validations":{"exempledeDeRegleDeValidation":{"internationalizationName":{"fr":"Juste un exemple"},"internationalizedColumns":null,"checker":{"name":"GroovyExpression","params":{"pattern":null,"refType":null,"groovy":{"expression":"true","references":[],"datatypes":[]},"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"variableComponents":null}},"uniqueness":[{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}],"migrations":{},"authorization":{"timeScope":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},"authorizationScopes":{"localization":{"internationalizationName":null,"internationalizedColumns":null,"variable":"localization","component":"site","variableComponentKey":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}}},"dataGroups":{"referentiel":{"internationalizationName":null,"internationalizedColumns":null,"label":"Référentiel","data":["localization","date"]},"qualitatif":{"internationalizationName":null,"internationalizedColumns":null,"label":"Données qualitatives","data":["Nombre d'individus","Couleur des individus"]}},"internationalization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}}},"repository":null}}},"valid":false},"testInvalidFormat":{"validationCheckResults":[{"level":"ERROR","message":"invalidFormat","messageParams":{"lineNumber":190,"columnNumber":21,"value":"pas_un_chiffre","targetTypeName":"int"},"error":true,"success":false}],"result":null,"valid":false},"testInvalidKeyColumns":{"validationCheckResults":[{"level":"ERROR","message":"invalidKeyColumns","messageParams":{"reference":"projets","unknownUsedAsKeyElementColumns":["nom du projet_clé"],"knownColumns":["nom du projet_key","nom du projet_fr","nom du projet_en","description du projet_fr","description du projet_en"]},"error":true,"success":false}],"result":{"requiredAuthorizationsAttributes":["localization"],"version":1,"internationalization":{"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}},"references":{"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"internationalizedValidations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"internationalizedValidations":{}},"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"authorization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}},"internationalizationDisplay":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"internationalizedValidations":{"exempledeDeRegleDeValidation":{"fr":"Juste un exemple"}}}}},"comment":null,"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"},"internationalizedColumns":null,"name":"Sites","version":1,"defaultLanguage":null,"internationalization":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}}},"references":{"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":";","keyColumns":["name"],"columns":{"name":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"separator":"\u0000","keyColumns":["nom du site_key"],"columns":{"nom du type de site":null,"nom du site_key":null,"nom du site_fr":null,"nom du site_en":null,"description du site_fr":null,"description du site_en":null,"code sandre du Plan d'eau":null,"code sandre de la Masse d'eau plan d'eau":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom_key"],"columns":{"nom_key":null,"nom_fr":null,"nom_en":null,"description_fr":null,"description_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom de la plateforme_key"],"columns":{"nom de la plateforme_key":null,"nom du site":null,"nom de la plateforme_fr":null,"nom de la plateforme_en":null,"latitude":null,"longitude":null,"altitude":null,"nom du type de plateforme":null,"code sandre":null,"code sandre du contexte":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"separator":"\u0000","keyColumns":["nom du projet_clé"],"columns":{"nom du projet_key":null,"nom du projet_fr":null,"nom du projet_en":null,"description du projet_fr":null,"description du projet_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}}},"compositeReferences":{"localizations":{"internationalizationName":null,"internationalizedColumns":null,"components":[{"internationalizationName":null,"internationalizedColumns":null,"reference":"typeSites","parentKeyColumn":null,"parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"sites","parentKeyColumn":"nom du type de site","parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"plateformes","parentKeyColumn":"nom du site","parentRecursiveKey":null}]}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"internationalizationDisplays":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"format":{"headerLine":2,"firstRowLine":3,"separator":";","columns":[{"header":"typeSite","boundTo":{"variable":"localization","component":"typeSite","id":"localization_typeSite","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"site","boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"date","boundTo":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"heure","boundTo":{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Couleur des individus","boundTo":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus valeur","boundTo":{"variable":"Nombre d'individus","component":"value","id":"Nombre d'individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus ecart type","boundTo":{"variable":"Nombre d'individus","component":"standardDeviation","id":"Nombre d'individus_standardDeviation","type":"PARAM_VARIABLE_COMPONENT_KEY"}}],"repeatedColumns":[],"constants":[{"rowNumber":1,"columnNumber":2,"headerName":null,"boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"},"exportHeader":"Site"}]},"data":{"date":{"chartDescription":null,"components":{"day":{"checker":{"name":"Date","params":{"pattern":"dd/MM/yyyy","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"time":{"checker":{"name":"Date","params":{"pattern":"hh:mm:ss","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"localization":{"chartDescription":null,"components":{"site":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"sites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"typeSite":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"typeSites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"Couleur des individus":{"chartDescription":null,"components":{"value":null},"computedComponents":{}},"Nombre d'individus":{"chartDescription":{"value":"value","aggregation":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"},"unit":"unit","gap":null,"standardDeviation":"standardDeviation"},"components":{"value":null,"unit":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"units","groovy":null,"duration":null,"transformation":{"codify":true,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"standardDeviation":null},"computedComponents":{}}},"validations":{"exempledeDeRegleDeValidation":{"internationalizationName":{"fr":"Juste un exemple"},"internationalizedColumns":null,"checker":{"name":"GroovyExpression","params":{"pattern":null,"refType":null,"groovy":{"expression":"true","references":[],"datatypes":[]},"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"variableComponents":null}},"uniqueness":[{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}],"migrations":{},"authorization":{"timeScope":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},"authorizationScopes":{"localization":{"internationalizationName":null,"internationalizedColumns":null,"variable":"localization","component":"site","variableComponentKey":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}}},"dataGroups":{"referentiel":{"internationalizationName":null,"internationalizedColumns":null,"label":"Référentiel","data":["localization","date"]},"qualitatif":{"internationalizationName":null,"internationalizedColumns":null,"label":"Données qualitatives","data":["Nombre d'individus","Couleur des individus"]}},"internationalization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}}},"repository":null}}},"valid":false},"testIllegalCheckerConfigurationParameterForVariableComponentChecker":{"validationCheckResults":[{"level":"ERROR","message":"illegalCheckerConfigurationParameterForVariableComponentChecker","messageParams":{"dataType":"site","datum":"date","component":"day","checkerName":"Date","parameterName":"refType"},"error":true,"success":false}],"result":{"requiredAuthorizationsAttributes":["localization"],"version":1,"internationalization":{"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}},"references":{"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"internationalizedValidations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"internationalizedValidations":{}},"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"authorization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}},"internationalizationDisplay":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"internationalizedValidations":{"exempledeDeRegleDeValidation":{"fr":"Juste un exemple"}}}}},"comment":null,"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"},"internationalizedColumns":null,"name":"Sites","version":1,"defaultLanguage":null,"internationalization":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}}},"references":{"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":";","keyColumns":["name"],"columns":{"name":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"separator":"\u0000","keyColumns":["nom du site_key"],"columns":{"nom du type de site":null,"nom du site_key":null,"nom du site_fr":null,"nom du site_en":null,"description du site_fr":null,"description du site_en":null,"code sandre du Plan d'eau":null,"code sandre de la Masse d'eau plan d'eau":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom_key"],"columns":{"nom_key":null,"nom_fr":null,"nom_en":null,"description_fr":null,"description_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom de la plateforme_key"],"columns":{"nom de la plateforme_key":null,"nom du site":null,"nom de la plateforme_fr":null,"nom de la plateforme_en":null,"latitude":null,"longitude":null,"altitude":null,"nom du type de plateforme":null,"code sandre":null,"code sandre du contexte":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"separator":"\u0000","keyColumns":["nom du projet_key"],"columns":{"nom du projet_key":null,"nom du projet_fr":null,"nom du projet_en":null,"description du projet_fr":null,"description du projet_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}}},"compositeReferences":{"localizations":{"internationalizationName":null,"internationalizedColumns":null,"components":[{"internationalizationName":null,"internationalizedColumns":null,"reference":"typeSites","parentKeyColumn":null,"parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"sites","parentKeyColumn":"nom du type de site","parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"plateformes","parentKeyColumn":"nom du site","parentRecursiveKey":null}]}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"internationalizationDisplays":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"format":{"headerLine":2,"firstRowLine":3,"separator":";","columns":[{"header":"typeSite","boundTo":{"variable":"localization","component":"typeSite","id":"localization_typeSite","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"site","boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"date","boundTo":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"heure","boundTo":{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Couleur des individus","boundTo":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus valeur","boundTo":{"variable":"Nombre d'individus","component":"value","id":"Nombre d'individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus ecart type","boundTo":{"variable":"Nombre d'individus","component":"standardDeviation","id":"Nombre d'individus_standardDeviation","type":"PARAM_VARIABLE_COMPONENT_KEY"}}],"repeatedColumns":[],"constants":[{"rowNumber":1,"columnNumber":2,"headerName":null,"boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"},"exportHeader":"Site"}]},"data":{"date":{"chartDescription":null,"components":{"day":{"checker":{"name":"Date","params":{"pattern":"dd/MM/yyyy","refType":"peu_importe_refType_n_a_pas_de_sens","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"time":{"checker":{"name":"Date","params":{"pattern":"hh:mm:ss","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"localization":{"chartDescription":null,"components":{"site":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"sites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"typeSite":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"typeSites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"Couleur des individus":{"chartDescription":null,"components":{"value":null},"computedComponents":{}},"Nombre d'individus":{"chartDescription":{"value":"value","aggregation":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"},"unit":"unit","gap":null,"standardDeviation":"standardDeviation"},"components":{"value":null,"unit":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"units","groovy":null,"duration":null,"transformation":{"codify":true,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"standardDeviation":null},"computedComponents":{}}},"validations":{"exempledeDeRegleDeValidation":{"internationalizationName":{"fr":"Juste un exemple"},"internationalizedColumns":null,"checker":{"name":"GroovyExpression","params":{"pattern":null,"refType":null,"groovy":{"expression":"true","references":[],"datatypes":[]},"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"variableComponents":null}},"uniqueness":[{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}],"migrations":{},"authorization":{"timeScope":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},"authorizationScopes":{"localization":{"internationalizationName":null,"internationalizedColumns":null,"variable":"localization","component":"site","variableComponentKey":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}}},"dataGroups":{"referentiel":{"internationalizationName":null,"internationalizedColumns":null,"label":"Référentiel","data":["localization","date"]},"qualitatif":{"internationalizationName":null,"internationalizedColumns":null,"label":"Données qualitatives","data":["Nombre d'individus","Couleur des individus"]}},"internationalization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}}},"repository":null}}},"valid":false},"testMissingColumnInInternationalizationDisplayPattern":{"validationCheckResults":[{"level":"ERROR","message":"invalidInternationalizedColumns","messageParams":{"reference":"sites","unknownUsedAsInternationalizedColumns":["nom du site"],"knownColumns":["nom du type de site","nom du site_key","nom du site_fr","nom du site_en","description du site_fr","description du site_en","code sandre du Plan d'eau","code sandre de la Masse d'eau plan d'eau"]},"error":true,"success":false}],"result":{"requiredAuthorizationsAttributes":["localization"],"version":1,"internationalization":{"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}},"references":{"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"internationalizedValidations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du site}","en":"{nom du site_en}"}},"internationalizedValidations":{}},"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"authorization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}},"internationalizationDisplay":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"internationalizedValidations":{"exempledeDeRegleDeValidation":{"fr":"Juste un exemple"}}}}},"comment":null,"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"},"internationalizedColumns":null,"name":"Sites","version":1,"defaultLanguage":null,"internationalization":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}}},"references":{"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":";","keyColumns":["name"],"columns":{"name":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du site}","en":"{nom du site_en}"}},"separator":"\u0000","keyColumns":["nom du site_key"],"columns":{"nom du type de site":null,"nom du site_key":null,"nom du site_fr":null,"nom du site_en":null,"description du site_fr":null,"description du site_en":null,"code sandre du Plan d'eau":null,"code sandre de la Masse d'eau plan d'eau":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom_key"],"columns":{"nom_key":null,"nom_fr":null,"nom_en":null,"description_fr":null,"description_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom de la plateforme_key"],"columns":{"nom de la plateforme_key":null,"nom du site":null,"nom de la plateforme_fr":null,"nom de la plateforme_en":null,"latitude":null,"longitude":null,"altitude":null,"nom du type de plateforme":null,"code sandre":null,"code sandre du contexte":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"separator":"\u0000","keyColumns":["nom du projet_key"],"columns":{"nom du projet_key":null,"nom du projet_fr":null,"nom du projet_en":null,"description du projet_fr":null,"description du projet_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}}},"compositeReferences":{"localizations":{"internationalizationName":null,"internationalizedColumns":null,"components":[{"internationalizationName":null,"internationalizedColumns":null,"reference":"typeSites","parentKeyColumn":null,"parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"sites","parentKeyColumn":"nom du type de site","parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"plateformes","parentKeyColumn":"nom du site","parentRecursiveKey":null}]}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"internationalizationDisplays":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"format":{"headerLine":2,"firstRowLine":3,"separator":";","columns":[{"header":"typeSite","boundTo":{"variable":"localization","component":"typeSite","id":"localization_typeSite","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"site","boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"date","boundTo":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"heure","boundTo":{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Couleur des individus","boundTo":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus valeur","boundTo":{"variable":"Nombre d'individus","component":"value","id":"Nombre d'individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus ecart type","boundTo":{"variable":"Nombre d'individus","component":"standardDeviation","id":"Nombre d'individus_standardDeviation","type":"PARAM_VARIABLE_COMPONENT_KEY"}}],"repeatedColumns":[],"constants":[{"rowNumber":1,"columnNumber":2,"headerName":null,"boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"},"exportHeader":"Site"}]},"data":{"date":{"chartDescription":null,"components":{"day":{"checker":{"name":"Date","params":{"pattern":"dd/MM/yyyy","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"time":{"checker":{"name":"Date","params":{"pattern":"hh:mm:ss","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"localization":{"chartDescription":null,"components":{"site":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"sites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"typeSite":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"typeSites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"Couleur des individus":{"chartDescription":null,"components":{"value":null},"computedComponents":{}},"Nombre d'individus":{"chartDescription":{"value":"value","aggregation":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"},"unit":"unit","gap":null,"standardDeviation":"standardDeviation"},"components":{"value":null,"unit":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"units","groovy":null,"duration":null,"transformation":{"codify":true,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"standardDeviation":null},"computedComponents":{}}},"validations":{"exempledeDeRegleDeValidation":{"internationalizationName":{"fr":"Juste un exemple"},"internationalizedColumns":null,"checker":{"name":"GroovyExpression","params":{"pattern":null,"refType":null,"groovy":{"expression":"true","references":[],"datatypes":[]},"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"variableComponents":null}},"uniqueness":[{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}],"migrations":{},"authorization":{"timeScope":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},"authorizationScopes":{"localization":{"internationalizationName":null,"internationalizedColumns":null,"variable":"localization","component":"site","variableComponentKey":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}}},"dataGroups":{"referentiel":{"internationalizationName":null,"internationalizedColumns":null,"label":"Référentiel","data":["localization","date"]},"qualitatif":{"internationalizationName":null,"internationalizedColumns":null,"label":"Données qualitatives","data":["Nombre d'individus","Couleur des individus"]}},"internationalization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}}},"repository":null}}},"valid":false},"testEmptyFile":{"validationCheckResults":[{"level":"ERROR","message":"emptyFile","messageParams":{},"error":true,"success":false}],"result":null,"valid":false},"testMissingStandardDeviationComponentForChart":{"validationCheckResults":[{"level":"ERROR","message":"missingStandardDeviationComponentForChart","messageParams":{"variable":"Nombre d'individus","standardDeviation":"badstandardDeviation","dataType":"site","components":["value","unit","standardDeviation"]},"error":true,"success":false}],"result":{"requiredAuthorizationsAttributes":["localization"],"version":1,"internationalization":{"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}},"references":{"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"internationalizedValidations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"internationalizedValidations":{}},"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"authorization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}},"internationalizationDisplay":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"internationalizedValidations":{"exempledeDeRegleDeValidation":{"fr":"Juste un exemple"}}}}},"comment":null,"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"},"internationalizedColumns":null,"name":"Sites","version":1,"defaultLanguage":null,"internationalization":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}}},"references":{"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":";","keyColumns":["name"],"columns":{"name":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"separator":"\u0000","keyColumns":["nom du site_key"],"columns":{"nom du type de site":null,"nom du site_key":null,"nom du site_fr":null,"nom du site_en":null,"description du site_fr":null,"description du site_en":null,"code sandre du Plan d'eau":null,"code sandre de la Masse d'eau plan d'eau":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom_key"],"columns":{"nom_key":null,"nom_fr":null,"nom_en":null,"description_fr":null,"description_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom de la plateforme_key"],"columns":{"nom de la plateforme_key":null,"nom du site":null,"nom de la plateforme_fr":null,"nom de la plateforme_en":null,"latitude":null,"longitude":null,"altitude":null,"nom du type de plateforme":null,"code sandre":null,"code sandre du contexte":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"separator":"\u0000","keyColumns":["nom du projet_key"],"columns":{"nom du projet_key":null,"nom du projet_fr":null,"nom du projet_en":null,"description du projet_fr":null,"description du projet_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}}},"compositeReferences":{"localizations":{"internationalizationName":null,"internationalizedColumns":null,"components":[{"internationalizationName":null,"internationalizedColumns":null,"reference":"typeSites","parentKeyColumn":null,"parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"sites","parentKeyColumn":"nom du type de site","parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"plateformes","parentKeyColumn":"nom du site","parentRecursiveKey":null}]}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"internationalizationDisplays":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"format":{"headerLine":2,"firstRowLine":3,"separator":";","columns":[{"header":"typeSite","boundTo":{"variable":"localization","component":"typeSite","id":"localization_typeSite","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"site","boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"date","boundTo":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"heure","boundTo":{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Couleur des individus","boundTo":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus valeur","boundTo":{"variable":"Nombre d'individus","component":"value","id":"Nombre d'individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus ecart type","boundTo":{"variable":"Nombre d'individus","component":"standardDeviation","id":"Nombre d'individus_standardDeviation","type":"PARAM_VARIABLE_COMPONENT_KEY"}}],"repeatedColumns":[],"constants":[{"rowNumber":1,"columnNumber":2,"headerName":null,"boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"},"exportHeader":"Site"}]},"data":{"date":{"chartDescription":null,"components":{"day":{"checker":{"name":"Date","params":{"pattern":"dd/MM/yyyy","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"time":{"checker":{"name":"Date","params":{"pattern":"hh:mm:ss","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"localization":{"chartDescription":null,"components":{"site":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"sites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"typeSite":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"typeSites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"Couleur des individus":{"chartDescription":null,"components":{"value":null},"computedComponents":{}},"Nombre d'individus":{"chartDescription":{"value":"value","aggregation":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"},"unit":"unit","gap":null,"standardDeviation":"badstandardDeviation"},"components":{"value":null,"unit":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"units","groovy":null,"duration":null,"transformation":{"codify":true,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"standardDeviation":null},"computedComponents":{}}},"validations":{"exempledeDeRegleDeValidation":{"internationalizationName":{"fr":"Juste un exemple"},"internationalizedColumns":null,"checker":{"name":"GroovyExpression","params":{"pattern":null,"refType":null,"groovy":{"expression":"true","references":[],"datatypes":[]},"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"variableComponents":null}},"uniqueness":[{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}],"migrations":{},"authorization":{"timeScope":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},"authorizationScopes":{"localization":{"internationalizationName":null,"internationalizedColumns":null,"variable":"localization","component":"site","variableComponentKey":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}}},"dataGroups":{"referentiel":{"internationalizationName":null,"internationalizedColumns":null,"label":"Référentiel","data":["localization","date"]},"qualitatif":{"internationalizationName":null,"internationalizedColumns":null,"label":"Données qualitatives","data":["Nombre d'individus","Couleur des individus"]}},"internationalization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}}},"repository":null}}},"valid":false},"testUnrecognizedProperty":{"validationCheckResults":[{"level":"ERROR","message":"unrecognizedProperty","messageParams":{"lineNumber":9,"columnNumber":3,"unknownPropertyName":"compositReference","knownProperties":["requiredAuthorizationsAttributes","internationalization","version","comment","application","references","compositeReferences","dataTypes"]},"error":true,"success":false}],"result":null,"valid":false},"testMissingRequiredExpression":{"validationCheckResults":[{"level":"ERROR","message":"missingRequiredExpressionForValidationRuleInDataType","messageParams":{"lineValidationRuleKey":"exempledeDeRegleDeValidation","dataType":"site"},"error":true,"success":false}],"result":{"requiredAuthorizationsAttributes":["localization"],"version":1,"internationalization":{"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}},"references":{"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"internationalizedValidations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"internationalizedValidations":{}},"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"authorization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}},"internationalizationDisplay":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"internationalizedValidations":{"exempledeDeRegleDeValidation":{"fr":"Juste un exemple"}}}}},"comment":null,"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"},"internationalizedColumns":null,"name":"Sites","version":1,"defaultLanguage":null,"internationalization":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}}},"references":{"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":";","keyColumns":["name"],"columns":{"name":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"separator":"\u0000","keyColumns":["nom du site_key"],"columns":{"nom du type de site":null,"nom du site_key":null,"nom du site_fr":null,"nom du site_en":null,"description du site_fr":null,"description du site_en":null,"code sandre du Plan d'eau":null,"code sandre de la Masse d'eau plan d'eau":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom_key"],"columns":{"nom_key":null,"nom_fr":null,"nom_en":null,"description_fr":null,"description_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom de la plateforme_key"],"columns":{"nom de la plateforme_key":null,"nom du site":null,"nom de la plateforme_fr":null,"nom de la plateforme_en":null,"latitude":null,"longitude":null,"altitude":null,"nom du type de plateforme":null,"code sandre":null,"code sandre du contexte":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"separator":"\u0000","keyColumns":["nom du projet_key"],"columns":{"nom du projet_key":null,"nom du projet_fr":null,"nom du projet_en":null,"description du projet_fr":null,"description du projet_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}}},"compositeReferences":{"localizations":{"internationalizationName":null,"internationalizedColumns":null,"components":[{"internationalizationName":null,"internationalizedColumns":null,"reference":"typeSites","parentKeyColumn":null,"parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"sites","parentKeyColumn":"nom du type de site","parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"plateformes","parentKeyColumn":"nom du site","parentRecursiveKey":null}]}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"internationalizationDisplays":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"format":{"headerLine":2,"firstRowLine":3,"separator":";","columns":[{"header":"typeSite","boundTo":{"variable":"localization","component":"typeSite","id":"localization_typeSite","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"site","boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"date","boundTo":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"heure","boundTo":{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Couleur des individus","boundTo":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus valeur","boundTo":{"variable":"Nombre d'individus","component":"value","id":"Nombre d'individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus ecart type","boundTo":{"variable":"Nombre d'individus","component":"standardDeviation","id":"Nombre d'individus_standardDeviation","type":"PARAM_VARIABLE_COMPONENT_KEY"}}],"repeatedColumns":[],"constants":[{"rowNumber":1,"columnNumber":2,"headerName":null,"boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"},"exportHeader":"Site"}]},"data":{"date":{"chartDescription":null,"components":{"day":{"checker":{"name":"Date","params":{"pattern":"dd/MM/yyyy","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"time":{"checker":{"name":"Date","params":{"pattern":"hh:mm:ss","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"localization":{"chartDescription":null,"components":{"site":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"sites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"typeSite":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"typeSites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"Couleur des individus":{"chartDescription":null,"components":{"value":null},"computedComponents":{}},"Nombre d'individus":{"chartDescription":{"value":"value","aggregation":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"},"unit":"unit","gap":null,"standardDeviation":"standardDeviation"},"components":{"value":null,"unit":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"units","groovy":null,"duration":null,"transformation":{"codify":true,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"standardDeviation":null},"computedComponents":{}}},"validations":{"exempledeDeRegleDeValidation":{"internationalizationName":{"fr":"Juste un exemple"},"internationalizedColumns":null,"checker":{"name":"GroovyExpression","params":{"pattern":null,"refType":null,"groovy":{"expression":null,"references":[],"datatypes":[]},"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"variableComponents":null}},"uniqueness":[{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}],"migrations":{},"authorization":{"timeScope":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},"authorizationScopes":{"localization":{"internationalizationName":null,"internationalizedColumns":null,"variable":"localization","component":"site","variableComponentKey":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}}},"dataGroups":{"referentiel":{"internationalizationName":null,"internationalizedColumns":null,"label":"Référentiel","data":["localization","date"]},"qualitatif":{"internationalizationName":null,"internationalizedColumns":null,"label":"Données qualitatives","data":["Nombre d'individus","Couleur des individus"]}},"internationalization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}}},"repository":null}}},"valid":false},"testMissingParentColumnForReferenceInCompositeReference":{"validationCheckResults":[{"level":"ERROR","message":"missingParentColumnForReferenceInCompositeReference","messageParams":{"compositeReference":"localizations","reference":"plateformes","parentKeyColumn":"nom du type de site"},"error":true,"success":false}],"result":{"requiredAuthorizationsAttributes":["localization"],"version":1,"internationalization":{"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}},"references":{"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"internationalizedValidations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"internationalizedValidations":{}},"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"authorization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}},"internationalizationDisplay":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"internationalizedValidations":{"exempledeDeRegleDeValidation":{"fr":"Juste un exemple"}}}}},"comment":null,"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"},"internationalizedColumns":null,"name":"Sites","version":1,"defaultLanguage":null,"internationalization":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}}},"references":{"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":";","keyColumns":["name"],"columns":{"name":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"separator":"\u0000","keyColumns":["nom du site_key"],"columns":{"nom du type de site":null,"nom du site_key":null,"nom du site_fr":null,"nom du site_en":null,"description du site_fr":null,"description du site_en":null,"code sandre du Plan d'eau":null,"code sandre de la Masse d'eau plan d'eau":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom_key"],"columns":{"nom_key":null,"nom_fr":null,"nom_en":null,"description_fr":null,"description_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom de la plateforme_key"],"columns":{"nom de la plateforme_key":null,"nom du site":null,"nom de la plateforme_fr":null,"nom de la plateforme_en":null,"latitude":null,"longitude":null,"altitude":null,"nom du type de plateforme":null,"code sandre":null,"code sandre du contexte":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"separator":"\u0000","keyColumns":["nom du projet_key"],"columns":{"nom du projet_key":null,"nom du projet_fr":null,"nom du projet_en":null,"description du projet_fr":null,"description du projet_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}}},"compositeReferences":{"localizations":{"internationalizationName":null,"internationalizedColumns":null,"components":[{"internationalizationName":null,"internationalizedColumns":null,"reference":"typeSites","parentKeyColumn":null,"parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"plateformes","parentKeyColumn":"nom du type de site","parentRecursiveKey":null}]},"default_0":{"internationalizationName":null,"internationalizedColumns":null,"components":[{"internationalizationName":null,"internationalizedColumns":null,"reference":"sites","parentKeyColumn":null,"parentRecursiveKey":null}]}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"internationalizationDisplays":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"format":{"headerLine":2,"firstRowLine":3,"separator":";","columns":[{"header":"typeSite","boundTo":{"variable":"localization","component":"typeSite","id":"localization_typeSite","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"site","boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"date","boundTo":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"heure","boundTo":{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Couleur des individus","boundTo":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus valeur","boundTo":{"variable":"Nombre d'individus","component":"value","id":"Nombre d'individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus ecart type","boundTo":{"variable":"Nombre d'individus","component":"standardDeviation","id":"Nombre d'individus_standardDeviation","type":"PARAM_VARIABLE_COMPONENT_KEY"}}],"repeatedColumns":[],"constants":[{"rowNumber":1,"columnNumber":2,"headerName":null,"boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"},"exportHeader":"Site"}]},"data":{"date":{"chartDescription":null,"components":{"day":{"checker":{"name":"Date","params":{"pattern":"dd/MM/yyyy","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"time":{"checker":{"name":"Date","params":{"pattern":"hh:mm:ss","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"localization":{"chartDescription":null,"components":{"site":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"sites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"typeSite":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"typeSites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"Couleur des individus":{"chartDescription":null,"components":{"value":null},"computedComponents":{}},"Nombre d'individus":{"chartDescription":{"value":"value","aggregation":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"},"unit":"unit","gap":null,"standardDeviation":"standardDeviation"},"components":{"value":null,"unit":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"units","groovy":null,"duration":null,"transformation":{"codify":true,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"standardDeviation":null},"computedComponents":{}}},"validations":{"exempledeDeRegleDeValidation":{"internationalizationName":{"fr":"Juste un exemple"},"internationalizedColumns":null,"checker":{"name":"GroovyExpression","params":{"pattern":null,"refType":null,"groovy":{"expression":"true","references":[],"datatypes":[]},"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"variableComponents":null}},"uniqueness":[{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}],"migrations":{},"authorization":{"timeScope":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},"authorizationScopes":{"localization":{"internationalizationName":null,"internationalizedColumns":null,"variable":"localization","component":"site","variableComponentKey":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}}},"dataGroups":{"referentiel":{"internationalizationName":null,"internationalizedColumns":null,"label":"Référentiel","data":["localization","date"]},"qualitatif":{"internationalizationName":null,"internationalizedColumns":null,"label":"Données qualitatives","data":["Nombre d'individus","Couleur des individus"]}},"internationalization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}}},"repository":null}}},"valid":false},"testMissingReferenceInCompositereference":{"validationCheckResults":[{"level":"ERROR","message":"missingReferenceInCompositereference","messageParams":{"compositeReference":"localizations"},"error":true,"success":false}],"result":{"requiredAuthorizationsAttributes":["localization"],"version":1,"internationalization":{"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}},"references":{"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"internationalizedValidations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"internationalizedValidations":{}},"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"authorization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}},"internationalizationDisplay":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"internationalizedValidations":{"exempledeDeRegleDeValidation":{"fr":"Juste un exemple"}}}}},"comment":null,"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"},"internationalizedColumns":null,"name":"Sites","version":1,"defaultLanguage":null,"internationalization":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}}},"references":{"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":";","keyColumns":["name"],"columns":{"name":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"separator":"\u0000","keyColumns":["nom du site_key"],"columns":{"nom du type de site":null,"nom du site_key":null,"nom du site_fr":null,"nom du site_en":null,"description du site_fr":null,"description du site_en":null,"code sandre du Plan d'eau":null,"code sandre de la Masse d'eau plan d'eau":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom_key"],"columns":{"nom_key":null,"nom_fr":null,"nom_en":null,"description_fr":null,"description_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom de la plateforme_key"],"columns":{"nom de la plateforme_key":null,"nom du site":null,"nom de la plateforme_fr":null,"nom de la plateforme_en":null,"latitude":null,"longitude":null,"altitude":null,"nom du type de plateforme":null,"code sandre":null,"code sandre du contexte":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"separator":"\u0000","keyColumns":["nom du projet_key"],"columns":{"nom du projet_key":null,"nom du projet_fr":null,"nom du projet_en":null,"description du projet_fr":null,"description du projet_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}}},"compositeReferences":{"localizations":{"internationalizationName":null,"internationalizedColumns":null,"components":[{"internationalizationName":null,"internationalizedColumns":null,"reference":null,"parentKeyColumn":null,"parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"sites","parentKeyColumn":"nom du type de site","parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"plateformes","parentKeyColumn":"nom du site","parentRecursiveKey":null}]}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"internationalizationDisplays":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"format":{"headerLine":2,"firstRowLine":3,"separator":";","columns":[{"header":"typeSite","boundTo":{"variable":"localization","component":"typeSite","id":"localization_typeSite","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"site","boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"date","boundTo":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"heure","boundTo":{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Couleur des individus","boundTo":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus valeur","boundTo":{"variable":"Nombre d'individus","component":"value","id":"Nombre d'individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus ecart type","boundTo":{"variable":"Nombre d'individus","component":"standardDeviation","id":"Nombre d'individus_standardDeviation","type":"PARAM_VARIABLE_COMPONENT_KEY"}}],"repeatedColumns":[],"constants":[{"rowNumber":1,"columnNumber":2,"headerName":null,"boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"},"exportHeader":"Site"}]},"data":{"date":{"chartDescription":null,"components":{"day":{"checker":{"name":"Date","params":{"pattern":"dd/MM/yyyy","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"time":{"checker":{"name":"Date","params":{"pattern":"hh:mm:ss","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"localization":{"chartDescription":null,"components":{"site":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"sites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"typeSite":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"typeSites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"Couleur des individus":{"chartDescription":null,"components":{"value":null},"computedComponents":{}},"Nombre d'individus":{"chartDescription":{"value":"value","aggregation":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"},"unit":"unit","gap":null,"standardDeviation":"standardDeviation"},"components":{"value":null,"unit":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"units","groovy":null,"duration":null,"transformation":{"codify":true,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"standardDeviation":null},"computedComponents":{}}},"validations":{"exempledeDeRegleDeValidation":{"internationalizationName":{"fr":"Juste un exemple"},"internationalizedColumns":null,"checker":{"name":"GroovyExpression","params":{"pattern":null,"refType":null,"groovy":{"expression":"true","references":[],"datatypes":[]},"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"variableComponents":null}},"uniqueness":[{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}],"migrations":{},"authorization":{"timeScope":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},"authorizationScopes":{"localization":{"internationalizationName":null,"internationalizedColumns":null,"variable":"localization","component":"site","variableComponentKey":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}}},"dataGroups":{"referentiel":{"internationalizationName":null,"internationalizedColumns":null,"label":"Référentiel","data":["localization","date"]},"qualitatif":{"internationalizationName":null,"internationalizedColumns":null,"label":"Données qualitatives","data":["Nombre d'individus","Couleur des individus"]}},"internationalization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}}},"repository":null}}},"valid":false},"testMissingAggregationComponentForChart":{"validationCheckResults":[{"level":"ERROR","message":"missingAggregationComponentForChart","messageParams":{"variable":"Nombre d'individus","aggregationVariable":"Couleur des individus","aggregationComponent":"pasdevalue","dataType":"site","components":["value","unit","standardDeviation"]},"error":true,"success":false}],"result":{"requiredAuthorizationsAttributes":["localization"],"version":1,"internationalization":{"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}},"references":{"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"internationalizedValidations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizedDynamicColumns":{},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"internationalizedValidations":{}},"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizedDynamicColumns":{},"internationalizationDisplay":null,"internationalizedValidations":{}}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"authorization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}},"internationalizationDisplay":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"internationalizedValidations":{"exempledeDeRegleDeValidation":{"fr":"Juste un exemple"}}}}},"comment":null,"application":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"},"internationalizedColumns":null,"name":"Sites","version":1,"defaultLanguage":null,"internationalization":{"internationalizationName":{"fr":"Fausse application","en":"Fake application"}}},"references":{"units":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":";","keyColumns":["name"],"columns":{"name":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"sites":{"internationalizationName":{"fr":"Site","en":"Site"},"internationalizedColumns":{"nom du site_key":{"fr":"nom du site_fr","en":"nom du site_en"},"description du site_fr":{"fr":"description du site_fr","en":"description du site_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du site_fr}","en":"{nom du site_en}"}},"separator":"\u0000","keyColumns":["nom du site_key"],"columns":{"nom du type de site":null,"nom du site_key":null,"nom du site_fr":null,"nom du site_en":null,"description du site_fr":null,"description du site_en":null,"code sandre du Plan d'eau":null,"code sandre de la Masse d'eau plan d'eau":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"typeSites":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom_key"],"columns":{"nom_key":null,"nom_fr":null,"nom_en":null,"description_fr":null,"description_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"plateformes":{"internationalizationName":null,"internationalizedColumns":null,"internationalizationDisplay":null,"separator":"\u0000","keyColumns":["nom de la plateforme_key"],"columns":{"nom de la plateforme_key":null,"nom du site":null,"nom de la plateforme_fr":null,"nom de la plateforme_en":null,"latitude":null,"longitude":null,"altitude":null,"nom du type de plateforme":null,"code sandre":null,"code sandre du contexte":null},"computedColumns":{},"dynamicColumns":{},"validations":{}},"projets":{"internationalizationName":{"fr":"projet","en":"Project"},"internationalizedColumns":{"nom du projet_key":{"fr":"nom du projet_fr","en":"nom du projet_en"}},"internationalizationDisplay":{"pattern":{"fr":"{nom du projet_fr}","en":"{nom du projet_en}"}},"separator":"\u0000","keyColumns":["nom du projet_key"],"columns":{"nom du projet_key":null,"nom du projet_fr":null,"nom du projet_en":null,"description du projet_fr":null,"description du projet_en":null},"computedColumns":{},"dynamicColumns":{},"validations":{}}},"compositeReferences":{"localizations":{"internationalizationName":null,"internationalizedColumns":null,"components":[{"internationalizationName":null,"internationalizedColumns":null,"reference":"typeSites","parentKeyColumn":null,"parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"sites","parentKeyColumn":"nom du type de site","parentRecursiveKey":null},{"internationalizationName":null,"internationalizedColumns":null,"reference":"plateformes","parentKeyColumn":"nom du site","parentRecursiveKey":null}]}},"dataTypes":{"site":{"internationalizationName":{"fr":"Le site","en":"the good place"},"internationalizedColumns":null,"internationalizationDisplays":{"sites":{"pattern":{"fr":"le nom du site {nom du site_fr}","en":"the very good place {nom du site_en}"}}},"format":{"headerLine":2,"firstRowLine":3,"separator":";","columns":[{"header":"typeSite","boundTo":{"variable":"localization","component":"typeSite","id":"localization_typeSite","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"site","boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"date","boundTo":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"heure","boundTo":{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Couleur des individus","boundTo":{"variable":"Couleur des individus","component":"value","id":"Couleur des individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus valeur","boundTo":{"variable":"Nombre d'individus","component":"value","id":"Nombre d'individus_value","type":"PARAM_VARIABLE_COMPONENT_KEY"}},{"header":"Nombre d'individus ecart type","boundTo":{"variable":"Nombre d'individus","component":"standardDeviation","id":"Nombre d'individus_standardDeviation","type":"PARAM_VARIABLE_COMPONENT_KEY"}}],"repeatedColumns":[],"constants":[{"rowNumber":1,"columnNumber":2,"headerName":null,"boundTo":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"},"exportHeader":"Site"}]},"data":{"date":{"chartDescription":null,"components":{"day":{"checker":{"name":"Date","params":{"pattern":"dd/MM/yyyy","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"time":{"checker":{"name":"Date","params":{"pattern":"hh:mm:ss","refType":null,"groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"localization":{"chartDescription":null,"components":{"site":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"sites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"typeSite":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"typeSites","groovy":null,"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null}},"computedComponents":{}},"Couleur des individus":{"chartDescription":null,"components":{"value":null},"computedComponents":{}},"Nombre d'individus":{"chartDescription":{"value":"value","aggregation":{"variable":"Couleur des individus","component":"pasdevalue","id":"Couleur des individus_pasdevalue","type":"PARAM_VARIABLE_COMPONENT_KEY"},"unit":"unit","gap":null,"standardDeviation":"standardDeviation"},"components":{"value":null,"unit":{"checker":{"name":"Reference","params":{"pattern":null,"refType":"units","groovy":null,"duration":null,"transformation":{"codify":true,"groovy":null},"required":true,"multiplicity":"ONE"}},"defaultValue":null},"standardDeviation":null},"computedComponents":{}}},"validations":{"exempledeDeRegleDeValidation":{"internationalizationName":{"fr":"Juste un exemple"},"internationalizedColumns":null,"checker":{"name":"GroovyExpression","params":{"pattern":null,"refType":null,"groovy":{"expression":"true","references":[],"datatypes":[]},"duration":null,"transformation":{"codify":false,"groovy":null},"required":true,"multiplicity":"ONE"}},"variableComponents":null}},"uniqueness":[{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"date","component":"time","id":"date_time","type":"PARAM_VARIABLE_COMPONENT_KEY"},{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}],"migrations":{},"authorization":{"timeScope":{"variable":"date","component":"day","id":"date_day","type":"PARAM_VARIABLE_COMPONENT_KEY"},"authorizationScopes":{"localization":{"internationalizationName":null,"internationalizedColumns":null,"variable":"localization","component":"site","variableComponentKey":{"variable":"localization","component":"site","id":"localization_site","type":"PARAM_VARIABLE_COMPONENT_KEY"}}},"dataGroups":{"referentiel":{"internationalizationName":null,"internationalizedColumns":null,"label":"Référentiel","data":["localization","date"]},"qualitatif":{"internationalizationName":null,"internationalizedColumns":null,"label":"Données qualitatives","data":["Nombre d'individus","Couleur des individus"]}},"internationalization":{"dataGroups":{"referentiel":{"internationalizationName":null},"qualitatif":{"internationalizationName":null}},"authorizationScopes":{"localization":{"internationalizationName":null}}}},"repository":null}}},"valid":false}} \ No newline at end of file diff --git a/ui/cypress/integration/createApplication_spec.js b/ui/cypress/integration/createApplication_spec.js index ccff7103e..5ffe5dfb7 100644 --- a/ui/cypress/integration/createApplication_spec.js +++ b/ui/cypress/integration/createApplication_spec.js @@ -17,8 +17,8 @@ describe('test create application', () => { cy.get('.card-header-title.createApplication').first().contains(" Créer l\'application ").click() cy.visit(Cypress.env('applicationCreation_url')) - cy.get('input[type = text]').first().type(nameApplication) - //cy.intercept('POST', 'http://localhost:8081/api/v1/applications/' + nameApplication, { fixture: testYaml }).as('btnTestYaml') + //cy.get('input[type = text]').first().type(nameApplication) + //cy.intercept('POST', 'http://localhost:8081/api/v1/applications/' + nameApplication, { fixture: testYaml }).as('btnTestYaml') cy.fixture(yamlSite).then(fileContent => { cy.get('input[type = "file"]').attachFile({ @@ -27,5 +27,59 @@ describe('test create application', () => { mimeType: 'text/yaml' }) }) + cy.intercept( + 'POST', + 'http://localhost:8081/api/v1/validate-configuration', { + statusCode: 200, + body: { + "validationCheckResults": [], + "result": { + "requiredAuthorizationsAttributes": [], + "version": 1, + "internationalization": { + "application": { + "internationalizationName": { + "fr": "application test", + "en": "test application", + "es": "el superba application" + } + }, "references": {}, "dataTypes": {} + }, + "comment": null, + "application": { + "internationalizationName": { + "fr": "application test", + "en": "test application", + "es": "el superba application" + }, + "internationalizedColumns": null, + "name": "applicationtest", + "version": 1, + "defaultLanguage": null, + "internationalization": { + "internationalizationName": { + "fr": "application test", + "en": "test application", + "es": "el superba application" + } + } + }, + "references": {}, + "compositeReferences": {}, + "dataTypes": {} + }, + "valid": true + }, + }).as('validateResponse') + cy.get('.button > :nth-child(2)').first().click(); + cy.get('.textarea').first().type("un commentaire") + cy.intercept( + 'POST', + 'http://localhost:8081/api/v1/applications/applicationtest', { + statusCode: 200, + body: {"id":"49ff0469-c277-4525-a99e-6e404fd99954"} + }).as('getApplicationResponse') + cy.get('.buttons > .button > :nth-child(2)').first().click(); + cy.get('.columns').children().its('length').should('be.gt', 0) }) }) \ No newline at end of file diff --git a/ui/cypress/integration/errors_test.js b/ui/cypress/integration/errors_test.js new file mode 100644 index 000000000..e9392bed1 --- /dev/null +++ b/ui/cypress/integration/errors_test.js @@ -0,0 +1,48 @@ +/// <reference types="Cypress" /> + +let errors = require('../fixtures/applications/errors/errors.json'); +describe('test create application', () => { + beforeEach(() => { + cy.setLocale('fr'); + }); + + it('Test creation site', () => { + cy.login("admin", ['applications/ore/ore_application_description.json']) + + cy.get('.card-header-title.createApplication').first().contains(' Créer l\'application ').click() + const testYaml = 'applications/fake/fakeYaml_testCreateAplication.json' + const yamlSite = 'applications/sites/site.yaml' + const nameApplication = 'site' + + cy.visit(Cypress.env('applications_url')) + cy.get('.card-header-title.createApplication').first().contains(" Créer l\'application ").click() + + cy.visit(Cypress.env('applicationCreation_url')) + //cy.get('input[type = text]').first().type(nameApplication) + //cy.intercept('POST', 'http://localhost:8081/api/v1/applications/' + nameApplication, { fixture: testYaml }).as('btnTestYaml') + + cy.fixture(yamlSite).then(fileContent => { + cy.get('input[type = "file"]').attachFile({ + fileContent: fileContent.toString(), + fileName: yamlSite, + mimeType: 'text/yaml' + }) + }) + let returnErrors = {}; + for (const methodName in errors) { + cy.intercept( + 'POST', + 'http://localhost:8081/api/v1/validate-configuration', { + statusCode: 200, + body: {validationCheckResults: errors[methodName].validationCheckResults} + }).as('validateResponse') + cy.get('.button > :nth-child(2)').first().click(); + cy.get('.media-content') + .invoke('text') + .then(function(error){ + returnErrors[methodName]=error + console.log("Message d'erreur pour l'erreur " + methodName, error) + }); + } + }) +}) \ No newline at end of file -- GitLab