Image du projet 'Socle K-Sup' téléversée
  1. Socle K-Sup
  2. CORE-5570

Les imports d'un fichier dans le nom contient des crochets font échouer le scan site sur le type de fiche importée

XMLWordImprimable

    • Icon: Bug Bug
    • Résolution: Non résolu
    • Icon: Mineur Mineur
    • master, branche 6.8
    • master, branche 6.7, branche 6.8
    • Aucune

      Lorsqu'on importe des fiches en utilisant un fichier dont le nom comporte des crochets, par exemple "test_fichier[2021].xml". La valeur suivante est insérée dans la colonne META_HISTORIQUE de la table METATAG_HISTORIQUE :

      [CREATION/20210128123414/IMPORT.NOM.HISTORIQUE (test_fichier[2021].xml)/0003]
      

      Or le scan site (notamment mais pas que) utilise la méthode :
      com.univ.objetspartages.util.AffichageHistorique#instancierFicheHistoriqueDepuisInfoMeta

      qui parse cette valeur comme ceci :

      valeur = StringUtils.substringBetween(valeur, "[", "]");
      final String[] valeursSplittes = valeur.split("/");
      

      On se retrouve avec des "valeursSplittes" incorrectes, avec notamment un tableau de longueur 3 au lieu de 4.

      On obtient ce type de log :

      2021-01-26_01:59:01.390 [pool-5-thread-2] [] INFO  com.univ.batch.process.ScanSite - ***** Formation *****
      2021-01-26_01:59:05.591 [pool-5-thread-2] [] ERROR com.univ.batch.process.ScanSite - Exception sur le traitement des fiches Formation
      java.lang.ArrayIndexOutOfBoundsException: 3
      	at com.univ.objetspartages.util.AffichageHistorique.instancierFicheHistoriqueDepuisInfoMeta(AffichageHistorique.java:94)
      	at com.univ.objetspartages.util.AffichageHistorique.getHistorique(AffichageHistorique.java:71)
      	at com.univ.batch.process.ScanSite.run(ScanSite.java:232)
      	at com.univ.batch.process.ScanSite.perform(ScanSite.java:680)
      	at com.kportal.scheduling.spring.quartz.LogReportJob.execute(LogReportJob.java:54)
      	at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
      	at java.lang.Thread.run(Thread.java:748)
      

      Le fix consiste je pense à transformer les crochets du nom d'un fichier en tirets par exemple avant insertion dans METATAG_HISTORIQUE.

            Non attribuée Non attribuée
            arnaud.oisel Arnaud OISEL [X] (Inactif)
            Votes:
            0 Voter pour ce ticket
            Gérer les observateurs:
            1 Démarre l'observation de ce ticket

              Création:
              Mise à jour: