Talend - Logo C2M

Flux des pages

Talend - Flux 1 - 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 :
Talend - Flux 1 - Pages - Map 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.

Talend - Schéma XML Fig. 4 : Association des données au format MediaWiki avec le format XML d'import

VOIR AUSSI