Jaspersoft Studio – Comment tester la présence d’un caractère dans une liste ?

L’objectif est de rendre dynamique l’affichage d’un texfield en fonction du mois de l’année. Ici, nous souhaitons écrire

« Liste des paiements du mois d’avril 2021″

et non

« Liste des paiements du mois de avril 2021″

Donc en fonction de la présence d’une voyelle comme premier caractère du nom du mois on affichera « d' » ou « de »

Pour ce faire, nous avons besoin de tester la présence du premier caractère dans une liste de voyelles.

Voici une solution :

"Liste des paiements pour le mois "
+($V{voyelles}.contains(new SimpleDateFormat("MMMM").format($P{DateDebut}).charAt(0)) ? "d\' " : "de ")
+new SimpleDateFormat("MMMM").format($P{DateDebut})
+" "
+new Integer($P{DateDebut}.getYear()+1900)
+ "."

Explications :

new SimpleDateFormat("MMMM").format($P{DateDebut}).charAt(0)

correspond à l’identification du premier caractère du champ [DateDebut], dans un format « lisible » du type « avril » et non « 4 ».

$V{voyelles}.contains

correspond à un test d’appartenance à la liste « voyelle ». Plus précisément, $V{voyelles} est une variable de type « liste » qui contient les voyelles que l’on recherche. Pour nos besoins nous ne les avons pas toutes saisies.

La variable « voyelles » est donc celle-ci :

  • Nom = voyelles
  • Nom de classe de valeur = java.util.List
  • Calcul = Rien
  • Expression (non renseigné)
  • Expression valeur initiale = Arrays.asList(‘a’,’e’,’o’)
  • Type d’incrémentation = Aucun
  • Nom classe usine d’Incrémentation (non renseigné)
  • Type de Réinitialisation = Rapport

Nota bene :

new SimpleDateFormat("MMMM").format($P{DateDebut})

correspond à l’identification du mois d’une date donnée.

new Integer($P{DateDebut}.getYear()+1900)

correspond à l’identification de l’année d’une date donnée. On ajoute 1900 au nombre produit car, sans cela, Jasper afficherait « 121 » pour l’année 2021.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *