⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 elementdeclimpl.java

📁 Java的面向对象数据库系统的源代码
💻 JAVA
字号:
/**
 * org/ozone-db/xml/dom/ElementDeclImpl.java
 *
 * The contents of this file are subject to the OpenXML Public
 * License Version 1.0; you may not use this file except in compliance
 * with the License. You may obtain a copy of the License at
 * http://www.openxml.org/license.html
 *
 * THIS SOFTWARE IS DISTRIBUTED ON AN "AS IS" BASIS WITHOUT WARRANTY
 * OF ANY KIND, EITHER EXPRESSED OR IMPLIED. THE INITIAL DEVELOPER
 * AND ALL CONTRIBUTORS SHALL NOT BE LIABLE FOR ANY DAMAGES AS A
 * RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS
 * DERIVATIVES. SEE THE LICENSE FOR THE SPECIFIC LANGUAGE GOVERNING
 * RIGHTS AND LIMITATIONS UNDER THE LICENSE.
 *
 * The Initial Developer of this code under the License is Assaf Arkin.
 * Portions created by Assaf Arkin are Copyright (C) 1998, 1999.
 * All Rights Reserved.
 */

/**
 * Changes for Persistent DOM running with ozone are
 * Copyright 1999 by SMB GmbH. All rights reserved.
 */

package org.ozoneDB.xml.dom;

import org.w3c.dom.*;


/**
 * @version $Revision: 1.2 $ $Date: 2003/11/20 23:18:42 $
 * @author <a href="mailto:arkin@trendline.co.il">Assaf Arkin</a>
 * @see org.w3c.dom.Node
 * @see NodeImpl
 */
public class ElementDeclImpl extends NodeImpl implements ElementDeclProxy {

    final static long serialVersionUID = 1;


    public short getNodeType() {
        return ELEMENT_DECL_NODE;
    }


    public String getName() {
        return getNodeName();
    }


    public synchronized boolean equals( Object other ) {
        /*
        EntityProxy otherX;

        // Test for node equality (this covers entity name and all its children)
        // and then test for specific entity qualities.
        if (super.equals (other)) {
            otherX = (EntityProxy) other;
            return (getPublicId ().equals (otherX.getPublicId ()) &&
                    getSystemId ().equals (otherX.getSystemId ()) &&
                    getNotation ().equals (otherX.getNotation ()));
            }
         */
        return false;
    }


    /**
     * Returns true if element is empty. An empty element cannot contain any
     * children and must be specified with an empty tag, or an opening tag
     * immediately followed by a closing tag.
     *
     * @return True if element is empty
     */
    public boolean isEmpty() {
        return _empty;
    }


    /**
     * Returns true if element may contain any child elements and character data
     * in any order.
     *
     * @return True if element supports any contents
     */
    public boolean isAny() {
        return _any;
    }


    /**
     * Returns true if element contains mixed contents. Mixed contents includes
     * both elements and character data in any particular order. This option
     * implies that both {@link #isEmpty} and {@link #isAny} return false.
     * If all three are false, then contents is subject to exact order.
     *
     * @return True if element contains mixed contents
     */
    public boolean isMixed() {
        return _mixed;
    }


    /**
     * Returns true if the opening tag is optional. Even if the opening tag is
     * missing from the document for this element, the document is still valid.
     * This option only relates to HTML document, and implies that {@link
     * #requiresClosingTag} is also true.
     *
     * @return True if opening tag is optional
     */
    public boolean requiresOpeningTag() {
        return _optionalOpen;
    }


    /**
     * Returns true if the closing tag is optional. Even if the closing tag is
     * missing from the document for this element, the document is still valid.
     * This option only relates to HTML document.
     *
     * @return True if closing tag is optional
     */
    public boolean requiresClosingTag() {
        return _optionalClose;
    }


    public final Object clone() {
        ElementDeclProxy clone = null;
        try {
            clone = (ElementDeclProxy)database().createObject( ElementDeclImpl.class.getName() );
            (clone).init( _ownerDocument, getNodeName(), null, true );
            cloneInto( clone, true );
        } catch (Exception except) {
            throw new DOMExceptionImpl( DOMExceptionImpl.PDOM_ERR, except.getMessage() );
        }
        return clone;
    }


    public final Node cloneNode( boolean deep ) {
        ElementDeclProxy clone = null;
        try {
            clone = (ElementDeclProxy)database().createObject( ElementDeclImpl.class.getName() );
            (clone).init( _ownerDocument, getNodeName(), null, true );
            cloneInto( clone, deep );
        } catch (Exception except) {
            throw new DOMExceptionImpl( DOMExceptionImpl.PDOM_ERR, except.getMessage() );
        }
        return clone;
    }


    /**
     * Constructor requires owner document, element name and its definition.
     *
     * @param owner The owner document
     * @param name The element name
     * @param definition The element definition
     */
    ElementDeclImpl( DocumentImpl owner, String name, String definition ) {
        this( owner, name, definition, false, false );
    }


    /**
     * Constructor requires owner document, element name and its definition.
     * The flags for optional opening and closing tag are supported only for
     * HTML documents.
     *
     * @param owner The owner document
     * @param name The element name
     * @param definition The element definition
     * @param optionalOpen The opening tag is optional
     * @param optionalClose The closing tag is optional
     */
    ElementDeclImpl( DocumentImpl owner, String name, String definition, boolean optionalOpen, boolean optionalClose ) {
        super( owner, name, null, true );
        _optionalOpen = optionalOpen;
        if (_optionalOpen) {
            _optionalClose = true;
        } else {
            _optionalClose = optionalClose;
        }
        if (definition.equals( "EMPTY" )) {
            _empty = true;
        } else if (definition.equals( "ANY" )) {
            _any = true;
        } else {
        }
    }


    private ElementDeclImpl( DocumentImpl owner, String name ) {
        super( owner, name, null, true );
    }

    /**
     * Indicates that the opening tag is optional: even if missing from the
     * document, the document is still valid. Applies only to HTML documents.
     * Also implies that {@link #_optionalClose} is true.
     */
    private boolean _optionalOpen;


    /**
     * Indicates that the closing tag is optional: even if missing from the
     * document, the document is still valid. Applies only to HTML documents.
     */
    private boolean _optionalClose;


    /**
     * Indicates that the element is empty.
     */
    private boolean _empty;


    /**
     * Indicates that the element can contain any child elements of any type
     * and any order.
     */
    private boolean _any;


    /**
     * Indicates that the element contains mixed contents. Mixed contents
     * includes both elements and character data in any particular order.
     */
    private boolean _mixed;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -