All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.sf.joost.trace.TraceManager Maven / Gradle / Ivy

The newest version!
/*
 * $Id: TraceManager.java,v 1.8 2004/11/07 13:47:05 obecker Exp $
 *
 * The contents of this file are subject to the Mozilla Public License
 * Version 1.1 (the "License"); you may not use this file except in
 * compliance with the License. You may obtain a copy of the License at
 * http://www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 * for the specific language governing rights and limitations under the
 * License.
 *
 * The Original Code is: this file
 *
 * The Initial Developer of the Original Code is Anatolij Zubow.
 *
 * Portions created by  ______________________
 * are Copyright (C) ______ _______________________.
 * All Rights Reserved.
 *
 * Contributor(s): Oliver Becker.
 */

package net.sf.joost.trace;

import java.util.Vector;

import net.sf.joost.instruction.AbstractInstruction;
import net.sf.joost.stx.SAXEvent;
import net.sf.joost.trax.TransformerImpl;

/**
 * This class manages a collection of {@link TraceListener}, and acts as an
 * interface for the tracing functionality in Joost.
 * @version $Revision: 1.8 $ $Date: 2004/11/07 13:47:05 $
 * @author Zubow
 */
public class TraceManager {

    /**
     * Collection of registered listeners (must be synchronized).
     */
    private Vector traceListeners = null;

    /**
     * Default constructor for the tracemanager.
     */
    public TraceManager() {}

    /**
     * Check if tracelisteners are available.
     *
     * @return True if there are registered tracelisteners
     */
    public boolean hasTraceListeners() {
        return (traceListeners != null);
    }

    /**
     * Add a tracelistener (debugging and profiling).
     * @param newTraceListener A tracelistener to be added.
     */
    public void addTraceListener(TraceListener newTraceListener) {
        // set Joost-Transformer in debug-mode
        TransformerImpl.DEBUG_MODE = true;
        if (traceListeners == null) {
            traceListeners = new Vector();
        }
        // add new tracelistener
        traceListeners.addElement(newTraceListener);
    }

    /**
     * Remove a tracelistener.
     * @param oldTraceListener A tracelistener to be removed.
     */
    public void removeTraceListener(TraceListener oldTraceListener) {
        if (traceListeners != null) {
            // remove the given tracelistener from tracemanager
            traceListeners.removeElement(oldTraceListener);
        }
    }


    // ----------------------------------------------------------------------
    // Callback methods
    // ----------------------------------------------------------------------

    // ----------------------------------------------------------------------
    // Information about the source document
    // ----------------------------------------------------------------------

    /**
     * Fire a start processing event (open).
     */
    public void fireStartSourceDocument() {
        if (hasTraceListeners()) {
            // count of registered tracelisteners
            int countListener = traceListeners.size();
            for (int i = 0; i < countListener; i++) {
                TraceListener currentListener =
                        (TraceListener) traceListeners.elementAt(i);
                // call the according method on tracelistener
                currentListener.startSourceDocument();
            }
        }
    }

    /**
     * Fire at the end of processing (close).
     */
    public void fireEndSourceDocument() {
        if (hasTraceListeners()) {
            // count of registered tracelisteners
            int countListener = traceListeners.size();
            for (int i = 0; i < countListener; i++) {
                TraceListener currentListener =
                        (TraceListener) traceListeners.elementAt(i);
                // call the according method on tracelistener
                currentListener.endSourceDocument();
            }
        }
    }


    /**
     * Fire if a startelement event of the source gets processed.
     */
    public void fireStartSourceElement(SAXEvent saxevent) {
        if (hasTraceListeners()) {
            // count of registered tracelisteners
            int countListener = traceListeners.size();
            for (int i = 0; i < countListener; i++) {
                TraceListener currentListener =
                        (TraceListener) traceListeners.elementAt(i);
                // call the according method on tracelistener
                currentListener.startSourceElement(saxevent);
            }
        }
    }

    /**
     * Fire after a node of the source tree got processed.
     */
    public void fireEndSourceElement(SAXEvent saxevent) {
        if (hasTraceListeners()) {
            // count of registered tracelisteners
            int countListener = traceListeners.size();
            for (int i = 0; i < countListener; i++) {
                TraceListener currentListener =
                        (TraceListener) traceListeners.elementAt(i);
                // call the according method on tracelistener
                currentListener.endSourceElement(saxevent);
            }
        }
    }

    /**
     * Fire when a text event of the source was received.
     */
    public void fireSourceText(SAXEvent saxevent) {
        if (hasTraceListeners()) {
            // count of registered tracelisteners
            int countListener = traceListeners.size();
            for (int i = 0; i < countListener; i++) {
                TraceListener currentListener =
                        (TraceListener) traceListeners.elementAt(i);
                // call the according method on tracelistener
                currentListener.sourceText(saxevent);
            }
        }
    }

    /**
     * Fire when a PI-Event of the source was received.
     */
    public void fireSourcePI(SAXEvent saxevent) {
        if (hasTraceListeners()) {
            // count of registered tracelisteners
            int countListener = traceListeners.size();
            for (int i = 0; i < countListener; i++) {
                TraceListener currentListener =
                        (TraceListener) traceListeners.elementAt(i);
                // call the according method on tracelistener
                currentListener.sourcePI(saxevent);
            }
        }
    }

    /**
     * Called when a namespace mapping event of the source was received.
     */
    public void fireSourceMapping(SAXEvent saxevent) {
        if (hasTraceListeners()) {
            // count of registered tracelisteners
            int countListener = traceListeners.size();
            for (int i = 0; i < countListener; i++) {
                TraceListener currentListener =
                        (TraceListener) traceListeners.elementAt(i);
                // call the according method on tracelistener
                currentListener.sourceMapping(saxevent);
            }
        }
    }

    /**
     * Called when a comment event of the source was received.
     */
    public void fireSourceComment(SAXEvent saxevent) {
        if (hasTraceListeners()) {
            // count of registered tracelisteners
            int countListener = traceListeners.size();
            for (int i = 0; i < countListener; i++) {
                TraceListener currentListener =
                        (TraceListener) traceListeners.elementAt(i);
                // call the according method on tracelistener
                currentListener.sourceComment(saxevent);
            }
        }
    }

    // ----------------------------------------------------------------------
    // Information about instructions of the transformation sheet
    // ----------------------------------------------------------------------

    /**
     * Fire when an element of the stylesheet gets processed.
     */
    public void fireEnterInstructionNode(AbstractInstruction inst, SAXEvent event) {
        if (hasTraceListeners()) {
            // count of registered tracelisteners
            int countListener = traceListeners.size();
            for (int i = 0; i < countListener; i++) {
                TraceListener currentListener =
                        (TraceListener) traceListeners.elementAt(i);
                // call the according method on tracelistener
                currentListener.enterInstructionNode(inst, event);
            }
        }
    }

    /**
     * Fire after an element of the stylesheet got processed.
     */
    public void fireLeaveInstructionNode(AbstractInstruction inst, SAXEvent event) {
        if (hasTraceListeners()) {
            // count of registered tracelisteners
            int countListener = traceListeners.size();
            for (int i = 0; i < countListener; i++) {
                TraceListener currentListener =
                        (TraceListener) traceListeners.elementAt(i);
                // call the according method on tracelistener
                currentListener.leaveInstructionNode(inst, event);
            }
        }
    }

    // ----------------------------------------------------------------------
    // Information about emitter events
    // ----------------------------------------------------------------------

    /**
     * Indicates the begin of the result document.
     */
    public void fireStartResultDocument() {
        if (hasTraceListeners()) {
            // count of registered tracelisteners
            int countListener = traceListeners.size();
            for (int i = 0; i < countListener; i++) {
                TraceListener currentListener =
                        (TraceListener) traceListeners.elementAt(i);
                // call the according method on tracelistener
                currentListener.startResultDocument();
            }
        }
    }

    /**
     * Indicates the end of the result document.
     */
    public void fireEndResultDocument() {
        if (hasTraceListeners()) {
            // count of registered tracelisteners
            int countListener = traceListeners.size();
            for (int i = 0; i < countListener; i++) {
                TraceListener currentListener =
                        (TraceListener) traceListeners.elementAt(i);
                // call the according method on tracelistener
                currentListener.endResultDocument();
            }
        }
    }

    /**
     * Indicates the start of an element of the result document.
     */
    public void fireStartResultElement(SAXEvent saxevent) {
        if (hasTraceListeners()) {
            // count of registered tracelisteners
            int countListener = traceListeners.size();
            for (int i = 0; i < countListener; i++) {
                TraceListener currentListener =
                        (TraceListener) traceListeners.elementAt(i);
                // call the according method on tracelistener
                currentListener.startResultElement(saxevent);
            }
        }
    }

    /**
     * Indicates the start of an element of the result document.
     */
    public void fireEndResultElement(SAXEvent saxevent) {
        if (hasTraceListeners()) {
            // count of registered tracelisteners
            int countListener = traceListeners.size();
            for (int i = 0; i < countListener; i++) {
                TraceListener currentListener =
                        (TraceListener) traceListeners.elementAt(i);
                // call the according method on tracelistener
                currentListener.endResultElement(saxevent);
            }
        }
    }

    /**
     * Indicates the text event of the result document.
     */
    public void fireResultText(SAXEvent saxevent) {
        if (hasTraceListeners()) {
            // count of registered tracelisteners
            int countListener = traceListeners.size();
            for (int i = 0; i < countListener; i++) {
                TraceListener currentListener =
                        (TraceListener) traceListeners.elementAt(i);
                // call the according method on tracelistener
                currentListener.resultText(saxevent);
            }
        }
    }

    /**
     * Indicates the PI event of the result document.
     */
    public void fireResultPI(SAXEvent saxevent) {
        if (hasTraceListeners()) {
            // count of registered tracelisteners
            int countListener = traceListeners.size();
            for (int i = 0; i < countListener; i++) {
                TraceListener currentListener =
                        (TraceListener) traceListeners.elementAt(i);
                // call the according method on tracelistener
                currentListener.resultPI(saxevent);
            }
        }
    }

    /**
     * Indicates the comment event of the result document.
     */
    public void fireResultComment(SAXEvent saxevent) {
        if (hasTraceListeners()) {
            // count of registered tracelisteners
            int countListener = traceListeners.size();
            for (int i = 0; i < countListener; i++) {
                TraceListener currentListener =
                        (TraceListener) traceListeners.elementAt(i);
                // call the according method on tracelistener
                currentListener.resultComment(saxevent);
            }
        }
    }

    /**
     * Indicates the start CDATA event of the result document.
     */
    public void fireStartResultCDATA() {
        if (hasTraceListeners()) {
            // count of registered tracelisteners
            int countListener = traceListeners.size();
            for (int i = 0; i < countListener; i++) {
                TraceListener currentListener =
                        (TraceListener) traceListeners.elementAt(i);
                // call the according method on tracelistener
                currentListener.startResultCDATA();
            }
        }
    }

    /**
     * Indicates the end CDATA event of the result document.
     */
    public void fireEndResultCDATA() {
        if (hasTraceListeners()) {
            // count of registered tracelisteners
            int countListener = traceListeners.size();
            for (int i = 0; i < countListener; i++) {
                TraceListener currentListener =
                        (TraceListener) traceListeners.elementAt(i);
                // call the according method on tracelistener
                currentListener.endResultCDATA();
            }
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy