Classe offrant des services d'accès aux propriétés de configuration
pour la génération de rapports avec Velocity.
Pour Velocity, une variable de type ${a.b} peut vouloir
dire au choix :
- l'attibut b de l'instance a (ou a est un bean Java)
- la propriété b de l'instance a (ou a est une Map)
On exploite la deuxième possibilité pour rendre 'visible' une
propriété définie dans le fichier de configuration des rapports dans
un template velocity. Une instance de PropertiesHelper
est enregistrée dans le contexte velocity sous le nom props .
Comme cette classe implémente l'interface java.util.Map ,
Velocity invoque la méthode get(String) en lui passant en
argument la chaine aussitot placée après props. .
La fin de la propriété est marquée par l'invocation de la méthode
get() .
Il est supposé que les propriétés contenues dans le fichier de configuration
et accédées depuis les templates Velocity sont préfixées par :
reports.<reportId> ou reportId désigne
l'identifiant du rapport.
Exemple : ${props.startYear.get()} pour le rapport dont
l'identifiant est myReport va référencer la propriété
reports.myReport.startYear dans le fichier de configuration.
Si cette propriété n'est pas définie, le moteur regarde ensuite
tour à tour les propriétés reports.startYear et
startYear . Si toutes ces propriétés sont indéfinies, une
exception est levée.
Dans le cas ou le nom de la propriété est composée
(ex : start.year ), la méthode get retourne
l'instance de PropertiesHelper et la première partie du nom de
la propriété est déposée sur la pile. Lors de l'invocation suivante, les
différentes parties du nom de la propriété sont réassemblées pour former
le nom de la propriété dans son ensemble.
Pour cette raison, cette classe n'est pas thread safe.
See Also: jfb.tools.activitymgr.report.ReportMgr |