package org.freehep.maven.wbxml;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import org.apache.maven.plugin.MojoExecutionException;
import org.codehaus.plexus.util.FileUtils;
/**
* @goal doc
* @description Creates Documentation from wbxml definition
* @phase generate-sources
* @author <a href="Mark.Donszelmann@slac.stanford.edu">Mark Donszelmann</a>
* @version $Id: IdljMojo.java 9121 2006-10-12 20:58:35Z duns $
*/
public class DocMojo extends AbstractWBXMLMojo {
/**
* The target directory into which to generate the output.
*
* @parameter expression="${basedir}/src/site/apt"
* @required
*/
protected String targetDirectory;
public void execute() throws MojoExecutionException {
if (!FileUtils.fileExists(targetDirectory)) {
FileUtils.mkdir( targetDirectory );
}
if (!sourceDirectory.endsWith("/")) {
sourceDirectory = sourceDirectory+"/";
}
try {
readWBXML(sourceDirectory+source);
writeTagDoc(targetDirectory, source, "Tags");
writeAttributeDoc(targetDirectory, source, "Attributes");
} catch (IOException e) {
throw new MojoExecutionException("Error converting wbxml to java", e);
}
}
private void writeTagDoc(String directory, String source, String name) throws IOException {
PrintWriter writer = new PrintWriter(new File(directory, source+name+".apt"));
writer.println(" ---");
writer.println(" "+source+" Tag Definition");
writer.println(" ---");
writer.println(" Generated by freehep-wbxml-plugin");
writer.println(" ---");
writer.println(" ---");
writer.println();
writer.println(source+"Tag Definition");
writer.println();
String divider = "*--------+--------------+----------+----------+----------+-----------+------------+";
writer.println(divider);
writer.println( "| <<No>> | <<Constant>> | <<Name>> | <<Page>> | <<Code>> | <<Empty>> | <<Comment>> ");
writer.println(divider);
for (Iterator i=tags.iterator(); i.hasNext(); ) {
Tag tag = (Tag)i.next();
writer.print("| ");
writer.print(tag.getNumber());
writer.print(" | ");
writer.print(tag.getConstant());
writer.print(" | ");
writer.print(tag.getName());
writer.print(" | ");
writer.print(tag.getPage());
writer.print(" | ");
writer.print(tag.getCode());
writer.print(" | ");
writer.print(tag.isEmpty());
writer.print(" | ");
writer.print(tag.getComment());
writer.println();
writer.println(divider);
}
writer.println();
writer.close();
}
private void writeAttributeDoc(String directory, String source, String name) throws IOException {
PrintWriter writer = new PrintWriter(new File(directory, source+name+".apt"));
writer.println(" ---");
writer.println(" "+source+" Attribute Definition");
writer.println(" ---");
writer.println(" Generated by freehep-wbxml-plugin");
writer.println(" ---");
writer.println(" ---");
writer.println();
writer.println(source+" Attribute Definition");
writer.println();
String divider = "*--------+--------------+----------+----------+----------+----------+------------+";
writer.println(divider);
writer.println( "| <<No>> | <<Constant>> | <<Name>> | <<Page>> | <<Code>> | <<Type>> | <<Comment>> ");
writer.println(divider);
for (Iterator i=attributes.iterator(); i.hasNext(); ) {
Attribute attribute = (Attribute)i.next();
writer.print("| ");
writer.print(attribute.getNumber());
writer.print(" | ");
writer.print(attribute.getConstant());
writer.print(" | ");
writer.print(attribute.getName());
writer.print(" | ");
writer.print(attribute.getPage());
writer.print(" | ");
writer.print(attribute.getCode());
writer.print(" | ");
writer.print(attribute.getType());
writer.print(" | ");
writer.print(attribute.getComment());
writer.println();
writer.println(divider);
}
writer.println();
writer.close();
}
}