001: /* *****************************************************************************
002: * Main.java
003: * ****************************************************************************/
004:
005: /* J_LZ_COPYRIGHT_BEGIN *******************************************************
006: * Copyright 2001-2004 Laszlo Systems, Inc. All Rights Reserved. *
007: * Use is subject to license terms. *
008: * J_LZ_COPYRIGHT_END *********************************************************/
009:
010: package org.openlaszlo.xml.internal;
011:
012: import java.io.*;
013: import org.apache.log4j.*;
014: import org.apache.log4j.spi.*;
015: import org.apache.log4j.varia.NullAppender;
016:
017: import org.jdom.input.SAXBuilder;
018: import org.jdom.Document;
019: import org.jdom.Element;
020: import org.jdom.JDOMException;
021: import org.openlaszlo.utils.FileUtils;
022: import org.openlaszlo.xml.*;
023:
024: /**
025: * Log4j appender that simply keeps state as to
026: * whether or not there has been an error, warning, or fatal
027: * log message
028: */
029: class ErrorChecker extends NullAppender {
030: public boolean hadError = false;
031:
032: public void doAppend(LoggingEvent e) {
033: super .doAppend(e);
034: if (e.level == Level.WARN || e.level == Level.FATAL
035: || e.level == Level.ERROR) {
036: hadError = true;
037: }
038: }
039: }
040:
041: /**
042: * Test class for media converter
043: */
044: public class Main {
045:
046: /**
047: * Usage: java org.openlaszlo.xml.Main in out
048: *
049: * Converts input xml to output swf.
050: *
051: * @param args the command line arguments
052: */
053: public static void main(String args[]) {
054: lzdc(args);
055: }
056:
057: /**
058: * Allow execution from the command line
059: *
060: * @param args[] 2 arguments - [XML input document],
061: * [SWF output document]
062: */
063:
064: public static int lzdc(String[] args) {
065:
066: int exitStatus = 0;
067:
068: // Configure logging
069: Logger logger = Logger.getRootLogger();
070: logger.setLevel(Level.ERROR);
071:
072: logger.addAppender(new ConsoleAppender(new PatternLayout(
073: "%r msecs [%p] - %m%n")));
074:
075: ErrorChecker errorChecker = new ErrorChecker();
076: logger.addAppender(errorChecker);
077:
078: int swfversionNum = 5;
079:
080: try {
081: if (args.length < 2) {
082: System.err.println("Usage: lzdc [-v] [-i] from to");
083: return -1;
084: }
085:
086: for (int i = 0; i < args.length; i++) {
087: String arg = args[i].intern();
088: if (arg == "-v") {
089: logger.setLevel(Level.ALL);
090: } else if (arg == "-i") {
091: logger.setLevel(Level.INFO);
092: } else if (arg == "-5") {
093: swfversionNum = 5;
094: } else if (arg == "-6") {
095: swfversionNum = 6;
096: } else if (arg == "-7") {
097: swfversionNum = 7;
098: }
099: }
100:
101: String fromFileName = args[args.length - 2];
102: String toFileName = args[args.length - 1];
103:
104: String xmlstring = FileUtils.readFileString(new File(
105: fromFileName), "UTF-8");
106: // Create and load properties
107: logger.info("Reading XML from " + fromFileName);
108:
109: InputStream is = DataCompiler.compile(xmlstring,
110: swfversionNum);
111: FileOutputStream w = new FileOutputStream(toFileName);
112:
113: logger.info("Writing to " + toFileName);
114:
115: //de.buildFromDocument(doc);
116: FileUtils.send(is, w);
117: w.flush();
118:
119: logger.info("Done");
120:
121: } catch (DataCompilerException e) {
122: exitStatus = -1;
123: System.err.println("DataCompilerException: "
124: + e.getMessage());
125: e.printStackTrace();
126: } catch (IOException e) {
127: exitStatus = -1;
128: System.err.println("IO exception: " + e.getMessage());
129: e.printStackTrace();
130: }
131:
132: if (errorChecker.hadError)
133: exitStatus = -1;
134:
135: return exitStatus;
136: }
137: }
|