SPW-DIG / metawal-core-geonetwork

Metawal - Catalogue pour l'information géographique de Wallonie
http://metawal.wallonie.be
GNU General Public License v2.0
3 stars 1 forks source link

Batch editing / Adaptation TG2 #497

Closed stephyritz closed 4 years ago

stephyritz commented 4 years ago

Après la mise en production de GN 3.8.2 sur Metawal, voici les différents points qui posent encore problème pour la conformité TG2 à ce jour :

stephyritz commented 4 years ago

Ces deux points semblent pouvoir être résolus grâce au batch editing. J'ouvre ici ce ticket pour que nous puissions discuter ensemble des process à lancer.

stephyritz commented 4 years ago

Pour le premier point, merci François, le batch editing avec les paramètres suivants semble fonctionner. ajout_md_LegalConstraints

Pour l'instant, test effectué sur une fiche dupliquée en environnement de test. Si c'est concluant, je fais tourner ceci en prod dès aujourd'hui et le notifierai ici.

stephyritz commented 4 years ago

Le second point est plus délicat car il concerne plus de fiches. Soit on le fait via le batch editing (ce qui est bien car pas besoin de démarche auprès du DTIC), soit on fait un REPLACE en SQL dans la DB.

Mon idée est de remplacer :

                     <mdq:specification>
                        <cit:CI_Citation>
                           <cit:title>
                              <gcx:Anchor xlink:href="http://data.europa.eu/eli/reg/2010/1089/2014-12-31">RÈGLEMENT (UE) N o 1089/2010 DE LA COMMISSION du 23 novembre 2010 portant modalités d'application de la directive 2007/2/CE du Parlement européen et du Conseil en ce qui concerne l'interopérabilité des séries et des services de données géographiques</gcx:Anchor>
                           </cit:title>

Par :

                     <gmd:specification xlink:href="http://inspire.ec.europa.eu/id/citation/ir/reg-1089-2010">
                        <cit:CI_Citation>
                           <cit:title>
                              <gcx:Anchor xlink:href="http://data.europa.eu/eli/reg/2010/1089/2014-12-31">RÈGLEMENT (UE) N o 1089/2010 DE LA COMMISSION du 23 novembre 2010 portant modalités d'application de la directive 2007/2/CE du Parlement européen et du Conseil en ce qui concerne l'interopérabilité des séries et des services de données géographiques</gcx:Anchor>
                           </cit:title>

Est-ce que cela vous semble correct ? Si on le fait en batch editing, je vais devoir "saucissonner" afin de ne pas avoir de problèmes liés au nombre de fiche (d'abord les services, puis les séries et enfin "couper" le groupe des datas en plusieurs lots). Qu'en pensez-vous ?

Le DTIC avait fait un backup de la DB avant la mise en prod de vendredi donc à mon avis pas grand risque de casser quelque chose, au pire on restaure la table metadata du dump.

fxprunayre commented 4 years ago

gmd:specification c'est du ISO19139

fxprunayre commented 4 years ago

La modif c'est juste l'ajout de l'ancre dans la spec ? <mdq:specification xlink:href="http://inspire.ec.europa.eu/id/citation/ir/reg-1089-2010">

stephyritz commented 4 years ago

Oui pardon, copier/coller depuis le mauvais endroit... C'est effectivement mdq:specification. Et, oui, il s'agit simplement de rajouter juste le href mais j'ai rajouté le title ensuite car il faut seulement rajouter ce paramètre à la spec 1089.. C'est un peu ridicule parce que le lien ne renvoie vers rien pour le moment mais bon... On est un peu obligé si on veut être full conforme "façon harvesting" (ça passe à l'heure actuelle sans le hrerf dans l'outil de validation).

fxprunayre commented 4 years ago

J'opterai pour un update en base qui va prendre 1sec non ?

stephyritz commented 4 years ago

Premier point traité en prod via la commande batchedit ci-dessus. A priori, process réalisé avec succès.

stephyritz commented 4 years ago

Je préfère aussi cette méthode qui a pour seul désavantage que nous ne sommes pas autonome sur le sujet. La commande pourrait être de ce type :

UPDATE metadata SET data = replace(data,'<mdq:specification>
                        <cit:CI_Citation>
                           <cit:title>
                              <gcx:Anchor xlink:href="http://data.europa.eu/eli/reg/2010/1089/2014-12-31">RÈGLEMENT (UE) N o 1089/2010 DE LA COMMISSION du 23 novembre 2010 portant modalités d'application de la directive 2007/2/CE du Parlement européen et du Conseil en ce qui concerne l'interopérabilité des séries et des services de données géographiques</gcx:Anchor>','<mdq:specification xlink:href="http://inspire.ec.europa.eu/id/citation/ir/reg-1089-2010">
                        <cit:CI_Citation>
                           <cit:title>
                              <gcx:Anchor xlink:href="http://data.europa.eu/eli/reg/2010/1089/2014-12-31">RÈGLEMENT (UE) N o 1089/2010 DE LA COMMISSION du 23 novembre 2010 portant modalités d'application de la directive 2007/2/CE du Parlement européen et du Conseil en ce qui concerne l'interopérabilité des séries et des services de données géographiques</gcx:Anchor>')
WHERE data LIKE '%gco:CharacterStringReporting INSPIRE</gco:CharacterString>%';

Le where est peut-être pas nécessaire mais bon.. Est-ce que cette requête vous semble correcte ? D'ailleurs, est-ce fondamentale de conserver les indentations et les sauts de lignes dans la requête SQL ? @Arnaud, je crois qu'avec le restore de DB en test mes droits, même en visu, ont été écrasés. Tu as toujours accès via pgadmin toi ? Si c'est le cas, tu pourrais peut-être testé une telle requête dans l'environnement de test. Si ça va bien, on demandera à Laurent Bury de la jouer en Prod dès demain.

davinciagf commented 4 years ago

Ok sur le principe mais ce type de requête en SQL risque de planter à cause des CR du xml. Je regarde cela.

davinciagf commented 4 years ago

La requête peut être réalisé sur base de la fonction regex_replace (voir https://www.postgresql.org/docs/9.4/functions-matching.html) et en utilisant POSIX (voir https://www.regular-expressions.info/posix.html) pour les expressions regulières.

Résultat:

Exemple de test (voir http://metawal4.test.wallonie.be/geonetwork/srv/eng/catalog.search;jsessionid=91E7F9A09FEBADE157FE7A9C426727C3#/metadata/aaeae4fe-17c7-4683-8aec-6a5053b18796)

` UPDATE metadata SET data = regexp_replace(data,'[[:space:]][[:space:]][[:space:]]*<gcx:Anchor\sxlink:href="http:\/\/data.europa.eu\/eli\/reg\/2010\/1089\/2014-12-31">','

','g')WHERE data LIKE '%Reporting INSPIRE%' and uuid ='aaeae4fe-17c7-4683-8aec-6a5053b18796'; ` Avis - Ok pour passer sur l'ensemble des MTD?
stephyritz commented 4 years ago

Parfait! On peut jouer cette requête sur la DB de test dans son ensemble.

davinciagf commented 4 years ago

Réalisé sur 214 fiches en test (note : backup20191203 - fait avant les modifs)

stephyritz commented 4 years ago

Ok ça m'a l'air tout bon. Je vais faire un ticket au DTIC pour le joeur en valid/pro et je vais en profiter pour synchroniser les DB des deux environnements à partir du contenu de la DB de prod. Je vous tiens au courant.

stephyritz commented 4 years ago

Par ailleurs, on est peut-être pas à l'abri de devoir faire cette manipulation également pour les autres textes réglementaires cités dans la partie qualité. Par exemple :

              <gmd:specification xlink:href="http://inspire.ec.europa.eu/id/citation/ir/reg-976-2009">
                <gmd:CI_Citation>
                  <gmd:title>
                    <gmx:Anchor xlink:href="http://data.europa.eu/eli/reg/2009/976">Commission Regulation (EC) No 976/2009 of 19 October 2009 implementing Directive 2007/2/EC of the European Parliament and of the Council as regards the Network Services</gmx:Anchor>

Je n'ai pas vraiment la possibilité de faire tous les tests nécessaires car cette obligation semble ne ressortir que au moment du harvesting (qui prend environ 3 jour à être fini) et pas via les outils de validation. Bon, maintenant que nous avons la commande SQL qui va bien, nous pourrons être assez réactif dans ce cas.

On verra bien, on va déjà faire ça pour la première référence sur l'interopérabilité.

stephyritz commented 4 years ago

Script DB exécuté à l'instant en prod par le DTIC. Je lance un nouveau harvesting européen ce soir.