
Flux des pages
Fig. 2 : Flux : Pages
Voici la requête (qui commence à en imposer !) qui permet de récupérer les pages, avec leurs labels et leur espace :
"SELECT SPACES.SPACEKEY, CONTENT.TITLE, BODYCONTENT.BODY, GROUP_CONCAT( LABEL.NAME ) as labels, SPACES.HOMEPAGE, CONTENT.CONTENTID FROM SPACES, BODYCONTENT, CONTENT LEFT JOIN ( LABEL, CONTENT_LABEL ) ON ( CONTENT_LABEL.LABELID = LABEL.LABELID AND CONTENT_LABEL.CONTENTID = CONTENT.CONTENTID ) WHERE SPACES.SPACEID = CONTENT.SPACEID AND CONTENT.CONTENTTYPE = 'PAGE' AND CONTENT.CONTENTID = BODYCONTENT.CONTENTID GROUP BY SPACES.SPACEKEY, CONTENT.TITLE, BODYCONTENT.CONTENTID"
Un composant tJavaRow permet ensuite d'incorporer les étiquettes puis l'espace en ajoutant des balises [[Catégorie]]. Ces dernières font partie du corps de la page dans MediaWiki.
//Code generate accord to input schema and output schmea
output_row.SPACENAME = input_row.SPACEKEY;
// Si la page est la page d'accueil de l'espace Confluence, devient la page de la catégorie
if (input_row.CONTENTID.equals(input_row.HOMEPAGE))
output_row.TITLE = "Catégorie:"+input_row.SPACEKEY;
else
output_row.TITLE = input_row.TITLE;
String[] labels={};
output_row.BODY="";
if (input_row.labels!=null)
{
labels = input_row.labels.split(",");
for (int i=0;i<labels.length;i++)
{
output_row.BODY+="[[Catégorie:"+labels[i]+"|"+input_row.TITLE+"]]\n";
System.out.println(labels[i] + ";" + output_row.SPACENAME);
}
}
if (!output_row.TITLE.startsWith("Catégorie:"))
output_row.BODY+="{{"+input_row.SPACEKEY+"}}\n\n";
output_row.BODY+= input_row.BODY;
Enfin, le contenu exporté est attribué à une nouvelle structure, qui servira de base à l'export XML :
Fig. 3 : Map entre la requête issue de Confluence et la structure de MediaWiki
Le corps (body) est transformé (Confluence vers MediaWiki) grâce à la fonction :
convertBody.convertToMediaWiki(row10.BODY,row10.SPACENAME)
Cette fonction que j'ai développée permet de réaliser la transformation entre les deux formats de Wiki. Par exemple, c'est ici que « h1. Gros titre » devient « == Gros titre == ».
Je ne joins pas ce code à ce document, mais vous pouvez me contacter afin de me le demander, je vous l'enverrai par mail avec plaisir !
Enfin, un tAdvancedFileOutputXML (Waow !) permet d'enregistrer tout ça dans un fichier XML, dans un format reconnu par MediaWiki ! Vous pouvez noter la structure Target, qui est importante pour que l'import se passe bien.
Fig. 4 : Association des données au format MediaWiki avec le format XML d'import
VOIR AUSSI
- Article précédent :
- Migration Confluence vers MediaWiki grâce à Talend - Partie 1/6 (Présentation du projet, Présentation de Talend, Principe de la migration)
- La suite, avec le Flux de création de la page d'Accueil
, ce jeudi 16 !
Fil des billets