diff --git a/Documentation_fichier_Yaml.md b/Documentation_fichier_Yaml.md index 3112e9a3466a4ea659f5484f7c42ba81c2e45344..fff84133b67c5ce4feb3f508f6775aab53adfb88 100644 --- a/Documentation_fichier_Yaml.md +++ b/Documentation_fichier_Yaml.md @@ -567,20 +567,25 @@ On peut surcharger l'affichage d'une colonne faisant référence à un référen ``` -# Aide fichier .csv +# Aide fichier .csv + +## lors de l'ouverture du fichier csv via libre office: + +<span style="color: red">* sélectionner le séparateur en ";"</span> -## lors de la création du fichier csv : +## lors de la création du fichier csv de Référence et de donnée : * cocher lors de l'enregistrement du fichier * Éditer les paramètre du filtre * Sélectionner le point virgule -* dans les données qui se trouve dans les colonnes contenant des clés naturels ne pas mettre +* dans les données qui se trouvent dans les colonnes contenant des clés naturelles on attend : * pas d'accents * pas de majuscules * pas de caratères spéciaux () , - : - * autorisé _ et . -* le nom des colonnes doivent être le plus court possible + * autorisé les _ et les . +* le nom des colonnes doive être le plus court possible +* le fichier doit être en UTF8 pour que les colonnes soient lisible (les caractères spéciaux ne passe pas sinon. ex : é, è, ç) -## lors de l'ouverture du fichier csv via libre office: - -* sélectionner le séparateur en ";" \ No newline at end of file +## lors de l'importation de fichier csv dans l'application: + +* ouvrer la console avec F12 dans votre navigateur pour voir l'erreur de téléversement (erreur serveur) plus en détail. diff --git a/src/main/java/fr/inra/oresing/checker/CheckerFactory.java b/src/main/java/fr/inra/oresing/checker/CheckerFactory.java index 0afd8067e435e463f5b2011eecf62967f6ce7433..36f67d116780fdc1bd3a7b29121dddcb898ba532 100644 --- a/src/main/java/fr/inra/oresing/checker/CheckerFactory.java +++ b/src/main/java/fr/inra/oresing/checker/CheckerFactory.java @@ -32,8 +32,8 @@ public class CheckerFactory { public ImmutableMap<VariableComponentKey, ReferenceLineChecker> getReferenceLineCheckers(Application app, String dataType) { return getLineCheckers(app, dataType).stream() - .filter(lineChecker -> lineChecker instanceof ReferenceLineChecker) - .map(lineChecker -> (ReferenceLineChecker) lineChecker) + .filter(lineChecker -> lineChecker.instanceOf(ReferenceLineChecker.class)) + .map(lineChecker -> lineChecker.getInstance((ReferenceLineChecker.class))) .collect(ImmutableMap.toImmutableMap(rlc -> (VariableComponentKey) rlc.getTarget().getTarget(), Function.identity())); } @@ -217,4 +217,4 @@ public class CheckerFactory { return param; } } -} \ No newline at end of file +} diff --git a/src/main/java/fr/inra/oresing/checker/ILineCheckerDecorator.java b/src/main/java/fr/inra/oresing/checker/ILineCheckerDecorator.java new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/main/java/fr/inra/oresing/checker/LineChecker.java b/src/main/java/fr/inra/oresing/checker/LineChecker.java index 57c43f8451e0e4a65d364b2165f45c13d8542f9e..e01b9aac67ce653f35f06ce847947c5f1ac1f552 100644 --- a/src/main/java/fr/inra/oresing/checker/LineChecker.java +++ b/src/main/java/fr/inra/oresing/checker/LineChecker.java @@ -9,4 +9,4 @@ public interface LineChecker { ValidationCheckResult check(Map<VariableComponentKey, String> values); ValidationCheckResult checkReference(Map<String, String> values); -} \ No newline at end of file +} diff --git a/src/main/java/fr/inra/oresing/rest/OreSiService.java b/src/main/java/fr/inra/oresing/rest/OreSiService.java index 601849443d8c524ced341bd83e8144a296d66cc8..efec1bd34fcd16068d2bbaa500a3b0dd0f87dfde 100644 --- a/src/main/java/fr/inra/oresing/rest/OreSiService.java +++ b/src/main/java/fr/inra/oresing/rest/OreSiService.java @@ -108,8 +108,11 @@ public class OreSiService { return escaped; } - public static void checkNaturalKeySyntax(String keyComponent) { - Preconditions.checkState(keyComponent.matches("[a-z0-9_]+"), keyComponent + " n'est pas un élément valide pour une clé naturelle"); + private void checkNaturalKeySyntax(String keyComponent) { + if (!keyComponent.isEmpty()) + Preconditions.checkState(keyComponent.matches("[a-z0-9_]+"), keyComponent + " n'est pas un élément valide pour une clé naturelle"); + else + Preconditions.checkState(keyComponent.matches("[a-z0-9_]+"),"Impossible de trouver une clé naturelle valide car la colonne n'existe pas."); } private void checkHierarchicalKeySyntax(String compositeKey) { @@ -1420,4 +1423,4 @@ public class OreSiService { int lineNumber; List<Map.Entry<String, String>> columns; } -} \ No newline at end of file +} diff --git a/src/test/java/fr/inra/oresing/rest/Fixtures.java b/src/test/java/fr/inra/oresing/rest/Fixtures.java index 15f9399dbe49de0df596075c739336bc0d4bbb7f..e21e3475b8212a8b86f62d7f1152ad4245173328 100644 --- a/src/test/java/fr/inra/oresing/rest/Fixtures.java +++ b/src/test/java/fr/inra/oresing/rest/Fixtures.java @@ -392,6 +392,15 @@ public class Fixtures { referentielFiles.put("parcelles_elementaires", "/data/pros/parcelle_complet.csv"); referentielFiles.put("placettes", "/data/pros/placette_complet.csv"); referentielFiles.put("traitements", "/data/pros/traitement_complet.csv"); + referentielFiles.put("type_lieu", "/data/pros/type_lieu.csv"); + referentielFiles.put("Pays", "/data/pros/pays.csv"); + referentielFiles.put("Region", "/data/pros/region.csv"); + referentielFiles.put("Commune", "/data/pros/commune.csv"); + referentielFiles.put("Departement", "/data/pros/departement.csv"); + referentielFiles.put("Echelle_prélèvement", "/data/pros/echelle_de_prelevement.csv"); + referentielFiles.put("Facteur", "/data/pros/facteur.csv"); + referentielFiles.put("Liste raisonnement", "/data/pros/liste_de_raisonnement.csv"); + referentielFiles.put("Réseau essai ou Observatoire", "/data/pros/reseau_d_essai_ou_observatoire.csv"); return referentielFiles; } diff --git a/src/test/resources/data/pros/commune.csv b/src/test/resources/data/pros/commune.csv new file mode 100644 index 0000000000000000000000000000000000000000..3ef55b139d25fb8232206f2498d8ed96371bd25b --- /dev/null +++ b/src/test/resources/data/pros/commune.csv @@ -0,0 +1,58 @@ +Nom du département;Code postal;Nom de la commune +Maine et Loire;49000;Angers +Gers;32000;Auch +Sarthe;72430;Avoise +Maine et Loire;49071;Beaucouze +Haut Rhin;68750;Bergheim +Drome;26500;Bourg Les valence +Gironde;33140;Cadaujac +Meurthe et Moselle;54280;Champenoux +Puy de Dome;63000;Clermont-Ferrand +Haut Rhin;68000;Colmar +Dakar;18524;Dakar +Rhone;69570;Dardilly +Gers;32810;Duran +Haut Rhin;68190;Ensisheim +Drome;26800;Etoile sur Rhone +Yvelines;78810;Feucherolles +Tarn;81600;Gaillac +Meurthe et Moselle;54380;Gezoncourt +Aude;11430;Gruissan +Indre;36120;Jeu les Bois +Loire Atlantique;44370;La Chapelle Saint Sauveur +Vendee;85190;La Genétouze +Ille et Vilaine;35650;Le Rheu +Ille et Vilaine;35550;Lieuron +Yvelines;78520;Limay +Tarn;81310;Lisle sur Tarn +Cher;18400;Lunery +Ille et Vilaine;35310;Mordelles +Vaucluse;84100;Orange +Yvelines;78630;Orgeval +Tarn et Garonne;82370;Orgueil +Ille et Vilaine;35380;Paimpont +Vaucluse;84420;Piolenc +Cote d Armor;22170;Plelo +Cote d Armor;22740;Pleumeur Gautier +Morbihan;56930;Plumeliau +Ille et Vilaine;35000;Rennes +Gard;30230;Rodilhan +Ille et Vilaine;35133;Romagne +La Reunion;97408;Saint Denis +La Reunion;97438;Sainte Marie +Rhone;69460;Saint Etienne La Varenne +Ille et Vilaine;35140;Saint Georges de Chesne +Maine et Loire;49320;Saint Jean de Mauvrets +La Reunion;97436;Saint Leu +Ille et Vilaine;35350;Saint Meloire des Ondes +Finistere;29250;Saint Pol de Leon +Gers;32310;Saint puy +Dakar;9999;Sangalkam +Ardennes;8220;Seraincourt +Meuse;55160;St Hilaire en Woevre +Yvelines;78850;Thiverval Grignon +Meurthe et Moselle;54505;Vandoeuvre les Nancy +Gard;30600;Vauvert +Rhone;69661;Villefranche sur Saone +Gironde;33883;Villenave d Ornon +Ardennes;8010;Villiers Semeuse diff --git a/src/test/resources/data/pros/departement.csv b/src/test/resources/data/pros/departement.csv new file mode 100644 index 0000000000000000000000000000000000000000..2629718e39067997e8a27e02c927d56adb8ad9a6 --- /dev/null +++ b/src/test/resources/data/pros/departement.csv @@ -0,0 +1,108 @@ +Nom de la région;Nom du département;Numéro du département +Auvergne-Rhone-Alpes;Ain;1 +Hauts-de-France;Aisne;2 +Auvergne-Rhone-Alpes;Allier;3 +Provence Alpes Cote d Azur;Alpes de Haute Provence;4 +Provence Alpes Cote d Azur;Alpes Maritimes;6 +Auvergne-Rhone-Alpes;Ardeche;7 +Grand-Est;Ardennes;8 +Occitanie;Ariege;9 +Grand-Est;Aube;10 +Occitanie;Aude;11 +Occitanie;Aveyron;12 +Grand-Est;Bas Rhin;67 +Provence Alpes Cote d Azur;Bouches du Rhone;13 +Normandie;Calvados;14 +Auvergne-Rhone-Alpes;Cantal;15 +Nouvelle Aquitaine;Charente;16 +Nouvelle Aquitaine;Charente Maritime;17 +Centre-Val-de-Loire;Cher;18 +Nouvelle Aquitaine;Correze;19 +Corse;Corse du sud;2A +Bretagne;Cote d Armor;22 +Bourgogne-Franche Comte;Cote d or;21 +Nouvelle Aquitaine;Creuse;23 +Dakar;Dakar;999 +Nouvelle Aquitaine;Deux Sevres;79 +Nouvelle Aquitaine;Dordogne;24 +Bourgogne-Franche Comte;Doubs;25 +Auvergne-Rhone-Alpes;Drome;26 +Ile de France;Essonne;91 +Normandie;Eure;27 +Centre-Val-de-Loire;Eure et Loir;28 +Bretagne;Finistere;29 +Occitanie;Gard;30 +Occitanie;Gers;32 +Nouvelle Aquitaine;Gironde;33 +DOM TOM (outre mer);Guadeloupe;971 +DOM TOM (outre mer);Guyanne;973 +Ile de France;Haut de Seine;92 +Corse;Haute Corse;2B +Occitanie;Haute Garonne;31 +Auvergne-Rhone-Alpes;Haute Loire;43 +Grand-Est;Haute Marne;52 +Occitanie;Haute Pyrenees;65 +Provence Alpes Cote d Azur;Hautes Alpes;5 +Bourgogne-Franche Comte;Haute Saone;70 +Auvergne-Rhone-Alpes;Haute Savoie;74 +Nouvelle Aquitaine;Haute Vienne;87 +Grand-Est;Haut Rhin;68 +Occitanie;Herault;34 +Bretagne;Ille et Vilaine;35 +Centre-Val-de-Loire;Indre;36 +Centre-Val-de-Loire;Indre et Loire;37 +Auvergne-Rhone-Alpes;Isere;38 +Bourgogne-Franche Comte;Jura;39 +Nouvelle Aquitaine;Landes;40 +DOM TOM (outre mer);La Reunion;974 +Auvergne-Rhone-Alpes;Loire;42 +Pays de la Loire;Loire Atlantique;44 +Centre-Val-de-Loire;Loiret;45 +Centre-Val-de-Loire;Loir et cher;41 +Occitanie;Lot;46 +Nouvelle Aquitaine;Lot et Garonne;47 +Occitanie;Lozere;48 +Pays de la Loire;Maine et Loire;49 +Normandie;Manche;50 +Grand-Est;Marne;51 +DOM TOM (outre mer);Martinique;972 +Pays de la Loire;Mayenne;53 +DOM TOM (outre mer);Mayotte;976 +Grand-Est;Meurthe et Moselle;54 +Grand-Est;Meuse;55 +Bretagne;Morbihan;56 +Grand-Est;Moselle;57 +Bourgogne-Franche Comte;Nievre;58 +Hauts-de-France;Nord;59 +DOM TOM (outre mer);Nouvelle Caledonie;988 +Hauts-de-France;Oise;60 +Normandie;Orne;61 +Ile de France;Paris;75 +Hauts-de-France;Pas de Calais;62 +DOM TOM (outre mer);Polynesie française;987 +Auvergne-Rhone-Alpes;Puy de Dome;63 +Nouvelle Aquitaine;Pyrenees Atlantique;64 +Occitanie;Pyrenees Orientales;66 +Auvergne-Rhone-Alpes;Rhone;69 +DOM TOM (outre mer);Saint Martin;978 +DOM TOM (outre mer);Saint Pierre et Miquelon;975 +Bourgogne-Franche Comte;Saone et Loire;71 +Pays de la Loire;Sarthe;72 +Auvergne-Rhone-Alpes;Savoie;73 +Ile de France;Seine et Marne;77 +Normandie;Seine Maritime;76 +Ile de France;Seine Saint Denis;93 +Hauts-de-France;Somme;80 +Occitanie;Tarn;81 +Occitanie;Tarn et Garonne;82 +Bourgogne-Franche Comte;Territoire de Belfort;90 +Ile de France;Val de Marne;94 +Ile de France;Val d Oise;95 +Provence Alpes Cote d Azur;Var;83 +Provence Alpes Cote d Azur;Vaucluse;84 +Pays de la Loire;Vendee;85 +Nouvelle Aquitaine;Vienne;86 +Grand-Est;Vosges;88 +DOM TOM (outre mer);Wallis et Futuna;986 +Bourgogne-Franche Comte;Yonne;89 +Ile de France;Yvelines;78 diff --git a/src/test/resources/data/pros/echelle_de_prelevement.csv b/src/test/resources/data/pros/echelle_de_prelevement.csv new file mode 100644 index 0000000000000000000000000000000000000000..a57bccbb03a030a44b2a952ca6148e3b732cbfb9 --- /dev/null +++ b/src/test/resources/data/pros/echelle_de_prelevement.csv @@ -0,0 +1,7 @@ +Nom de l'échelle de prélèvement_fr;Nom de l'échelle de prélèvement_en +Bloc;Block +Dispositif;Field experiment +Hors dispositif;Outside of the device +Parcelle elementaire;Elementary plot +Placette;Plot +Traitement;Treatment diff --git a/src/test/resources/data/pros/facteur.csv b/src/test/resources/data/pros/facteur.csv new file mode 100644 index 0000000000000000000000000000000000000000..e6c86040970d51cd3e46b819fbe0ab9f7bf6bfe3 --- /dev/null +++ b/src/test/resources/data/pros/facteur.csv @@ -0,0 +1,12 @@ +Libellé du type de facteur;Libellé du facteur_fr;Libellé du facteur_en;Peut être une information générale de conduite des traitements (oui/non);Sera associé à une nomenclature de PRO (non/oui) +PRO;Dose apport PRO;OR input dose;non;non +Fertilisation minerale;Dose N mineral;N mineral fertilization dose;non;non +PRO;Fractionnement apport PRO;Split of the OR input;non;non +PRO;Frequence apport PRO;OR input frequency;oui;non +PRO;Materiel apport PRO;OR spreading equipment;non;non +PRO;Nature PRO;OR nature;oui;oui +PRO;Periode apport PRO;OR input period;oui;non +Itineraire technique;Profondeur travail sol;Soil ploughing depth;oui;non +Rotation cultures;Rotation legumineuses;Legumes in rotatiion;oui;non +Sans objet;Sans;Sans;oui;oui +Type apport fertilisant;Type apport fertilisant;Fertilizer supply type;oui;non diff --git a/src/test/resources/data/pros/liste_de_raisonnement.csv b/src/test/resources/data/pros/liste_de_raisonnement.csv new file mode 100644 index 0000000000000000000000000000000000000000..828b65be1d7d88cf7c23f575d35fe2bd4dffc270 --- /dev/null +++ b/src/test/resources/data/pros/liste_de_raisonnement.csv @@ -0,0 +1,4 @@ +Libellé de la liste de raisonnement_fr;Libellé de la liste de raisonnement_en +Dose apport PRO;OR input dose management +Frequence apport PRO;OR input frequency management +Mode apport PRO;OR input management diff --git a/src/test/resources/data/pros/pays.csv b/src/test/resources/data/pros/pays.csv new file mode 100644 index 0000000000000000000000000000000000000000..1a8b3fe434c46bea4ac8403571292b6720e493cd --- /dev/null +++ b/src/test/resources/data/pros/pays.csv @@ -0,0 +1,32 @@ +Nom du pays_fr;Nom du pays_en +Allemagne;Germany +Autriche;Austria +Belgique;Belgium +Bulgarie;Bulgaria +Chypre;Cyprus +Croatie;Croatia +Danemark;Denmark +Espagne;Spain +Estonie;Estonia +Finlande;Finland +France;France +Grece;Greece +Hongrie;Hungary +Irlande;Ireland +Italie;Italy +Lettonie;Latvia +Lituanie;Lithuania +Luxembourg;Luxembourg +Malte;Malta +Pays Bas;Netherlands +Pologne;Poland +Portugal;Portugal +Roumanie;Romania +Royaume Uni;United Kingdom +Republique Tcheque;Czech Republic +Slovenie;Slovenia +Suede;Sweden +Slovaquie;Slovakia +Senegal;Senegal +Cote d Ivoire;Ivory Coast +Canada;Canada diff --git a/src/test/resources/data/pros/pro.yaml b/src/test/resources/data/pros/pro.yaml index 74cf990a92adf9ede8805445d89c3d9da2c6c1a7..633b258272936d0c2aac4253a638094209be5332 100644 --- a/src/test/resources/data/pros/pro.yaml +++ b/src/test/resources/data/pros/pro.yaml @@ -19,6 +19,9 @@ compositeReferences: traitements: components: - reference: traitements + lieu: + components: + - reference: type_lieu references: dispositifs: internationalizationName: @@ -99,6 +102,241 @@ references: Type de traitement: Année de début de validité: Année de fin de validité: + type_lieu: + keyColumns: [Libelle du type de lieu_key] + columns: + Libelle du type de lieu_key: + Libelle du type de lieu_fr: + Libelle du type de lieu_en: + Système_projection: + keyColumns: [ Nom du systeme de projection ] + columns: + Nom du systeme de projection: + Definition_fr: + Definition_En: + Type_dispositif: + keyColumns: [ Libelle du type de dispositif_fr ] + columns: + Libelle du type de dispositif_fr: + Libelle du type de dispositif_en: + Echelle_prélèvement: + keyColumns: [ Nom de l'échelle de prélèvement_fr ] + columns: + Nom de l'échelle de prélèvement_fr: + Nom de l'échelle de prélèvement_en: + Type_culture: + keyColumns: [ Libellé du type culture_fr ] + columns: + Libellé du type culture_fr: + Libellé du type culture_en: + Type_document: + keyColumns: [ Libellé du type de document ] + columns: + Libellé du type de document: + Système conduite dispositif: + keyColumns: [ Libellé du système de conduite de l'éssai_fr ] + columns: + Libellé du système de conduite de l'éssai_fr: + Libellé du système de conduite de l'éssai_en: + Liste raisonnement: + keyColumns: [ Libellé de la liste de raisonnement_fr ] + columns: + Libellé de la liste de raisonnement_fr: + Libellé de la liste de raisonnement_en: + Valeur raisonnement: + keyColumns: [ Libellé de la liste de raisonnement_fr, Libellé du raisonnement_fr ] + columns: + Libellé de la liste de raisonnement_fr: + Libellé du raisonnement_fr: + Libellé du raisonnement_en: + Thématique étudiée: + keyColumns: [ Libellé de la thématique étudiée_fr ] + columns: + Libellé de la thématique étudiée_fr: + Libellé de la thématique étudiée_en: + Code_bloc: + keyColumns: [ Code du bloc ] + columns: + Code du bloc: + Code de la parcelle élémentaire: + keyColumns: [ Code de la parcelle élémentaire ] + columns: + Code de la parcelle élémentaire: + Statut_placette: + keyColumns: [ Libellé du statut de la placette_fr ] + columns: + Libellé du statut de la placette_fr: + Libellé du statut de la placette_en: + Réseau essai ou Observatoire: + keyColumns: [ Nom de l'observatoire ] + columns: + Nom de l'observatoire: + Définition_fr: + Définition_en: + Type_traitement: + keyColumns: [ Libellé du type de traitement_fr ] + columns: + Libellé du type de traitement_fr: + Libellé du type de traitement_en: + Type_facteur: + keyColumns: [ Libellé du type de facteur_fr ] + columns: + Libellé du type de facteur_fr: + Libellé du type de facteur_en: + Facteur: + keyColumns: [ Libellé du type de facteur,Libellé du facteur_fr ] + columns: + Libellé du type de facteur: + Libellé du facteur_fr: + Libellé du facteur_en: + Peut être une information générale de conduite des traitements (oui/non): + Sera associé à une nomenclature de PRO (non/oui): + Role de la personne ressource: + keyColumns: [ Libellé du rôle de la personne ressource_fr ] + columns: + Libellé du rôle de la personne ressource_fr: + Libellé du rôle de la personne ressource_en: + Type_structure: + keyColumns: [ Libellé du type de structure_fr ] + columns: + Libellé du type de structure_fr: + Libellé du type de structure_en: + Role_structure: + keyColumns: [ Libellé du rôle de la structure_fr ] + columns: + Libellé du rôle de la structure_fr: + Libellé du rôle de la structure_en: + Pays: + keyColumns: [ Nom du pays_fr ] + columns: + Nom du pays_fr: + Nom du pays_en: + Region: + keyColumns: [ Nom du pays,Nom de la région ] + columns: + Nom du pays: + Nom de la région: + Departement: + keyColumns: [ Nom de la région,Nom du département ] + columns: + Nom de la région: + Nom du département: + Numéro du département: + Commune: + keyColumns: [ Nom du département,Code postal,Nom de la commune ] + columns: + Nom du département: + Code postal: + Nom de la commune: + Station expérimentale: + keyColumns: [ Nom de la station expérimentale ] + columns: + Nom de la station expérimentale: + Structure: + keyColumns: [ Nom de la structure,Equipe et/ou service ] + columns: + Libellé du type de structure: + Nom de la structure: + Equipe et/ou service: + No, nom de la rue, ...: + Code postal: + Commune: + No Tél: + Site web ou reseaux sociaux: + Est signataire de la convention ou protocole d'accord (oui/non): + Numéro, nom du document, date de signature: + Personne ressource: + keyColumns: [ acbb ] + columns: + acbb: + Modalité du facteur: + keyColumns: [ Libellé du type de facteur,Libellé du facteur,Valeur de la modalité ] + columns: + Libellé du type de facteur: + Libellé du facteur: + Valeur de la modalité: + Commentaire: + Lieu implantation: + keyColumns: [ Nom du lieu ] + columns: + Nom du lieu: + Libellé du type de lieu: + Nom de la commune (Code postal): + Numéro de cadastre: + Nom de la station expérimentale: + Système de projection: + Latitude: + Longitude: + Application traitements Nom lieu sur parcelles: + keyColumns: [ Code du dispositif (Nom du lieu),Code de la parcelle élémentaire,Code du traitement ] + columns: + Code du dispositif (Nom du lieu): + Code de la parcelle élémentaire: + Code du traitement: + Numéro de répétition: + Libellé du Facteur: + Valeur de la Modalité: + Année de début d'application du traitement: + Année de fin d'application du traitement: + Protocole général: + keyColumns: [ Nom protocole général ] + columns: + Nom protocole général: + Année de début d'application du protocole général: + Année de fin d'application du protocole général: + Utilisation du guide méthodologique Réseau PRO après 2015 (oui/non): + Raisonnements par protocole: + keyColumns: [ Nom du protocole,Libellé de la liste de raisonnement,Valeur du raisonnement ] + columns: + Nom du protocole: + Libellé de la liste de raisonnement: + Valeur du raisonnement: + Commentaire: + Objectif des thématiques étudiées par protocoles: + keyColumns: [ Nom du protocole,Libellé de la thématique étudiée,Objectif de la thématique_fr ] + columns: + Nom du protocole: + Libellé de la thématique étudiée: + Objectif de la thématique_fr: + Objectif de la thématique_en: + Protocoles des dispositifs: + keyColumns: [ Code du dispositif (Nom du lieu),Nom du protocole ] + columns: + Code du dispositif (Nom du lieu): + Nom du protocole: + Association des statuts de placettes aux placettes: + keyColumns: [ Code de la parcelle élémentaire - Code du dispositif (Nom du lieu),Code de la placette,Libellé du statut de la placette ] + columns: + Code de la parcelle élémentaire - Code du dispositif (Nom du lieu): + Code de la placette: + Libellé du statut de la placette: + Rôle des personnes ressources par dispositif: + keyColumns: [ acbb ] + columns: + acbb: + Affiliation à un réseau d essais: + keyColumns: [ Code du dispositif (Nom du lieu),Nom du réseau d'essai ] + columns: + Code du dispositif (Nom du lieu): + Nom du réseau d'essai: + Structures des stations expérimentales: + keyColumns: [ Nom de la structure,Précision (pôle et/ou unité et/ou équipe),Nom de la station expérimentale ] + columns: + Nom de la structure: + Précision (pôle et/ou unité et/ou équipe): + Nom de la station expérimentale: + Structures des observatoires: + keyColumns: [ Nom de la structure,Précision (pôle et/ou unité et/ou équipe),Observatoire ] + columns: + Nom de la structure: + Précision (pôle et/ou unité et/ou équipe): + Observatoire: + Structures des lieux: + keyColumns: [ Nom de la structure,Précision (pôle et/ou unité et/ou équipe),Nom du lieu ] + columns: + Nom de la structure: + Précision (pôle et/ou unité et/ou équipe): + Nom du lieu: dataTypes: donnees_prelevement_pro: internationalizationName: @@ -339,4 +577,4 @@ dataTypes: - header: "Code Expression Humidité" boundTo: variable: context - component: Code Expression Humidité \ No newline at end of file + component: Code Expression Humidité diff --git a/src/test/resources/data/pros/region.csv b/src/test/resources/data/pros/region.csv new file mode 100644 index 0000000000000000000000000000000000000000..04fab969573ce38a04e82d3548e3c4a06f6688e9 --- /dev/null +++ b/src/test/resources/data/pros/region.csv @@ -0,0 +1,17 @@ +Nom du pays;Nom de la région +France;Auvergne-Rhone-Alpes +France;Bourgogne-Franche Comte +France;Bretagne +France;Centre-Val-de-Loire +France;Corse +Senegal;Dakar +France;DOM TOM (outre mer) +France;Grand-Est +France;Hauts-de-France +France;Ile de France +France;Normandie +France;Nouvelle Aquitaine +France;Occitanie +France;Pays de la Loire +France;Provence Alpes Cote d Azur +Canada;Quebec diff --git a/src/test/resources/data/pros/reseau_d_essai_ou_observatoire.csv b/src/test/resources/data/pros/reseau_d_essai_ou_observatoire.csv new file mode 100644 index 0000000000000000000000000000000000000000..4c6002181ea386f8a7140f8c546c11fc728dff10 --- /dev/null +++ b/src/test/resources/data/pros/reseau_d_essai_ou_observatoire.csv @@ -0,0 +1,5 @@ +Nom de l'observatoire;Définition_fr;Définition_en +ANAEE France;ANAlyses et Experimentations sur les Ecosystemes France;French ANAlysis and Experiment on Ecosystems +Reseau MO;; +Reseau PRO;Reseau operationnel essais au champ etudiant la valeur agronomique et les impacts environnementaux et sanitaires des Produits Résiduaires Organiques recycles en agriculture;French operational network of field experiments devoted to the study of the organic residue recycling in agriculture +SOERE PRO;Systeme Observation et Experimentation pour la Recherche en Environnement sur les impacts environnementaux du recyclage de produits residuaires organiques (PRO) sur les ecosystemes cultives;Long term field experiment network for research on the recycling of organic residues in agriculture diff --git a/src/test/resources/data/pros/role_de_la_personne_ressource.csv b/src/test/resources/data/pros/role_de_la_personne_ressource.csv new file mode 100644 index 0000000000000000000000000000000000000000..fad0cae3df7aabc467f264da61dbfac3c1d77eee --- /dev/null +++ b/src/test/resources/data/pros/role_de_la_personne_ressource.csv @@ -0,0 +1,7 @@ +Libellé du rôle de la personne ressource_fr;Libellé du rôle de la personne ressource_en +Coordinateur ou chef de projet;Coordinator +Responsable scientifique;Scientific supervisor +Responsable technique;Technical supervisor +Intervenant;Operator +Gestionnaire dispositif;Device manager +Partenaire scientifique;Scientific partner diff --git a/src/test/resources/data/pros/station_experimentale.csv b/src/test/resources/data/pros/station_experimentale.csv new file mode 100644 index 0000000000000000000000000000000000000000..a5edf67acfd60e7f51dbe5eec4fff9e9c031a320 --- /dev/null +++ b/src/test/resources/data/pros/station_experimentale.csv @@ -0,0 +1,25 @@ +Nom de la station expérimentale +Arvalis La Jaillere +CATE +CIRAD La Reunion +CIRAD Les Colimacons +Colombier +Domaine experimental de la Chambre d Agriculture du Vaucluse +Essai Lieuron +Ferme de Chaumontagne +INRA Colmar +INRA Domaine experimental de Couhins +INRA Domaine experimental de La Bouzule +INRA Grignon +INRA Rennes +INRA Rennes / Lycee du Rheu +Pas de station experimentale +Plateforme experimentale de la Hourre +Plumeliau 56 +Site experimental du CREAB +Station du Glazic SECL 22 +Station La Rimbaudais CER 35 +INRA UMR SAS Rennes +INRA Colmar - Domaine expérimental SEAV Colmar +Z_Inconnue +ISRA diff --git a/src/test/resources/data/pros/systeme_de_conduite_d_un_dispositif.csv b/src/test/resources/data/pros/systeme_de_conduite_d_un_dispositif.csv new file mode 100644 index 0000000000000000000000000000000000000000..162d778a3726a9b5e8fbb1db79964755a495c78b --- /dev/null +++ b/src/test/resources/data/pros/systeme_de_conduite_d_un_dispositif.csv @@ -0,0 +1,4 @@ +Libellé du système de conduite de l'essai_fr;Libellé du système de conduite de l'essai_en +Bas niveaux d'intrants;Low levels of inputs +Biologique;Organic farming +Non biologique;Non organic farming diff --git a/src/test/resources/data/pros/systeme_de_projection.csv b/src/test/resources/data/pros/systeme_de_projection.csv new file mode 100644 index 0000000000000000000000000000000000000000..56ef14f6b9656822b0b61a1fa08cad12465417a5 --- /dev/null +++ b/src/test/resources/data/pros/systeme_de_projection.csv @@ -0,0 +1,3 @@ +Nom du système de projection;Définition_fr;Définition_en;; +GWS84;Systeme international; latitude et longitude en degres;Systeme international; latitude et longitude en degres +Lambert 93;Systeme français; projection cartographique en m;Systeme français; projection cartographique en m diff --git a/src/test/resources/data/pros/thematique_etudiee.csv b/src/test/resources/data/pros/thematique_etudiee.csv new file mode 100644 index 0000000000000000000000000000000000000000..534d05f6686e798fa26bae652d13c9cb10adbdb9 --- /dev/null +++ b/src/test/resources/data/pros/thematique_etudiee.csv @@ -0,0 +1,22 @@ +Libellé de la thématique étudiée_fr;Libellé de la thématique étudiée_en;; +Azote : court terme (inferieur a 3 ans);Nitrogen: short term (lower than 3 years);; +Azote : long terme (superieur a 3 ans);Nitrogen: long term (longer than 3 years);; +Phosphore;Phosphorus;; +Potassium;Potassium;; +Magnesium; calcium;Magnesium; calcium +Soufre;Sulphur;; +Matiere organique (C; N);Organic matter (C; N) +Physique du sol;Physical effects;; +pH;pH;; +Salinite;Salinity;; +Elements traces metalliques;Trace elements;; +Contaminants traces organiques;Organic contaminants;; +Pathogenes;Pathogens;; +Qualite productions agricoles;Agricultural production quality;; +Biologie du sol;Soil biology;; +Ecotoxicologie;Ecotoxicology;; +Socio-economie;Socio-economy;; +Qualite eau;Water quality;; +Emissions gazeuses;Gaz emissions;; +Systeme de culture;Crop system;; +Valeur agronomique & impacts environnementaux;Valeur agronomique & impacts environnementaux;; diff --git a/src/test/resources/data/pros/type_de_culture.csv b/src/test/resources/data/pros/type_de_culture.csv new file mode 100644 index 0000000000000000000000000000000000000000..23dbb353db7f42faefa042873b2d191025389b2f --- /dev/null +++ b/src/test/resources/data/pros/type_de_culture.csv @@ -0,0 +1,16 @@ +Libellé du type de culture_fr;Libellé du type de culture_en +Arboriculture fruitiere;Fruit growing +Cultures energetiques;Energy crops +Cultures legumieres;Vegetable crops +Cultures tropicales ou exotiques annuelles;Annual tropical or exotic crops +Cultures tropicales ou exotiques perennes / semi-perennes;Perennial / semi-perennial tropical or exotic crops +Grandes cultures;Field crops +Prairie;Prairie +Prairie permanente;Meadow +Rotation a dominante cultures legumieres;Rotation with dominant vegetable crops +Rotation a dominante grandes cultures;Rotation with dominant field crops +Rotation a dominante prairie;Rotation with dominant meadow +Sol nu;Bare soil +Sylviculture;Silviculture +Viticulture;Vine growing +Z_Autre;Z_Autre diff --git a/src/test/resources/data/pros/type_de_dispositif.csv b/src/test/resources/data/pros/type_de_dispositif.csv new file mode 100644 index 0000000000000000000000000000000000000000..7cfdbbbccdceebd0d9b0b894e22607ebe6db5c73 --- /dev/null +++ b/src/test/resources/data/pros/type_de_dispositif.csv @@ -0,0 +1,9 @@ +Libellé du type de dispositif_fr;Libellé du type de dispositif_en +Alpha-plan;Alpha-plan +Blocs;Blocks +Carre latin;Latin square +Criss-cross;Criss-cross +Demonstratif sans repetition;Demonstrative trial +Essai systeme sans repetition;System trial without repetition +Randomisation totale;Randomised +Split-plot;Split-plot diff --git a/src/test/resources/data/pros/type_de_document.csv b/src/test/resources/data/pros/type_de_document.csv new file mode 100644 index 0000000000000000000000000000000000000000..5e2d9f68eea5aee67b8e249f2f5138e82d49545f --- /dev/null +++ b/src/test/resources/data/pros/type_de_document.csv @@ -0,0 +1,11 @@ +Libellé du type de document +Compte rendu / rapport experimentation +Fichier compilation donnees SOERE PRO +Fichier saisie Reseau PRO +Guide Methodologique Reseau PRO +Image +Inventaire essais Reseau PRO +Plan dispositif +Protocole conduite dispositif +Rapport stage +Document qualité diff --git a/src/test/resources/data/pros/type_de_facteur.csv b/src/test/resources/data/pros/type_de_facteur.csv new file mode 100644 index 0000000000000000000000000000000000000000..b3f4208cc7310b2fa4daa11eb527efa31b117bc0 --- /dev/null +++ b/src/test/resources/data/pros/type_de_facteur.csv @@ -0,0 +1,8 @@ +Libellé du type de facteur_fr;Libellé du type de facteur_en +Fertilisation minerale;Mineral fertilization +Itineraire technique;Technical operations +Plantation plantes perennes / semi-perenne;Planting factors of perennial and semi-perennial crops +PRO;Organic residue +Rotation cultures;Crop rotation +Sans objet;Sans objet +Type apport fertilisant;Fertilizer supply type diff --git a/src/test/resources/data/pros/type_de_structure.csv b/src/test/resources/data/pros/type_de_structure.csv new file mode 100644 index 0000000000000000000000000000000000000000..d57f884b665144fd55b5e54e3434bd1b6e17b980 --- /dev/null +++ b/src/test/resources/data/pros/type_de_structure.csv @@ -0,0 +1,11 @@ +Libellé du type de structure_fr;Libellé du type de structure_en +Agriculteur;Farmer +Autre structure;Autre structure +Chambre agriculture;Agriculture chamber +Collectivite territoriale;Territorial community +Etablissement enseignement secondaire;Secondary education establishment +Etablissement enseignement superieur;University +Industriel;Research and development industry +Institut recherche;Research institute +Institut technique;Technical institute +Organisme transfert;Transfert structure diff --git a/src/test/resources/data/pros/type_de_traitement.csv b/src/test/resources/data/pros/type_de_traitement.csv new file mode 100644 index 0000000000000000000000000000000000000000..837cb62c44b47a24b0cf4fcfeae733c4e82731c0 --- /dev/null +++ b/src/test/resources/data/pros/type_de_traitement.csv @@ -0,0 +1,5 @@ +Libellé du type de traitement_fr;Libellé du type de traitement_en +Fixe;Fix +Fixe exterieur du dispositif;Fix outside the device +Tournant;Turning +Tournant exterieur du dispositif;Turning outside the device diff --git a/src/test/resources/data/pros/type_lieu.csv b/src/test/resources/data/pros/type_lieu.csv new file mode 100644 index 0000000000000000000000000000000000000000..9693adb42bbb06f5c133c2e83e6cf438297782cf --- /dev/null +++ b/src/test/resources/data/pros/type_lieu.csv @@ -0,0 +1,8 @@ +Libelle du type de lieu_key;Libelle du type de lieu_fr;Libelle du type de lieu_en +z_autre;z_autre;Z_Autre +jardin;jardin;Garden +parcelle_agricole;parcelle agricole;Agricultural plot +parcelle_forestiere;parcelle forestiere;Parcelle forestiere +pepiniere;pepiniere;Nursery +serre;serre;Greenhouse +toits_terrasses;toits_terrasses;Roof / terrace diff --git a/src/test/resources/data/pros/valeur_de_raisonnement.csv b/src/test/resources/data/pros/valeur_de_raisonnement.csv new file mode 100644 index 0000000000000000000000000000000000000000..ee05eef3cf7c4d225c57df3fef021fe717b02c33 --- /dev/null +++ b/src/test/resources/data/pros/valeur_de_raisonnement.csv @@ -0,0 +1,12 @@ +Libellé de la liste de raisonnement;Libellé du raisonnement_fr;Libellé du raisonnement_en +Dose apport PRO;Dose de carbone;Carbon input dose +Dose apport PRO;Dose de potassium;Potassium input dose +Dose apport PRO;Dose en matiere brute;Content in raw materiel +Dose apport PRO;Dose en matiere seche;Content in dry matter +Dose apport PRO;Dose azote;Nitrogen input dose +Dose apport PRO;Dose de phosphore;Phosphorus input dose +Frequence apport PRO;Frequence apport PRO;Organic residue input frequency +Mode apport PRO;Materiel epandage;Spreading equipment +Mode apport PRO;Mode enfouissement;Incorporation mode +Mode apport PRO;Fractionnement apport;Input splitting +Mode apport PRO;Localisation apport;Input location diff --git a/ui2/src/services/InternationalisationService.js b/ui2/src/services/InternationalisationService.js index 10d678f365ef3267a0c3d382cb548da0294ed413..0309f050610b36840cdfe611955faced51e84e95 100644 --- a/ui2/src/services/InternationalisationService.js +++ b/ui2/src/services/InternationalisationService.js @@ -1,4 +1,4 @@ -import {Fetcher, LOCAL_STORAGE_LANG} from "./Fetcher"; +import { Fetcher, LOCAL_STORAGE_LANG } from "./Fetcher"; export class InternationalisationService extends Fetcher { static INSTANCE = new InternationalisationService(); @@ -7,19 +7,18 @@ export class InternationalisationService extends Fetcher { return (applicationInternationalization?.[localStorage.getItem(LOCAL_STORAGE_LANG)]) ?? defautName ; } localeDatatypeName(datatype) { + console.log(datatype); if (datatype.internationalizationName != null) { return datatype.internationalizationName[localStorage.getItem(LOCAL_STORAGE_LANG)]; - }else { + } else { return datatype.name; } } localeReferenceName(reference) { - console.log(localStorage.getItem(LOCAL_STORAGE_LANG)) - if(reference.internationalizationName != null) + if (reference.internationalizationName != null) return reference.internationalizationName[localStorage.getItem(LOCAL_STORAGE_LANG)]; - else - return reference.label; + else return reference.label; } -} \ No newline at end of file +} diff --git a/ui2/src/views/authorizations/DataTypeAuthorizationInfoView.vue b/ui2/src/views/authorizations/DataTypeAuthorizationInfoView.vue index 246542e174d9379321aeb97a79a83a094ccde5e9..005d5134fa4d3eb745b28ffde9f4f5c5ce2529fc 100644 --- a/ui2/src/views/authorizations/DataTypeAuthorizationInfoView.vue +++ b/ui2/src/views/authorizations/DataTypeAuthorizationInfoView.vue @@ -5,7 +5,7 @@ <h1 class="title main-title"> <span v-if="authorizationId === 'new'">{{ $t("titles.data-type-new-authorization", { - dataType: localeDatatypeName(dataTypeId) || dataTypeId, + dataType: application.dataTypeName || dataTypeId, }) }}</span> </h1> @@ -271,6 +271,8 @@ import { UserPreferencesService } from "@/services/UserPreferencesService"; import { ValidationObserver, ValidationProvider } from "vee-validate"; import { Component, Prop, Vue, Watch } from "vue-property-decorator"; import PageView from "../common/PageView.vue"; +import { ApplicationResult } from "@/model/ApplicationResult"; +import { InternationalisationService } from "@/services/InternationalisationService"; @Component({ components: { PageView, SubMenu, CollapsibleTree, ValidationObserver, ValidationProvider }, @@ -283,6 +285,7 @@ export default class DataTypeAuthorizationInfoView extends Vue { authorizationService = AuthorizationService.INSTANCE; alertService = AlertService.INSTANCE; applicationService = ApplicationService.INSTANCE; + internationalisationService = InternationalisationService.INSTANCE; userPreferencesService = UserPreferencesService.INSTANCE; periods = { @@ -293,7 +296,7 @@ export default class DataTypeAuthorizationInfoView extends Vue { }; authorizations = []; - application = {}; + application = new ApplicationResult(); users = []; dataGroups = []; authorizationScopes = []; @@ -347,6 +350,13 @@ export default class DataTypeAuthorizationInfoView extends Vue { async init() { try { this.application = await this.applicationService.getApplication(this.applicationName); + this.application = { + ...this.application, + localName: this.internationalisationService.localeApplicationName(this.application), + dataTypeName: this.internationalisationService.localeDatatypeName( + this.application.dataTypes[this.dataTypeId] + ), + }; const grantableInfos = await this.authorizationService.getAuthorizationGrantableInfos( this.applicationName, this.dataTypeId diff --git a/ui2/src/views/authorizations/DataTypeAuthorizationsView.vue b/ui2/src/views/authorizations/DataTypeAuthorizationsView.vue index 21585bcb1496fcae7f7b3be874f9ec4195ec2e04..ec80ba94cb0b4bf751f2b154c5a4c6b67dcdc588 100644 --- a/ui2/src/views/authorizations/DataTypeAuthorizationsView.vue +++ b/ui2/src/views/authorizations/DataTypeAuthorizationsView.vue @@ -4,7 +4,7 @@ <h1 class="title main-title"> {{ $t("titles.data-type-authorizations", { - dataType: localeDatatypeName(dataTypeId) || dataTypeId, + dataType: application.dataTypeName || dataTypeId, }) }} </h1> @@ -83,6 +83,8 @@ import { ApplicationService } from "@/services/rest/ApplicationService"; import { AuthorizationService } from "@/services/rest/AuthorizationService"; import { Component, Prop, Vue } from "vue-property-decorator"; import PageView from "../common/PageView.vue"; +import { ApplicationResult } from "@/model/ApplicationResult"; +import { InternationalisationService } from "@/services/InternationalisationService"; @Component({ components: { PageView, SubMenu }, @@ -92,11 +94,12 @@ export default class DataTypeAuthorizationsView extends Vue { @Prop() applicationName; authorizationService = AuthorizationService.INSTANCE; + internationalisationService = InternationalisationService.INSTANCE; alertService = AlertService.INSTANCE; applicationService = ApplicationService.INSTANCE; authorizations = []; - application = {}; + application = new ApplicationResult(); scopes = []; periods = { FROM_DATE: this.$t("dataTypeAuthorizations.from-date"), @@ -137,6 +140,13 @@ export default class DataTypeAuthorizationsView extends Vue { async init() { try { this.application = await this.applicationService.getApplication(this.applicationName); + this.application = { + ...this.application, + localName: this.internationalisationService.localeApplicationName(this.application), + dataTypeName: this.internationalisationService.localeDatatypeName( + this.application.dataTypes[this.dataTypeId] + ), + }; this.authorizations = await this.authorizationService.getDataAuthorizations( this.applicationName, this.dataTypeId diff --git a/ui2/src/views/datatype/DataTypeTableView.vue b/ui2/src/views/datatype/DataTypeTableView.vue index b178940710477a587c8a2a2d4c6f6dfa7bc00fa1..1772dac3b45b43c7bd837b72355dee2776c6197e 100644 --- a/ui2/src/views/datatype/DataTypeTableView.vue +++ b/ui2/src/views/datatype/DataTypeTableView.vue @@ -519,7 +519,9 @@ export default class DataTypeTableView extends Vue { this.application = { ...this.application, localName: this.internationalisationService.localeApplicationName(this.application), - localDatatypeName : this.internationalisationService.localeDatatypeName(this.application.dataTypes[this.dataTypeId]) + localDatatypeName: this.internationalisationService.localeDatatypeName( + this.application.dataTypes[this.dataTypeId] + ), }; await this.initDatatype(); } diff --git a/ui2/src/views/references/ReferenceTableView.vue b/ui2/src/views/references/ReferenceTableView.vue index 9da116ab8d29793b11a0dc6391d4b65ce2554125..a77b9a5dc2e24f30598dd475f3b13e2828c7c84b 100644 --- a/ui2/src/views/references/ReferenceTableView.vue +++ b/ui2/src/views/references/ReferenceTableView.vue @@ -2,7 +2,7 @@ <PageView class="with-submenu"> <SubMenu :root="application.localName || application.title" :paths="subMenuPaths" /> <h1 class="title main-title"> - {{ $t("titles.references-data", { refName: application.localRefName ||reference.label }) }} + {{ $t("titles.references-data", { refName: application.localRefName || reference.label }) }} </h1> <div v-if="reference && columns"> @@ -84,11 +84,13 @@ export default class ReferenceTableView extends Vue { this.application = { ...this.application, localName: this.internationalisationService.localeApplicationName(this.application), - localRefName: this.internationalisationService.localeReferenceName(this.application.references[this.refId]), + localRefName: this.internationalisationService.localeReferenceName( + this.application.references[this.refId] + ), }; const references = await this.referenceService.getReferenceValues( this.applicationName, - this.refId, + this.refId ); if (references) { this.referenceValues = references.referenceValues;