
Flux de création de la page d'Accueil
Afin de créer une page d'Accueil qui donne accès à la page de chaque Espace (devenu Catégorie), je me suis lancé dans la partie finalement la plus compliquée de cette migration. Au moins au niveau du Job Talend.
Si vous n'avez pas beaucoup d'Espaces, il est en fait bien plus rapide de le faire à la main ! Sinon, ou bien si vous voulez explorer Talend, allons-y !
Fig. 5 : Flux : Page d'Accueil
On repart donc d'un composant tMysqlInput, permettant de récupérer la liste des Espaces : "select SPACES.SPACENAME,SPACES.SPACEKEY,CONTENT.TITLE from SPACES,CONTENT where SPACES.HOMEPAGE=CONTENT.CONTENTID"
Comme dans le flux précédent, on fait correspondre le résultat de la requête au format d'import de MediaWiki, via un tMap. La liste des Espaces est ensuite triée par ordre alphabétique, via un tSortRow.
Fig. 6 : Map entre la requête issue de Confluence et la structure de MediaWiki : Espaces
Un petit composant tJavaRow (qui permet de traiter chaque ligne par du code Java) permet de concaténer dans un champ la liste des Espaces : output_row.spacename = input_row.spacename; output_row.revisionid = input_row.revisionid; output_row.timestamp = input_row.timestamp; output_row.contrib_username = input_row.contrib_username; output_row.contrib_id = input_row.contrib_id; output_row.comment = input_row.comment; output_row.space = input_row.space; output_row.id = input_row.id; output_row.title = "Accueil"; if (output_row.body==null) output_row.body=""; input_row.spacename+"]]\n"; output_row.body+= "* [:Catégorie:"+input_row.comment+"]\n"; globalMap.put("lastSpaceId", output_row.revisionid);
La variable globale 'lastSpaceId' (gérée via un tSetGlobalVar) me permet de garder l'identifiant de la dernière ligne, et ainsi identifier celle qui sera gardée.
Enfin, on trie (tSortRow) et on filtre (tFilterRow) avec comme condition : revisionid==(Integer)globalMap.get("lastSpaceId")
Ce flux, résumé à un seul enregistrement, puisque ne générant qu'une seule page d'Accueil, est ensuite enregistré dans un fichier XML au format d'import de MediaWiki grâce au composant tAdvancedFileOutputXML.
VOIR AUSSI
- Articles précédents :
- Migration Confluence vers MediaWiki grâce à Talend - Partie 1/6 (Présentation du projet, Présentation de Talend, Principe de la migration)
- Migration Confluence vers MediaWiki grâce à Talend - Partie 2/6 (Flux des pages)
- La suite, avec le Flux de création des modèles d'Espace
, ce vendredi 17!
Fil des billets