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

org.enhydra.xml.lazydom.LazyText 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: LazyText.java,v 1.3 2005/01/26 08:29:24 jkjome Exp $
 */

package org.enhydra.xml.lazydom;

import org.enhydra.apache.xerces.dom.TextImpl;
import org.enhydra.xml.io.PreFormattedText;
import org.w3c.dom.Document;
import org.w3c.dom.Node;

/**
 * Lazy text node.
 */
public class LazyText extends TextImpl implements LazyNode, PreFormattedText {
    /**
     * Constructor.
     * @param ownerDoc The document that owns this node.
     * @param template If not-null, get the parameters from this template.
     * @param data The node data. Will be ignored if template is not-null.
     */
    protected LazyText(LazyDocument ownerDoc,
                       LazyText template,
                       String data) {
    	super(ownerDoc, 
              (template != null) ? template.getData() : data);
        if (template != null) {
            fTemplateNode = template;
            fNodeId = template.getNodeId();
        }
    }

    //-------------------------------------------------------------------------
    // LazyText specific
    //-------------------------------------------------------------------------

    /**
     * Template for this Text.
     */
    private LazyText fTemplateNode = null;

    /**
     * Get the template for this node.
     * @see LazyNode#getTemplateNode
     */
    public LazyText getTemplateText() {
        return fTemplateNode;
    }

    /**
     * @see Node#cloneNode
     */
    public Node cloneNode(boolean deep) {
        // Just creats a new node with the same value
        return super.cloneNode(deep);
    }

    //-------------------------------------------------------------------------
    // LazyNode support
    //-------------------------------------------------------------------------

    /*
     * Node id for this element.
     */
    private int fNodeId = NULL_NODE_ID;

    /**
     * Is this a template node?
     */
    private boolean fIsTemplateNode;

    /**
     * Mark the node as a template node and associated preformatted text.
     * @see LazyNode#makeTemplateNode
     * @see PreFormattedText#setPreFormattedText
     */
    public void makeTemplateNode(int nodeId,
                                 String text) {
        fNodeId = nodeId;
        fIsTemplateNode = true;
        fPreFormattedText = text;
    }

    /*
     * @see LazyNode#makeTemplateNode
     */
    public void makeTemplateNode(int nodeId) {
        fNodeId = nodeId;
        fIsTemplateNode = true;
    }

    /**
     * @see LazyNode#getNodeId
     */
    public int getNodeId() {
        return fNodeId;
    }

    /**
     * @see LazyNode#isTemplateNode
     */
    public boolean isTemplateNode() {
        return fIsTemplateNode;
    }

    /**
     * @see LazyNode#getTemplateNode
     */
    public LazyNode getTemplateNode() {
        return fTemplateNode;
    }

    /**
     * @see LazyNode#templateClone
     */
    public LazyNode templateClone(Document ownerDocument) {
        return new LazyText((LazyDocument)ownerDocument, this, null);
    }

    /**
     * Set the node value, invalidating the id.  All node data is modified
     * by this routine.
     * @see org.w3c.dom.Node#setNodeValue
     */
    public void setNodeValue(String value) {
        fNodeId = NULL_NODE_ID;
        super.setNodeValue(value);
    }

    //-------------------------------------------------------------------------
    // PreFormattedText specific
    //-------------------------------------------------------------------------

    /**
     * Pre-formatted text associated with the node.
     */
    private String fPreFormattedText;

    /**
     * @see PreFormattedText#getPreFormattedText
     */
    public String getPreFormattedText() {
        return fPreFormattedText;
    }

    /**
     * @see PreFormattedText#setPreFormattedText
     */
    public void setPreFormattedText(String text) {
        fPreFormattedText = text;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy