pbwest      2004/03/14 03:18:47

  Modified:    src/java/org/apache/fop/apps Tag: FOP_0-20-0_Alt-Design
                        Fop.java Document.java
  Removed:     src/java/org/apache/fop/apps Tag: FOP_0-20-0_Alt-Design
                        Driver.java
  Log:
  Merged Driver into Fop
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.1.2.14  +303 -49   xml-fop/src/java/org/apache/fop/apps/Fop.java
  
  Index: Fop.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/apps/Fop.java,v
  retrieving revision 1.1.2.13
  retrieving revision 1.1.2.14
  diff -u -r1.1.2.13 -r1.1.2.14
  --- Fop.java  14 Mar 2004 03:12:36 -0000      1.1.2.13
  +++ Fop.java  14 Mar 2004 11:18:47 -0000      1.1.2.14
  @@ -29,29 +29,98 @@
   import java.util.logging.Level;
   import java.util.logging.Logger;
   
  +import org.apache.fop.area.AreaTree;
   import org.apache.fop.configuration.CLI_Options;
   import org.apache.fop.configuration.ConfigurationResource;
   import org.apache.fop.configuration.Configuration;
  +import org.apache.fop.configuration.FOUserAgent;
   import org.apache.fop.configuration.SystemOptions;
   import org.apache.fop.configuration.UserOptions;
  +import org.apache.fop.fo.FOTree;
  +import org.apache.fop.render.Renderer;
  +import org.apache.fop.render.awt.AWTRenderer;
  +import org.apache.fop.version.Version;
  +import org.apache.fop.xml.FoXmlSerialHandler;
  +import org.apache.fop.xml.Namespaces;
  +import org.apache.fop.xml.SyncedXmlEventsBuffer;
  +import org.apache.fop.xml.XmlEventReader;
  +import org.xml.sax.InputSource;
  +import org.xml.sax.XMLReader;
   
   public class Fop {
   
  +    /** private constant to indicate renderer was not defined.  */
  +    private static final int NOT_SET = 0;
  +    /** Render to PDF. OutputStream must be set */
  +    public static final int RENDER_PDF = 1;
  +    /** Render to a GUI window. No OutputStream neccessary */
  +    public static final int RENDER_AWT = 2;
  +    /** Render to MIF. OutputStream must be set */
  +    public static final int RENDER_MIF = 3;
  +    /** Render to XML. OutputStream must be set */
  +    public static final int RENDER_XML = 4;
  +    /** Render to PRINT. No OutputStream neccessary */
  +    public static final int RENDER_PRINT = 5;
  +    /** Render to PCL. OutputStream must be set */
  +    public static final int RENDER_PCL = 6;
  +    /** Render to Postscript. OutputStream must be set */
  +    public static final int RENDER_PS = 7;
  +    /** Render to Text. OutputStream must be set */
  +    public static final int RENDER_TXT = 8;
  +    /** Render to SVG. OutputStream must be set */
  +    public static final int RENDER_SVG = 9;
  +    /** Render to RTF. OutputStream must be set */
  +    public static final int RENDER_RTF = 10;
  +    
  +    private InputHandler inputHandler;
  +    private XMLReader parser;
  +    private InputSource saxSource;
  +
  +    private FoXmlSerialHandler xmlhandler;
  +    private SyncedXmlEventsBuffer eventsBuffer;
  +    private Namespaces namespaces;
  +    private XmlEventReader eventReader;
  +    private FOTree foTree;
  +    private AreaTree areaTree = new AreaTree();
  +
  +    private Thread driverThread;
  +    private Thread parserThread;
  +    private Thread foThread;
  +    private Thread areaThread;
  +    private Thread renderThread;
  +
  +    /** the renderer type code given by setRenderer  */
  +    private int rendererType = NOT_SET;
  +
  +    /** the renderer to use to output the area tree */
  +    private Renderer renderer;
  +
       public static Runtime runtime;
       public static long startTotal;
       public static long startFree;
       public static long startTime;
       public static long startPCi;
       public static long endPCi;
  +    private long endtotal, endfree, gctotal, gcfree;
       
  -    /**
  -     * The top-level package for FOP
  -     */
  +    /** The top-level package for FOP */
       public static final String fopPackage = "org.apache.fop";
  -    
  +    /** The logging object */
       private Logger logger;
  -    
  +    /** Configuration data */
       public Configuration configuration = null;
  +    /** The version string */
  +    public final String version = Version.getVersion();
  +    /** The version revision string */
  +    public final String revision = Version.getRevision();
  +    /** The version name string */
  +    public final String name = Version.getName();
  +
  +    protected Properties properties = null;
  +    protected SystemOptions options = null;
  +    protected UserOptions userOptions = null;
  +    protected CLI_Options cliOptions = null;
  +    protected FOUserAgent userAgent = null;
   
       public static void main(String[] args) {
           Fop fopInstance = new Fop(args);
  @@ -80,17 +149,26 @@
       String[] args = null;
   
       public Fop() {
  -        run();
  +        setup();
       }
       
       public Fop(String[] args) {
           this.args = args;
  -        run();
  +        setup();
       }
  -    
  -    public void run() {
  -        long endtotal, endfree, gctotal, gcfree;
  -        Properties properties;
  +
  +    public Fop(Configuration config, SystemOptions options) {
  +        configuration = config;
  +        this.options = options;
  +        if (options instanceof CLI_Options) {
  +            cliOptions = (CLI_Options)options;
  +        } else {
  +            if (options instanceof UserOptions) {
  +                userOptions = (UserOptions)options;
  +            }
  +        }
  +    }
  +    private void setup() {
           try {
               // Get the initial system properties
               InputStream propsfile =
  @@ -110,19 +188,55 @@
           }
           // Now that the Fop system properties have been added, set up logger
           logger = Logger.getLogger(fopPackage);
  +        logger.setLevel(Level.CONFIG);
  +        logger.config(version);
           // Then restrict to WARNING
           logger.setLevel(Level.WARNING);
  -        Driver driver;
  -        SystemOptions options = null;
  -        UserOptions userOptions = null;
  -        CLI_Options cliOptions = null;
  -        Boolean bool = null;
  +    }
   
  +    private void setupRunStats() {
           runtime = Runtime.getRuntime();
           startTotal = runtime.totalMemory();
           startFree = runtime.freeMemory();
           startTime = System.currentTimeMillis();
  +    }
  +
  +    private void printRunStats() {
  +        System.out.println("Back from driver.run()");
  +        System.out.println("Elapsed time: " +
  +                (System.currentTimeMillis() - startTime));
  +        endtotal = runtime.totalMemory();
  +        endfree = runtime.freeMemory();
  +        System.gc();
  +        gctotal = runtime.totalMemory();
  +        gcfree = runtime.freeMemory();
  +        System.out.println("Total memory before run : " + startTotal);
  +        System.out.println("Total memory after run  : " + endtotal);
  +        System.out.println("Total memory after GC   : " + gctotal);
  +        System.out.println("Diff before/after total : "
  +                + (endtotal - startTotal));
  +        System.out.println("Diff before/GC total    : "
  +                + (gctotal - startTotal));
  +        System.out.println("Diff after/GC total     : "
  +                + (gctotal - endtotal));
  +        System.out.println("Free memory before run  : " + startFree);
  +        System.out.println("Free memory after run   : " + endfree);
  +        System.out.println("Free memory after GC    : " + gcfree);
  +        System.out.println("Diff before/after free  : "
  +                + (endfree - startFree));
  +        System.out.println("Diff before/GC free     : "
  +                + (gcfree - startFree));
  +        System.out.println("Diff after/GC free      : "
  +                + (gcfree - endfree));
  +        System.out.println("cg() freed              : "
  +                + (gcfree - endfree));
  +        //System.out.println("PC time     : " + (endPCi - startPCi));
  +    }
   
  +    public void run() {
  +        setupRunStats();
  +        
  +        Boolean bool = null;
           try {
               configuration = new Configuration();
               if (args == null) {
  @@ -142,44 +256,184 @@
                       throw new FOPException(e2);
                   }
               }
  -            driver = new Driver(configuration, options);
  -            driver.run();
  -            System.out.println("Back from driver.run()");
  -            System.out.println("Elapsed time: " +
  -                                (System.currentTimeMillis() - startTime));
  -            endtotal = runtime.totalMemory();
  -            endfree = runtime.freeMemory();
  -            System.gc();
  -            gctotal = runtime.totalMemory();
  -            gcfree = runtime.freeMemory();
  -            System.out.println("Total memory before run : " + startTotal);
  -            System.out.println("Total memory after run  : " + endtotal);
  -            System.out.println("Total memory after GC   : " + gctotal);
  -            System.out.println("Diff before/after total : "
  -                                                   + (endtotal - startTotal));
  -            System.out.println("Diff before/GC total    : "
  -                                                   + (gctotal - startTotal));
  -            System.out.println("Diff after/GC total     : "
  -                                                   + (gctotal - endtotal));
  -            System.out.println("Free memory before run  : " + startFree);
  -            System.out.println("Free memory after run   : " + endfree);
  -            System.out.println("Free memory after GC    : " + gcfree);
  -            System.out.println("Diff before/after free  : "
  -                                                   + (endfree - startFree));
  -            System.out.println("Diff before/GC free     : "
  -                                                   + (gcfree - startFree));
  -            System.out.println("Diff after/GC free      : "
  -                                                   + (gcfree - endfree));
  -            System.out.println("cg() freed              : "
  -                                                    + (gcfree - endfree));
  -            //System.out.println("PC time     : " + (endPCi - startPCi));
  -            
  +            setInputHandler(options.getInputHandler());
  +            parser = inputHandler.getParser();
  +            saxSource = inputHandler.getInputSource();
  +            // Setting of namespace-prefixes feature no longer required
  +            //setParserFeatures(parser);
  +
  +            namespaces = new Namespaces();
  +            eventsBuffer = new SyncedXmlEventsBuffer(namespaces);
  +            eventReader = new XmlEventReader(eventsBuffer, namespaces);
  +            xmlhandler = new FoXmlSerialHandler(eventsBuffer, parser, saxSource);
  +            foTree = new FOTree(eventReader);
  +
  +            driverThread = Thread.currentThread();
  +            foThread = new Thread(foTree, "FOTreeBuilder");
  +            foThread.setDaemon(true);
  +            parserThread = new Thread(xmlhandler, "XMLSerialHandler");
  +            parserThread.setDaemon(true);
  +
  +            xmlhandler.setFoThread(foThread);
  +            foTree.setParserThread(parserThread);
  +
  +            System.out.println("Starting parserThread");
  +            parserThread.start();
  +            System.out.println("parserThread started");
  +            foThread.start();
  +            System.out.println("foThread started");
  +            try {
  +                parserThread.join();
  +            } catch (InterruptedException e) {}
  +            //System.out.println("Joined to parser.");
  +            try {
  +                foThread.join();
  +            } catch (InterruptedException e) {}
           } catch (FOPException e) {
               logger.warning(e.getMessage());
               if (options.isDebugMode()) {
                   e.printStackTrace();
               }
           }
  +
  +        printRunStats();
  +            
  +    }
  +
  +    /**
  +     * Sets the InputHandler for XML imput as specified in FOPOptions.
  +     * @param inputHandler the InputHandler
  +     */
  +    public void setInputHandler(InputHandler inputHandler) {
  +        this.inputHandler = inputHandler;
  +    }
  +
  +    protected FOUserAgent getUserAgent() {
  +        return userAgent;
  +    }
  +
  +    /**
  +     * Shortcut to set the rendering type to use. Must be one of
  +     * <ul>
  +     * <li>RENDER_PDF</li>
  +     * <li>RENDER_AWT</li>
  +     * <li>RENDER_PRINT</li>
  +     * <li>RENDER_MIF</li>
  +     * <li>RENDER_XML</li>
  +     * <li>RENDER_PCL</li>
  +     * <li>RENDER_PS</li>
  +     * <li>RENDER_TXT</li>
  +     * <li>RENDER_SVG</li>
  +     * <li>RENDER_RTF</li>
  +     * </ul>
  +     * @param renderer the type of renderer to use
  +     * @throws IllegalArgumentException if an unsupported renderer type was 
required.
  +     */
  +    public void setRenderer(int renderer) throws IllegalArgumentException {
  +        rendererType = renderer;
  +        switch (renderer) {
  +//        case RENDER_PDF:
  +//            setRenderer("org.apache.fop.render.pdf.PDFRenderer");
  +//            break;
  +        case RENDER_AWT:
  +            throw new IllegalArgumentException("Use renderer form of setRenderer() 
for AWT");
  +//        case RENDER_PRINT:
  +//            setRenderer("org.apache.fop.render.awt.AWTPrintRenderer");
  +//            break;
  +//        case RENDER_PCL:
  +//            setRenderer("org.apache.fop.render.pcl.PCLRenderer");
  +//            break;
  +//        case RENDER_PS:
  +//            setRenderer("org.apache.fop.render.ps.PSRenderer");
  +//            break;
  +//        case RENDER_TXT:
  +//            setRenderer("org.apache.fop.render.txt.TXTRenderer()");
  +//            break;
  +//        case RENDER_MIF:
  +//            //foInputHandler will be set later
  +//            break;
  +//        case RENDER_XML:
  +//            setRenderer("org.apache.fop.render.xml.XMLRenderer");
  +//            break;
  +//        case RENDER_SVG:
  +//            setRenderer("org.apache.fop.render.svg.SVGRenderer");
  +//            break;
  +//        case RENDER_RTF:
  +//            //foInputHandler will be set later
  +//            break;
  +        default:
  +            rendererType = NOT_SET;
  +            throw new IllegalArgumentException("Unknown renderer type " + renderer);
  +        }
  +    }
  +
  +    /**
  +     * Set the Renderer to use.
  +     * @param renderer the renderer instance to use (Note: Logger must be set at 
this point)
  +     */
  +    public void setRenderer(Renderer renderer) {
  +        // AWTStarter calls this function directly
  +        if (renderer instanceof AWTRenderer) {
  +            rendererType = RENDER_AWT;
  +        }
  +        renderer.setProducer(Version.getVersion());
  +        renderer.setUserAgent(getUserAgent());
  +        this.renderer = renderer;
  +    }
  +
  +    /**
  +     * Returns the currently active renderer.
  +     * @return the renderer
  +     */
  +    public Renderer getRenderer() {
  +        return renderer;
  +    }
  +
  +    /**
  +     * Set the class name of the Renderer to use as well as the
  +     * producer string for those renderers that can make use of it.
  +     * @param rendererClassName classname of the renderer to use such as
  +     * "org.apache.fop.render.pdf.PDFRenderer"
  +     * @exception IllegalArgumentException if the classname was invalid.
  +     * @see #setRenderer(int)
  +     */
  +    public void setRenderer(String rendererClassName)
  +                throws IllegalArgumentException {
  +        try {
  +            renderer = (Renderer)Class.forName(rendererClassName).newInstance();
  +            renderer.setProducer(Version.getVersion());
  +            renderer.setUserAgent(getUserAgent());
  +        } catch (ClassNotFoundException e) {
  +            throw new IllegalArgumentException("Could not find "
  +                                               + rendererClassName);
  +        } catch (InstantiationException e) {
  +            throw new IllegalArgumentException("Could not instantiate "
  +                                               + rendererClassName);
  +        } catch (IllegalAccessException e) {
  +            throw new IllegalArgumentException("Could not access "
  +                                               + rendererClassName);
  +        } catch (ClassCastException e) {
  +            throw new IllegalArgumentException(rendererClassName
  +                                               + " is not a renderer");
  +        }
  +    }
  +
  +    /**
  +     * DOES NOTHING
  +     * TODO Eliminate or actualise
  +     */
  +    public synchronized void reset() {
  +    }
  +
  +    /**
  +     * Render the FO document read by a SAX Parser from an InputHandler
  +     * @param inputHandler the input handler containing the source and
  +     * parser information.
  +     * @throws FOPException if anything goes wrong.
  +     */
  +    public synchronized void render(InputHandler inputHandler)
  +                throws FOPException {
  +        throw new FOPException("Attempting to run null 'render' method");
       }
   
   }
  
  
  
  1.11.2.3  +11 -11    xml-fop/src/java/org/apache/fop/apps/Document.java
  
  Index: Document.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/apps/Document.java,v
  retrieving revision 1.11.2.2
  retrieving revision 1.11.2.3
  diff -u -r1.11.2.2 -r1.11.2.3
  --- Document.java     13 Mar 2004 08:44:23 -0000      1.11.2.2
  +++ Document.java     14 Mar 2004 11:18:47 -0000      1.11.2.3
  @@ -37,8 +37,8 @@
    */
   public class Document {
   
  -    /** The parent Driver object */
  -    private Driver driver;
  +    /** The parent Fop object */
  +    private Fop fop;
   
       /** Map containing fonts that have been used */
       private Map usedFonts;
  @@ -58,10 +58,10 @@
       private Logger log;
       /**
        * Main constructor
  -     * @param driver the Driver object that is the "parent" of this Document
  +     * @param fop the Fop object that is the "parent" of this Document
        */
  -    public Document(Driver driver) {
  -        this.driver = driver;
  +    public Document(Fop fop) {
  +        this.fop = fop;
           this.triplets = new java.util.HashMap();
           this.fonts = new java.util.HashMap();
           this.usedFonts = new java.util.HashMap();
  @@ -246,11 +246,11 @@
       }
   
       /**
  -     * Public accessor for the parent Driver of this Document
  -     * @return the parent Driver for this Document
  +     * Public accessor for the parent Fop of this Document
  +     * @return the parent Fop for this Document
        */
  -    public Driver getDriver() {
  -        return driver;
  +    public Fop getFop() {
  +        return fop;
       }
   
       /**
  @@ -272,7 +272,7 @@
        * @return the FOUserAgent used for processing this document
        */
       public FOUserAgent getUserAgent() {
  -        return getDriver().getUserAgent();
  +        return getFop().getUserAgent();
       }
   
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to