📄 iiometadatanode.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 modifyit under the terms of the GNU General Public License as published bythe 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, butWITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNUGeneral Public License for more details.You should have received a copy of the GNU General Public Licensealong with GNU Classpath; see the file COPYING. If not, write to theFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA02110-1301 USA.Linking this library statically or dynamically with other modules ismaking a combined work based on this library. Thus, the terms andconditions of the GNU General Public License cover the wholecombination.As a special exception, the copyright holders of this library give youpermission to link this library with independent modules to produce anexecutable, regardless of the license terms of these independentmodules, and to copy and distribute the resulting executable underterms of your choice, provided that you also meet, for each linkedindependent module, the terms and conditions of the license of thatmodule. An independent module is a module which is not derived fromor based on this library. If you modify this library, you may extendthis exception to your version of the library, but you are notobligated to do so. If you do not wish to do so, delete thisexception 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 = (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)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -