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

Le process en batch add ajoute 2 éléments #732

Closed vbombaerts closed 2 years ago

vbombaerts commented 2 years ago

Quand joue un process add et que l'élément n'existe pas encore dans le xml, le process en ajoute 2 (dont un vide)

Originally posted by @vbombaerts in https://github.com/SPW-DIG/metawal-core-geonetwork/issues/728#issuecomment-1085659194

fxprunayre commented 2 years ago

To reproduce

curl 'http://localhost:8080/geonetwork/srv/api/records/batchediting/preview?diffType=patch&uuids=db07463b-6769-401e-944b-f22e2e3bcc26' \
  -H 'Accept: application/json, text/plain, */*' \
  -H 'X-XSRF-TOKEN: 8ad98c39-e5fc-487e-8f52-6b208a116caa' \
  -H 'Accept-Language: eng' \
  -H 'Content-Type: application/json;charset=UTF-8' \
  -H 'Cookie: XSRF-TOKEN=8ad98c39-e5fc-487e-8f52-6b208a116caa; JSESSIONID=node015sjv31fmd9af1urywim8a048p1.node0; serverTime=1649321454718; sessionExpiry=1649323554718' \
  --data-raw $'[{"xpath":"/mdb:distributionInfo/mrd:MD_Distribution/mrd:distributor[1]","value":"<gn_add><mrd:distributor xmlns:mrd=\\"http://standards.iso.org/iso/19115/-3/mrd/1.0\\" xmlns:cit=\\"http://standards.iso.org/iso/19115/-3/cit/2.0\\" xmlns:gco=\\"http://standards.iso.org/iso/19115/-3/gco/1.0\\"><mrd:MD_Distributor><mrd:distributorContact><cit:CI_Responsibility><cit:role><cit:CI_RoleCode codeList=\\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\\" codeListValue=\\"distributor\\"/></cit:role><cit:party><cit:CI_Organisation><cit:name><gco:CharacterString>Institut Wallon de l\'Evaluation, de la Prospective et de la Statistique (IWEPS)</gco:CharacterString></cit:name><cit:contactInfo><cit:CI_Contact><cit:address><cit:CI_Address><cit:deliveryPoint><gco:CharacterString>Route de Louvain-la-neuve, 2</gco:CharacterString></cit:deliveryPoint><cit:city><gco:CharacterString>Namur</gco:CharacterString></cit:city><cit:postalCode><gco:CharacterString>5001</gco:CharacterString></cit:postalCode><cit:country><gco:CharacterString>Belgique</gco:CharacterString></cit:country><cit:electronicMailAddress><gco:CharacterString>info@iweps.be</gco:CharacterString></cit:electronicMailAddress></cit:CI_Address></cit:address><cit:onlineResource><cit:CI_OnlineResource><cit:linkage><gco:CharacterString>https://www.iweps.be/</gco:CharacterString></cit:linkage><cit:name><gco:CharacterString>https://www.iweps.be/</gco:CharacterString></cit:name></cit:CI_OnlineResource></cit:onlineResource></cit:CI_Contact></cit:contactInfo></cit:CI_Organisation></cit:party></cit:CI_Responsibility></mrd:distributorContact><mrd:distributionOrderProcess><mrd:MD_StandardOrderProcess><mrd:orderingInstructions><gco:CharacterString>Les données sont librement téléchargeables sur le portail Walstat ou via les liens fournis dans la fiche de métadonnées.</gco:CharacterString></mrd:orderingInstructions></mrd:MD_StandardOrderProcess></mrd:distributionOrderProcess></mrd:MD_Distributor></mrd:distributor></gn_add>"}]' \
  --compressed

Distrbution section is created properly but an empty <mrd:distributor /> is inserted

        </mrd:MD_Distributor>
      </mrd:distributor>
      <mrd:distributor />
    </mrd:MD_Distribution>
  </mdb:distributionInfo>
fxprunayre commented 2 years ago

En fait, avec /mdb:distributionInfo/mrd:MD_Distribution c'est bon. Ca pointe vers le parent qui va être créé et on fait l'insertion dedans en dernière position pour les éléments du même type.

Ensuite, si on ajoute une position `/mdb:distributionInfo/mrd:MD_Distribution/mrd:distributor[1] > en première place et va décaler l'existant. Mais s'il y a rien, ca ajoute un élément vide.

A voir si gérer via le parent mrd:MD_Distribution est suffisant ?

/mdb:distributionInfo/mrd:MD_Distribution/mrd:distributor[111] NullPointerException car l'élément cible n'existe pas - je sais pas bien ce qu'on devrait faire dans ce cas là?

fxprunayre commented 2 years ago

Cf. https://github.com/geonetwork/core-geonetwork/pull/6239

Si vous avez des idées/retours sur les interfaces, n'hésitez pas.

fxprunayre commented 2 years ago

A déployer en test.

vbombaerts commented 2 years ago

Nickel