KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > de > tisje > java2html > XsltTask


1 package de.tisje.java2html;
2
3 import java.io.File JavaDoc;
4 import java.io.FileWriter JavaDoc;
5 import java.io.IOException JavaDoc;
6 import java.io.StringWriter JavaDoc;
7
8 import de.java2html.converter.AbstractJavaSourceToXmlConverter;
9 import de.java2html.converter.JavaSource2XhtmlConverter;
10 import de.java2html.converter.JavaSource2XmlConverter;
11 import de.java2html.javasource.JavaSource;
12 import de.java2html.javasource.JavaSourceParser;
13 import de.java2html.options.JavaSourceConversionOptions;
14 import de.java2html.util.IoUtilities;
15
16 /**
17  * This class is an interface between XSL and Java2Html.
18  * Before invoking, a namespace def must be added to the <code>xsl:stylesheet</code> tag:<br>
19  * <code>xmlns:j2h="de.tisje.java2html.XsltTask"</code><br>
20  * After that, it may be used this way:
21  * <pre>
22  * &lt;xsl:value-of select="j2h:setSource(.)"/>
23  * &lt;xsl:value-of select="j2h:writeFile('temp.xml')"/>
24  * &lt;xsl:copy-of select="document('temp.xml')"/>
25  * </pre>
26  *
27  * @author <a HREF="mailto:Jan.Tisje@gmx.de">Jan Tisje</a>
28  * @version 1.0
29  */

30 //TODO Mar 11, 2004 (Markus Gebhard): This class urgently needs refactoring. Static instance variables - arg...
31
public class XsltTask {
32
33   private static JavaSourceConversionOptions options = JavaSourceConversionOptions.getDefault();
34   private static AbstractJavaSourceToXmlConverter converter = new JavaSource2XhtmlConverter();
35   private static JavaSource source = null;
36   private static boolean xhtml = false;
37
38   /**
39    * set options from xsl.
40    * @param lineNumbers if line numbers should be in the output code.
41    * @param pre if output code should be formatted using non-breaking spaces and &lt;br>.
42    * @param xhtml if output should be viewable stand-alone.
43    */

44   public static void setOptions(boolean lineNumbers, boolean pre, boolean xhtml) {
45     if (xhtml) {
46       converter = new JavaSource2XhtmlConverter();
47     }else {
48       converter = new JavaSource2XmlConverter();
49     }
50     converter.setOptions(lineNumbers, pre);
51     XsltTask.xhtml = xhtml;
52   }
53
54   /** hand over java source read from main xml file. */
55   public static void setSource(String JavaDoc javaSource) {
56     source = new JavaSourceParser().parse(javaSource);
57   }
58
59   /** read java source from file. */
60   public static void readFile(String JavaDoc javaFile) throws IOException JavaDoc {
61     source = new JavaSourceParser().parse(new File JavaDoc(javaFile));
62   }
63
64   /** return java source in text form, html codes will be escaped. */
65   public static String JavaDoc getSource() throws IOException JavaDoc {
66     StringWriter JavaDoc writer = new StringWriter JavaDoc();
67     writer.write(converter.getDocumentHeader(options, "")); //$NON-NLS-1$
68
converter.convert(source, options, writer);
69     writer.write(converter.getDocumentFooter(options));
70     return writer.getBuffer().toString();
71   }
72
73   /** output file to a separate xml file, less problems.
74    * @deprecated As of Mar 11, 2004 (Markus Gebhard), replaced by {@link #writeFile(File)}*/

75   public static void writeFile(String JavaDoc filename) throws IOException JavaDoc {
76     writeFile(new File JavaDoc(filename));
77   }
78
79   /** output file to a separate xml file */
80   public static void writeFile(File JavaDoc file) throws IOException JavaDoc {
81     FileWriter JavaDoc fileWriter = new FileWriter JavaDoc(file);
82     try {
83       fileWriter.write(converter.getDocumentHeader(options, "")); //$NON-NLS-1$
84
converter.convert(source, options, fileWriter);
85       fileWriter.write(converter.getDocumentFooter(options));
86     }
87     finally {
88       IoUtilities.close(fileWriter);
89     }
90   }
91
92   /** use this class like a common comandline tool.
93    changing of options is not supported, yet */

94   public static void main(String JavaDoc args[]) {
95     String JavaDoc ext = ".xhtml"; //$NON-NLS-1$
96
if (!xhtml)
97       ext = ".xml"; //$NON-NLS-1$
98
for (int i = 0; args.length > i; i++) {
99       try {
100         readFile(args[i]);
101         writeFile(args[i] + ext);
102       }
103       catch (IOException JavaDoc e) {
104         e.printStackTrace();
105       }
106     }
107   }
108 }
Popular Tags