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.