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

org.enhydra.xml.lazydom.LazyDOMInfoPrinter Maven / Gradle / Ivy

The newest version!
/*
 * Enhydra Java Application Server Project
 * 
 * The contents of this file are subject to the Enhydra 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 on
 * the Enhydra web site ( http://www.enhydra.org/ ).
 * 
 * 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 terms governing rights and limitations
 * under the License.
 * 
 * The Initial Developer of the Enhydra Application Server is Lutris
 * Technologies, Inc. The Enhydra Application Server and portions created
 * by Lutris Technologies, Inc. are Copyright Lutris Technologies, Inc.
 * All Rights Reserved.
 * 
 * Contributor(s):
 * 
 * $Id: LazyDOMInfoPrinter.java,v 1.2 2005/01/26 08:29:24 jkjome Exp $
 */

package org.enhydra.xml.lazydom;

import java.io.PrintWriter;

import org.enhydra.xml.dom.DOMInfoPrinter;
import org.enhydra.xml.dom.DOMTraversal;
import org.w3c.dom.Element;
import org.w3c.dom.Node;

/**
 * LazyDOM DOMInfo traversal handler.
 */
final public class LazyDOMInfoPrinter extends DOMInfoPrinter {
    /**
     * Constructor.
     */
    public LazyDOMInfoPrinter(int options,
                              DOMTraversal traverser,
                              PrintWriter out) {
        super(options, traverser, out);
    }

    /**
     * Print node name, add template indicator if a template node.
     */
    protected void printNodeName(Node node) {
        super.printNodeName(node);
        if (((LazyNode)node).isTemplateNode()) {
            fOut.print("%[T]");
        }
    }

    /**
     * Determine if an element has attributes that are to be printed, This
     * overrides the DOMInfoPrinter method and handles switching from instance
     * to template nodes.
     */ 
    protected boolean hasPrintAttributes(Element element) {
        LazyElement lazyElement = (LazyElement)element;
        if (lazyElement.isTemplateNode()) {
            // attribute are all template if node is template
            return super.hasPrintAttributes(lazyElement);
        } else if (lazyElement.areAttributesExpanded()) {
            // expand instance attributes, handle as normal
            return super.hasPrintAttributes(lazyElement);
        } else {
            // switch to template
            return super.hasPrintAttributes(lazyElement.getTemplateElement());
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy