Files
clouddocs-maven-plugin/src/main/java/com/rackspace/cloud/api/docs/PDFMojo.java
2010-11-07 16:57:08 -06:00

74 lines
2.3 KiB
Java

package com.rackspace.cloud.api.docs;
import java.io.File;
import javax.xml.transform.Transformer;
import javax.xml.transform.URIResolver;
import org.apache.maven.plugin.MojoExecutionException;
import com.agilejava.docbkx.maven.TransformerBuilder;
import com.agilejava.docbkx.maven.AbstractPdfMojo;
import com.rackspace.cloud.api.docs.FileUtils;
import com.rackspace.cloud.api.docs.DocBookResolver;
public abstract class PDFMojo extends AbstractPdfMojo {
private File imageDirectory;
protected void setImageDirectory (File imageDirectory) {
this.imageDirectory = imageDirectory;
}
protected File getImageDirectory() {
return this.imageDirectory;
}
protected String getNonDefaultStylesheetLocation() {
return "cloud/fo/dookbook.xsl";
}
public void preProcess() throws MojoExecutionException {
super.preProcess();
final File targetDirectory = getTargetDirectory();
File imageParentDirectory = targetDirectory.getParentFile();
if (!targetDirectory.exists()) {
FileUtils.mkdir(targetDirectory);
}
//
// Extract all images into the image directory.
//
FileUtils.extractJaredDirectory("images",PDFMojo.class,imageParentDirectory);
setImageDirectory (new File (imageParentDirectory, "images"));
}
protected TransformerBuilder createTransformerBuilder(URIResolver resolver) {
return super.createTransformerBuilder (new DocBookResolver (resolver, getType()));
}
public void adjustTransformer(Transformer transformer, String sourceFilename, File targetFile) {
super.adjustTransformer(transformer, sourceFilename, targetFile);
//
// Setup graphics paths
//
File imageDirectory = getImageDirectory();
File calloutDirectory = new File (imageDirectory, "callouts");
transformer.setParameter ("admon.graphics.path", imageDirectory.getAbsolutePath()+File.separator);
transformer.setParameter ("callout.graphics.path", calloutDirectory.getAbsolutePath()+File.separator);
//
// Background image file
//
File cloudSub = new File (imageDirectory, "cloud");
File coverImg = new File (cloudSub, "cover.svg");
transformer.setParameter ("cloud.api.background.image", coverImg.getAbsolutePath());
}
}