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(); } }