1 23 24 package org.enhydra.xml.xmlc.commands.xmlc; 25 26 import java.io.IOException ; 27 import java.io.PrintWriter ; 28 29 import org.enhydra.xml.io.ErrorReporter; 30 import org.enhydra.xml.xmlc.XMLCException; 31 import org.enhydra.xml.xmlc.XMLCVersion; 32 import org.enhydra.xml.xmlc.commands.ErrorHandling; 33 import org.enhydra.xml.xmlc.compiler.Compiler; 34 import org.enhydra.xml.xmlc.metadata.CompileOptions; 35 import org.enhydra.xml.xmlc.metadata.JavaCompilerSection; 36 import org.enhydra.xml.xmlc.metadata.MetaData; 37 38 43 public class XMLC { 44 47 public static final String JAVAC_PROPERTY = "org.enhydra.xml.xmlc.javac"; 48 49 52 private XMLCOptionsParser fOptionsParser = new XMLCOptionsParser(); 53 54 57 private boolean fVerbose = false; 58 59 62 private PrintWriter fStdout; 63 64 67 private ErrorReporter fErrorReporter; 68 69 72 private PrintWriter fTraceOut; 73 74 77 public XMLC(PrintWriter stdout, 78 PrintWriter stderr) { 79 fStdout = stdout; 80 fErrorReporter = new ErrorReporter(stderr); 81 fTraceOut = stderr; 82 } 83 84 87 public XMLC() { 88 this(new PrintWriter (System.out, true), 89 new PrintWriter (System.err, true)); 90 } 91 92 95 private void printVersion() { 96 fStdout.println("Enhydra XMLC version " + XMLCVersion.VERSION); 97 fStdout.println("See http://xmlc.enhydra.org for latest distribution"); 98 } 99 100 103 private MetaData parseArgs(String [] args) throws XMLCException, IOException { 104 MetaData metaData = fOptionsParser.parse(args, fErrorReporter); 105 106 String defaultJavac = System.getProperty(JAVAC_PROPERTY); 108 if (defaultJavac != null) { 109 JavaCompilerSection compilerSection = metaData.getJavaCompilerSection(); 110 if (!compilerSection.isJavacSpecified()) { 111 compilerSection.setJavac(defaultJavac); 112 } 113 } 114 return metaData; 115 } 116 117 121 public void compile(String [] args) throws XMLCException, IOException { 122 123 MetaData metaData = parseArgs(args); 125 CompileOptions compileOptions = metaData.getCompileOptions(); 126 fVerbose = compileOptions.getVerbose(); 127 128 if (compileOptions.getPrintVersion()) { 129 printVersion(); 130 } 131 132 if (metaData.getInputDocument().getUrl() != null) { 133 Compiler compiler = new Compiler (fErrorReporter, 134 fTraceOut); 135 compiler.compile(metaData); 136 } 137 } 138 139 143 private void compileHandleErrors(String [] args) { 144 try { 145 compile(args); 146 } catch (Exception except) { 147 ErrorHandling.handleException(except, fVerbose); 148 } 149 } 150 151 154 public static void main(String [] args) { 155 XMLC xmlc = new XMLC(); 156 xmlc.compileHandleErrors(args); 157 } 158 } 159 | Popular Tags |