Architecture

Processus de génération RTFTemplate

Voici un schéma du processus de génération utilisé dans RTFTemplate :

  • Etape Parse RTF model source (1) consiste à charger le modèle RTF source dans une structure RTFDocument. Cette structure qui contient l'ensemble du modèle RTF, découpe les élements RTF du modèle interprété par RTFTemplate comme les champs (RTFField), les signets (RTFBookmark)...
  • Etape Transform RTF Document (2) consiste à transformer la structure RTFDocument, autrement dit, elle permet de :
    • remplacer le code RTF avec les macros spécifiques au moteur de template sélectionné (ex : remplacer les signets par la macro #foreach dans le cas ou RTFTemplate est utilisé avec Velocity).
    • supprimer certaine partie du code RTF, comme celui des champs de fusions (MERGEFIELD) pour enlever les caractères " qui englobent les champs de fusions.

    Cette étape nécéssite OBLIGATOIREMENT le contexte OU le fichier XML qui contient les champs disponibles (*.fields.xml) du modèle RTF. En effet, l'étape de transformation permet de générer les macros de boucle (#foreach, #list,...) en fonction du moteur de template sélectionné (Velocity, Freemarker,...).

    Lorsque RTFTemplate sera intégré à votre application, il se peut que les listes soient vides. La génération des boucles s'effectuent par introspection des objets JAVA de votre contexte. Si votre liste est vide, RTFTemplate sera incapable de générer les champs qui sont dans une boucle.

    Pour régler ce problème, le fichier XML des champs disponibles est requis lorsque vous allez intégrer RTFTemplate dans votre application. Ce fichier peut être généré à l'aide de la classe AbstractRTFUseCase (avant l'intégration de RTFTemplate). Ce fichier contient les informations des champs qui indiquent si le champs est compris dans une liste ou non.

    C'est pour cette raison, qu'il est impératif de poser le contexte avec toutes les données possibles lorsque la classe AbstractRTFUseCase est implementée.

    Le résulat de cette étape donne une nouvelle structure RTFDocument qui contient les macros du moteur de template sélectionné.

  • Etape Merge with template engine (3) consiste à fusionner le document RTFDocument transformé avec le contexte JAVA. Cette étape utilise le moteur de template sélectionné pour fusionner le document transformé avec le contexte pour donner le document RTF cible qui contient le modèle RTF fusionné avec les données.

Chaque étape du processus peut être séléctionnée parmi les implémentations par défaut fournis par RTFTemplate (moteur de template en Velocity ou Freemarker) ou ré-implémentée. Cette configuration peut s'effectuer prgramatiquement ou à l'aide d'un descripeur XML Spring. Pour plus d'informations, cliquez ici