mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			710 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Java
		
	
	
	
			
		
		
	
	
			710 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Java
		
	
	
	
/* IIOMetadataNode.java --
 | 
						|
   Copyright (C) 2004  Free Software Foundation, Inc.
 | 
						|
 | 
						|
This file is part of GNU Classpath.
 | 
						|
 | 
						|
GNU Classpath is free software; you can redistribute it and/or modify
 | 
						|
it under the terms of the GNU General Public License as published by
 | 
						|
the Free Software Foundation; either version 2, or (at your option)
 | 
						|
any later version.
 | 
						|
 | 
						|
GNU Classpath is distributed in the hope that it will be useful, but
 | 
						|
WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
						|
General Public License for more details.
 | 
						|
 | 
						|
You should have received a copy of the GNU General Public License
 | 
						|
along with GNU Classpath; see the file COPYING.  If not, write to the
 | 
						|
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 | 
						|
02110-1301 USA.
 | 
						|
 | 
						|
Linking this library statically or dynamically with other modules is
 | 
						|
making a combined work based on this library.  Thus, the terms and
 | 
						|
conditions of the GNU General Public License cover the whole
 | 
						|
combination.
 | 
						|
 | 
						|
As a special exception, the copyright holders of this library give you
 | 
						|
permission to link this library with independent modules to produce an
 | 
						|
executable, regardless of the license terms of these independent
 | 
						|
modules, and to copy and distribute the resulting executable under
 | 
						|
terms of your choice, provided that you also meet, for each linked
 | 
						|
independent module, the terms and conditions of the license of that
 | 
						|
module.  An independent module is a module which is not derived from
 | 
						|
or based on this library.  If you modify this library, you may extend
 | 
						|
this exception to your version of the library, but you are not
 | 
						|
obligated to do so.  If you do not wish to do so, delete this
 | 
						|
exception statement from your version. */
 | 
						|
 | 
						|
 | 
						|
package javax.imageio.metadata;
 | 
						|
 | 
						|
import java.util.ArrayList;
 | 
						|
import java.util.HashMap;
 | 
						|
import java.util.Iterator;
 | 
						|
import java.util.List;
 | 
						|
 | 
						|
import org.w3c.dom.Attr;
 | 
						|
import org.w3c.dom.DOMException;
 | 
						|
import org.w3c.dom.Document;
 | 
						|
import org.w3c.dom.Element;
 | 
						|
import org.w3c.dom.NamedNodeMap;
 | 
						|
import org.w3c.dom.Node;
 | 
						|
import org.w3c.dom.NodeList;
 | 
						|
import org.w3c.dom.TypeInfo;
 | 
						|
import org.w3c.dom.UserDataHandler;
 | 
						|
import javax.imageio.metadata.IIOMetadataFormatImpl.IIOMetadataNodeAttr;
 | 
						|
 | 
						|
public class IIOMetadataNode
 | 
						|
  implements Element, NodeList
 | 
						|
{
 | 
						|
  private String name;
 | 
						|
  private HashMap attrs = new HashMap();
 | 
						|
  private List children = new ArrayList();
 | 
						|
  private IIOMetadataNode parent;
 | 
						|
  private Object obj;
 | 
						|
 | 
						|
  /**
 | 
						|
   * Simple NamedNodeMap class for IIOMetadataNode.
 | 
						|
   *
 | 
						|
   * @author jlquinn
 | 
						|
   */
 | 
						|
  private class IIONamedNodeMap implements NamedNodeMap
 | 
						|
  {
 | 
						|
    HashMap attrs;
 | 
						|
 | 
						|
    /**
 | 
						|
     * @param attrs
 | 
						|
     * @param node
 | 
						|
     */
 | 
						|
    public IIONamedNodeMap(HashMap attrs)
 | 
						|
    {
 | 
						|
      this.attrs = attrs;
 | 
						|
    }
 | 
						|
 | 
						|
    /* (non-Javadoc)
 | 
						|
     * @see org.w3c.dom.NamedNodeMap#getNamedItem(java.lang.String)
 | 
						|
     */
 | 
						|
    public Node getNamedItem(String name)
 | 
						|
    {
 | 
						|
      return (Node)attrs.get(name);
 | 
						|
    }
 | 
						|
 | 
						|
    /* (non-Javadoc)
 | 
						|
     * @see org.w3c.dom.NamedNodeMap#setNamedItem(org.w3c.dom.Node)
 | 
						|
     */
 | 
						|
    public Node setNamedItem(Node arg) throws DOMException
 | 
						|
    {
 | 
						|
      if (arg instanceof IIOMetadataNodeAttr)
 | 
						|
        {
 | 
						|
          IIOMetadataNodeAttr attr = (IIOMetadataNodeAttr) arg;
 | 
						|
          // The only code that can successfully do this is in this package.
 | 
						|
          if (attr.owner != null)
 | 
						|
            throw new DOMException(DOMException.INUSE_ATTRIBUTE_ERR, "");
 | 
						|
          return (Node)attrs.put(attr.name, attr);
 | 
						|
        }
 | 
						|
      // Anything else gets treated as an invalid op.
 | 
						|
      throw new DOMException(DOMException.HIERARCHY_REQUEST_ERR, "");
 | 
						|
    }
 | 
						|
 | 
						|
    /* (non-Javadoc)
 | 
						|
     * @see org.w3c.dom.NamedNodeMap#removeNamedItem(java.lang.String)
 | 
						|
     */
 | 
						|
    public Node removeNamedItem(String name) throws DOMException
 | 
						|
    {
 | 
						|
      return (Node)attrs.remove(name);
 | 
						|
    }
 | 
						|
 | 
						|
    /* (non-Javadoc)
 | 
						|
     * @see org.w3c.dom.NamedNodeMap#item(int)
 | 
						|
     */
 | 
						|
    public Node item(int index)
 | 
						|
    {
 | 
						|
      return (Node)attrs.values().toArray()[index];
 | 
						|
    }
 | 
						|
 | 
						|
    /* (non-Javadoc)
 | 
						|
     * @see org.w3c.dom.NamedNodeMap#getLength()
 | 
						|
     */
 | 
						|
    public int getLength()
 | 
						|
    {
 | 
						|
      return attrs.size();
 | 
						|
    }
 | 
						|
 | 
						|
    /* (non-Javadoc)
 | 
						|
     * @see org.w3c.dom.NamedNodeMap#getNamedItemNS(java.lang.String, java.lang.String)
 | 
						|
     */
 | 
						|
    public Node getNamedItemNS(String namespaceURI, String localName)
 | 
						|
    {
 | 
						|
      return getNamedItem(localName);
 | 
						|
    }
 | 
						|
 | 
						|
    /* (non-Javadoc)
 | 
						|
     * @see org.w3c.dom.NamedNodeMap#setNamedItemNS(org.w3c.dom.Node)
 | 
						|
     */
 | 
						|
    public Node setNamedItemNS(Node arg) throws DOMException
 | 
						|
    {
 | 
						|
      return setNamedItem(arg);
 | 
						|
    }
 | 
						|
 | 
						|
    /* (non-Javadoc)
 | 
						|
     * @see org.w3c.dom.NamedNodeMap#removeNamedItemNS(java.lang.String, java.lang.String)
 | 
						|
     */
 | 
						|
    public Node removeNamedItemNS(String namespaceURI, String localName)
 | 
						|
      throws DOMException
 | 
						|
    {
 | 
						|
      return removeNamedItem(localName);
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * Simple NodeList implementation for IIOMetadataNode.
 | 
						|
   *
 | 
						|
   * @author jlquinn
 | 
						|
   *
 | 
						|
   */
 | 
						|
  private class IIONodeList implements NodeList
 | 
						|
  {
 | 
						|
    List children = new ArrayList();
 | 
						|
 | 
						|
    /* (non-Javadoc)
 | 
						|
     * @see org.w3c.dom.NodeList#item(int)
 | 
						|
     */
 | 
						|
    public Node item(int index)
 | 
						|
    {
 | 
						|
      return (index < children.size()) ? (Node)children.get(index) : null;
 | 
						|
    }
 | 
						|
 | 
						|
    /* (non-Javadoc)
 | 
						|
     * @see org.w3c.dom.NodeList#getLength()
 | 
						|
     */
 | 
						|
    public int getLength()
 | 
						|
    {
 | 
						|
      return children.size();
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  public IIOMetadataNode()
 | 
						|
  {
 | 
						|
    // Do nothing here.
 | 
						|
  }
 | 
						|
 | 
						|
  public IIOMetadataNode(String nodename)
 | 
						|
  {
 | 
						|
    name = nodename;
 | 
						|
  }
 | 
						|
 | 
						|
  public Object getUserObject()
 | 
						|
  {
 | 
						|
    return obj;
 | 
						|
  }
 | 
						|
 | 
						|
  public void setUserObject(Object o)
 | 
						|
  {
 | 
						|
    obj = o;
 | 
						|
  }
 | 
						|
 | 
						|
  public short compareDocumentPosition(Node other)
 | 
						|
    throws DOMException
 | 
						|
  {
 | 
						|
    return Element.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC;
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Element#getAttribute(java.lang.String)
 | 
						|
   */
 | 
						|
  public String getAttribute(String name)
 | 
						|
  {
 | 
						|
    Attr anode = (Attr) attrs.get(name);
 | 
						|
    return anode != null ? anode.getValue() : null;
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Element#getAttributeNode(java.lang.String)
 | 
						|
   */
 | 
						|
  public Attr getAttributeNode(String name)
 | 
						|
  {
 | 
						|
    String val = getAttribute(name);
 | 
						|
    if (val != null)
 | 
						|
      return new IIOMetadataNodeAttr(this, name, val);
 | 
						|
    return null;
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Element#getAttributeNodeNS(java.lang.String, java.lang.String)
 | 
						|
   */
 | 
						|
  public Attr getAttributeNodeNS(String namespaceURI, String localName)
 | 
						|
  {
 | 
						|
    return getAttributeNode(localName);
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Element#getAttributeNS(java.lang.String, java.lang.String)
 | 
						|
   */
 | 
						|
  public String getAttributeNS(String namespaceURI, String localName)
 | 
						|
  {
 | 
						|
    return getAttribute(localName);
 | 
						|
  }
 | 
						|
 | 
						|
  public String getBaseURI()
 | 
						|
  {
 | 
						|
    return null;
 | 
						|
  }
 | 
						|
 | 
						|
  // Recursive function for assembling a node list.
 | 
						|
  private void getElementsRecurse(IIONodeList list, String name)
 | 
						|
  {
 | 
						|
    for (int i=0; i < children.size(); i++)
 | 
						|
    {
 | 
						|
      if (((Node)children.get(i)).getNodeName().equals(name))
 | 
						|
        list.children.add(children.get(i));
 | 
						|
      getElementsRecurse(list, name);
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Element#getElementsByTagName(java.lang.String)
 | 
						|
   */
 | 
						|
  public NodeList getElementsByTagName(String name)
 | 
						|
  {
 | 
						|
    IIONodeList list = new IIONodeList();
 | 
						|
    getElementsRecurse(list, name);
 | 
						|
    return list;
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Element#getElementsByTagNameNS(java.lang.String, java.lang.String)
 | 
						|
   */
 | 
						|
  public NodeList getElementsByTagNameNS(String namespaceURI, String localName)
 | 
						|
  {
 | 
						|
    IIONodeList list = new IIONodeList();
 | 
						|
    getElementsRecurse(list, name);
 | 
						|
    return list;
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Element#getTagName()
 | 
						|
   */
 | 
						|
  public String getTagName()
 | 
						|
  {
 | 
						|
    return name;
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Element#hasAttribute(java.lang.String)
 | 
						|
   */
 | 
						|
  public boolean hasAttribute(String name)
 | 
						|
  {
 | 
						|
    return attrs.containsKey(name);
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Element#hasAttributeNS(java.lang.String, java.lang.String)
 | 
						|
   */
 | 
						|
  public boolean hasAttributeNS(String namespaceURI, String localName)
 | 
						|
  {
 | 
						|
    return attrs.containsKey(localName);
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Element#removeAttribute(java.lang.String)
 | 
						|
   */
 | 
						|
  public void removeAttribute(String name)
 | 
						|
  {
 | 
						|
    attrs.remove(name);
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Element#removeAttributeNode(org.w3c.dom.Attr)
 | 
						|
   */
 | 
						|
  public Attr removeAttributeNode(Attr oldAttr)
 | 
						|
  {
 | 
						|
    return (Attr)attrs.remove(oldAttr.getName());
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Element#removeAttributeNS(java.lang.String, java.lang.String)
 | 
						|
   */
 | 
						|
  public void removeAttributeNS(String namespaceURI, String localName)
 | 
						|
  {
 | 
						|
    removeAttribute(localName);
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Element#setAttribute(java.lang.String, java.lang.String)
 | 
						|
   */
 | 
						|
  public void setAttribute(String name, String value)
 | 
						|
  {
 | 
						|
    Attr attr = getAttributeNode(name);
 | 
						|
    if (attr != null)
 | 
						|
      attr.setValue(value);
 | 
						|
    else
 | 
						|
      attrs.put(name, new IIOMetadataNodeAttr(this, name, value));
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Element#setAttributeNode(org.w3c.dom.Attr)
 | 
						|
   */
 | 
						|
  public Attr setAttributeNode(Attr newAttr)
 | 
						|
  {
 | 
						|
    return (Attr)attrs.put(newAttr.getName(), newAttr);
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Element#setAttributeNodeNS(org.w3c.dom.Attr)
 | 
						|
   */
 | 
						|
  public Attr setAttributeNodeNS(Attr newAttr)
 | 
						|
  {
 | 
						|
    return (Attr)attrs.put(newAttr.getName(), newAttr);
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Element#setAttributeNS(java.lang.String, java.lang.String, java.lang.String)
 | 
						|
   */
 | 
						|
  public void setAttributeNS(String namespaceURI, String qualifiedName, String value)
 | 
						|
  {
 | 
						|
    setAttribute(qualifiedName, value);
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.NodeList#getLength()
 | 
						|
   */
 | 
						|
  public int getLength()
 | 
						|
  {
 | 
						|
    return children.size();
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.NodeList#item(int)
 | 
						|
   */
 | 
						|
  public Node item(int index)
 | 
						|
  {
 | 
						|
    if (index < children.size())
 | 
						|
      return (Node)children.get(index);
 | 
						|
    else
 | 
						|
      return null;
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Node#appendChild(org.w3c.dom.Node)
 | 
						|
   */
 | 
						|
  public Node appendChild(Node newChild)
 | 
						|
  {
 | 
						|
    if (newChild == null)
 | 
						|
      throw new IllegalArgumentException("Child node is null");
 | 
						|
 | 
						|
    IIOMetadataNode child = (IIOMetadataNode) newChild;
 | 
						|
 | 
						|
    children.add(child);
 | 
						|
    child.parent = this;
 | 
						|
    return this;
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Node#cloneNode(boolean)
 | 
						|
   */
 | 
						|
  public Node cloneNode(boolean deep)
 | 
						|
  {
 | 
						|
    IIOMetadataNode newnode = new IIOMetadataNode(name);
 | 
						|
    newnode.parent = null;
 | 
						|
    newnode.obj = obj;
 | 
						|
    if (deep)
 | 
						|
    {
 | 
						|
      for (int i=0; i < children.size(); i++)
 | 
						|
        newnode.children.add(((Node)children.get(i)).cloneNode(deep));
 | 
						|
    }
 | 
						|
 | 
						|
    // clone attrs
 | 
						|
    for (Iterator it = attrs.values().iterator(); it.hasNext();)
 | 
						|
    {
 | 
						|
      IIOMetadataNodeAttr attr = (IIOMetadataNodeAttr)it.next();
 | 
						|
      newnode.attrs.put(attr.name, attr.cloneNode(deep));
 | 
						|
      attr.owner = newnode;
 | 
						|
    }
 | 
						|
 | 
						|
    return newnode;
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Node#getAttributes()
 | 
						|
   */
 | 
						|
  public NamedNodeMap getAttributes()
 | 
						|
  {
 | 
						|
    return new IIONamedNodeMap(attrs);
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Node#getChildNodes()
 | 
						|
   */
 | 
						|
  public NodeList getChildNodes()
 | 
						|
  {
 | 
						|
    return this;
 | 
						|
  }
 | 
						|
 | 
						|
  public Object getFeature(String feature, String version)
 | 
						|
  {
 | 
						|
    return null;
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Node#getFirstChild()
 | 
						|
   */
 | 
						|
  public Node getFirstChild()
 | 
						|
  {
 | 
						|
    return (children.size() > 0) ? (Node)children.get(0) : null;
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Node#getLastChild()
 | 
						|
   */
 | 
						|
  public Node getLastChild()
 | 
						|
  {
 | 
						|
    return (children.size() > 0) ? (Node)children.get(children.size() - 1)
 | 
						|
           : null;
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Node#getLocalName()
 | 
						|
   */
 | 
						|
  public String getLocalName()
 | 
						|
  {
 | 
						|
    return name;
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Node#getNamespaceURI()
 | 
						|
   */
 | 
						|
  public String getNamespaceURI()
 | 
						|
  {
 | 
						|
    return null;
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Node#getNextSibling()
 | 
						|
   */
 | 
						|
  public Node getNextSibling()
 | 
						|
  {
 | 
						|
    // If this op needs to be faster, add links to prev and next nodes.
 | 
						|
    if (parent == null) return null;
 | 
						|
    int idx = parent.children.indexOf(this);
 | 
						|
    return (idx == parent.children.size() - 1) ? null
 | 
						|
        : (Node)parent.children.get(idx + 1);
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Node#getNodeName()
 | 
						|
   */
 | 
						|
  public String getNodeName()
 | 
						|
  {
 | 
						|
    return name;
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Node#getNodeType()
 | 
						|
   */
 | 
						|
  public short getNodeType()
 | 
						|
  {
 | 
						|
    return ELEMENT_NODE;
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Node#getNodeValue()
 | 
						|
   */
 | 
						|
  public String getNodeValue()
 | 
						|
  {
 | 
						|
    return null;
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Node#getOwnerDocument()
 | 
						|
   */
 | 
						|
  public Document getOwnerDocument()
 | 
						|
  {
 | 
						|
    // IOMetadataNodes have no owner
 | 
						|
    return null;
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Node#getParentNode()
 | 
						|
   */
 | 
						|
  public Node getParentNode()
 | 
						|
  {
 | 
						|
    return parent;
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Node#getPrefix()
 | 
						|
   */
 | 
						|
  public String getPrefix()
 | 
						|
  {
 | 
						|
    return null;
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Node#getPreviousSibling()
 | 
						|
   */
 | 
						|
  public Node getPreviousSibling()
 | 
						|
  {
 | 
						|
    // If this op needs to be faster, add links to prev and next nodes.
 | 
						|
    if (parent == null) return null;
 | 
						|
    int idx = parent.children.indexOf(this);
 | 
						|
    return (idx == 0) ? null
 | 
						|
        : (Node)parent.children.get(idx - 1);
 | 
						|
  }
 | 
						|
 | 
						|
  public TypeInfo getSchemaTypeInfo()
 | 
						|
  {
 | 
						|
    return null;
 | 
						|
  }
 | 
						|
 | 
						|
  public String getTextContent()
 | 
						|
    throws DOMException
 | 
						|
  {
 | 
						|
    return null;
 | 
						|
  }
 | 
						|
 | 
						|
  public Object getUserData(String key)
 | 
						|
  {
 | 
						|
    return null;
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Node#hasAttributes()
 | 
						|
   */
 | 
						|
  public boolean hasAttributes()
 | 
						|
  {
 | 
						|
    return !attrs.isEmpty();
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Node#hasChildNodes()
 | 
						|
   */
 | 
						|
  public boolean hasChildNodes()
 | 
						|
  {
 | 
						|
    return !children.isEmpty();
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Node#insertBefore(org.w3c.dom.Node, org.w3c.dom.Node)
 | 
						|
   */
 | 
						|
  public Node insertBefore(Node newChild, Node refChild)
 | 
						|
  {
 | 
						|
    if (newChild == null)
 | 
						|
      throw new IllegalArgumentException();
 | 
						|
 | 
						|
    int idx = children.indexOf(refChild);
 | 
						|
    if (idx == -1)
 | 
						|
      children.add(newChild);
 | 
						|
    else
 | 
						|
      children.add(idx, newChild);
 | 
						|
    ((IIOMetadataNode)newChild).parent = this;
 | 
						|
 | 
						|
    return newChild;
 | 
						|
  }
 | 
						|
 | 
						|
  public boolean isDefaultNamespace(String namespaceURI)
 | 
						|
  {
 | 
						|
    return true;
 | 
						|
  }
 | 
						|
 | 
						|
  public boolean isEqualNode(Node arg)
 | 
						|
  {
 | 
						|
    return true;
 | 
						|
  }
 | 
						|
 | 
						|
  public boolean isSameNode(Node other)
 | 
						|
  {
 | 
						|
    return this == other;
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Node#isSupported(java.lang.String, java.lang.String)
 | 
						|
   */
 | 
						|
  public boolean isSupported(String feature, String version)
 | 
						|
  {
 | 
						|
    // No DOM features are supported
 | 
						|
    return false;
 | 
						|
  }
 | 
						|
 | 
						|
  public String lookupNamespaceURI(String prefix)
 | 
						|
  {
 | 
						|
    return null;
 | 
						|
  }
 | 
						|
 | 
						|
  public String lookupPrefix(String namespaceURI)
 | 
						|
  {
 | 
						|
    return null;
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Node#normalize()
 | 
						|
   */
 | 
						|
  public void normalize()
 | 
						|
  {
 | 
						|
    // No text nodes so no action
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Node#removeChild(org.w3c.dom.Node)
 | 
						|
   */
 | 
						|
  public Node removeChild(Node oldChild)
 | 
						|
  {
 | 
						|
    if (oldChild == null)
 | 
						|
      throw new IllegalArgumentException();
 | 
						|
    children.remove(oldChild);
 | 
						|
    ((IIOMetadataNode)oldChild).parent = null;
 | 
						|
 | 
						|
    return oldChild;
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Node#replaceChild(org.w3c.dom.Node, org.w3c.dom.Node)
 | 
						|
   */
 | 
						|
  public Node replaceChild(Node newChild, Node oldChild)
 | 
						|
  {
 | 
						|
    if (newChild == null)
 | 
						|
      throw new IllegalArgumentException();
 | 
						|
    children.set(children.indexOf(oldChild), newChild);
 | 
						|
    ((IIOMetadataNode)oldChild).parent = null;
 | 
						|
    return oldChild;
 | 
						|
  }
 | 
						|
 | 
						|
  public void setIdAttribute(String name, boolean isId)
 | 
						|
    throws DOMException
 | 
						|
  {
 | 
						|
  }
 | 
						|
 | 
						|
  public void setIdAttributeNode(Attr idAttr, boolean isId)
 | 
						|
    throws DOMException
 | 
						|
  {
 | 
						|
  }
 | 
						|
 | 
						|
  public void setIdAttributeNS(String namespaceURI, String localName, boolean isId)
 | 
						|
    throws DOMException
 | 
						|
  {
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Node#setNodeValue(java.lang.String)
 | 
						|
   */
 | 
						|
  public void setNodeValue(String nodeValue) throws DOMException
 | 
						|
  {
 | 
						|
  }
 | 
						|
 | 
						|
  /* (non-Javadoc)
 | 
						|
   * @see org.w3c.dom.Node#setPrefix(java.lang.String)
 | 
						|
   */
 | 
						|
  public void setPrefix(String prefix)
 | 
						|
  {
 | 
						|
  }
 | 
						|
 | 
						|
  public void setTextContent(String textContent)
 | 
						|
    throws DOMException
 | 
						|
  {
 | 
						|
  }
 | 
						|
 | 
						|
  public Object setUserData(String key, Object data, UserDataHandler handler)
 | 
						|
  {
 | 
						|
    return null;
 | 
						|
  }
 | 
						|
}
 |