| /* IIOMetadataFormatImpl.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 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 java.util.ArrayList; |
| import java.util.HashMap; |
| import java.util.Map; |
| import java.util.Iterator; |
| import java.util.List; |
| import java.util.Locale; |
| import java.util.ResourceBundle; |
| import java.util.MissingResourceException; |
| import javax.imageio.ImageTypeSpecifier; |
| |
| public abstract class IIOMetadataFormatImpl implements IIOMetadataFormat |
| { |
| /** |
| * The standard metadata format name constant set to |
| * "javax_imageio_1.0". |
| */ |
| public static final String standardMetadataFormatName = "javax_imageio_1.0"; |
| |
| private String rootName; |
| |
| // These maps assume that each element name is unique. |
| |
| private Map nodes = new HashMap(); |
| |
| // A mapping from element name to child policy. |
| private Map childPolicies = new HashMap(); |
| |
| // A mapping from element name to the permissible number of |
| // children. Values in this map are length-two integer arrays; the |
| // first index is the minimum bound, the second index is the maximum |
| // bound. |
| private Map childRanges = new HashMap(); |
| |
| private String resourceBaseName; |
| |
| // Package-private so that it may be used in IIOMetadataNode. |
| static class IIOMetadataNodeAttr extends IIOMetadataNode |
| implements Attr |
| { |
| protected Element owner; |
| protected String name; |
| protected int dataType; |
| protected boolean required; |
| protected String defaultValue; |
| |
| public IIOMetadataNodeAttr (Element owner, |
| String name, |
| String defaultValue) |
| { |
| this (owner, name, IIOMetadataFormat.DATATYPE_STRING, |
| true, defaultValue); |
| } |
| |
| public IIOMetadataNodeAttr (Element owner, |
| String name, |
| int dataType, |
| boolean required, |
| String defaultValue) |
| { |
| this.owner = owner; |
| this.name = name; |
| this.dataType = dataType; |
| this.required = required; |
| this.defaultValue = defaultValue; |
| } |
| |
| public String getName () |
| { |
| return name; |
| } |
| |
| public Element getOwnerElement () |
| { |
| return owner; |
| } |
| |
| public int getDataType () |
| { |
| return dataType; |
| } |
| |
| public TypeInfo getSchemaTypeInfo () |
| { |
| return null; |
| } |
| |
| public boolean getSpecified () |
| { |
| return false; |
| } |
| |
| public String getValue () |
| { |
| return defaultValue; |
| } |
| |
| public boolean isId() |
| { |
| return false; |
| } |
| |
| public void setValue (String value) |
| { |
| } |
| |
| // new methods |
| |
| public boolean isRequired () |
| { |
| return required; |
| } |
| } |
| |
| private class IIOMetadataNodeAttrEnumerated extends IIOMetadataNodeAttr |
| { |
| protected List enumeratedValues; |
| |
| public IIOMetadataNodeAttrEnumerated (Element owner, |
| String name, |
| int dataType, |
| boolean required, |
| String defaultValue, |
| List enumeratedValues) |
| { |
| super (owner, name, dataType, required, defaultValue); |
| this.enumeratedValues = new ArrayList (enumeratedValues); |
| } |
| |
| public Object[] getEnumerations () |
| { |
| return enumeratedValues.toArray (); |
| } |
| } |
| |
| private class IIOMetadataNodeAttrBounded extends IIOMetadataNodeAttr |
| { |
| protected String minValue; |
| protected String maxValue; |
| protected boolean minInclusive; |
| protected boolean maxInclusive; |
| |
| public IIOMetadataNodeAttrBounded (Element owner, |
| String name, |
| int dataType, |
| boolean required, |
| String defaultValue, |
| String minValue, |
| String maxValue, |
| boolean minInclusive, |
| boolean maxInclusive) |
| { |
| super (owner, name, dataType, required, defaultValue); |
| this.minValue = minValue; |
| this.maxValue = maxValue; |
| this.minInclusive = minInclusive; |
| this.maxInclusive = maxInclusive; |
| } |
| |
| public String getMinValue () |
| { |
| return minValue; |
| } |
| |
| public String getMaxValue () |
| { |
| return maxValue; |
| } |
| } |
| |
| private class IIOMetadataNodeAttrList extends IIOMetadataNodeAttr |
| { |
| protected int listMinLength; |
| protected int listMaxLength; |
| |
| public IIOMetadataNodeAttrList (Element owner, |
| String name, |
| int dataType, |
| boolean required, |
| int listMinLength, |
| int listMaxLength) |
| { |
| super (owner, name, dataType, required, null); |
| this.listMinLength = listMinLength; |
| this.listMaxLength = listMaxLength; |
| } |
| |
| public int getListMinLength () |
| { |
| return listMinLength; |
| } |
| |
| public int getListMaxLength () |
| { |
| return listMaxLength; |
| } |
| } |
| |
| private class NodeObject |
| { |
| protected Element owner; |
| protected Class classType; |
| protected boolean required; |
| protected Object defaultValue; |
| protected int valueType; |
| |
| public NodeObject (Element owner, |
| Class classType, |
| boolean required, |
| Object defaultValue) |
| { |
| this.owner = owner; |
| this.classType = classType; |
| this.required = required; |
| this.defaultValue = defaultValue; |
| valueType = IIOMetadataFormat.VALUE_ARBITRARY; |
| } |
| |
| public int getValueType () |
| { |
| return valueType; |
| } |
| |
| public Class getClassType () |
| { |
| return classType; |
| } |
| |
| public Element getOwnerElement () |
| { |
| return owner; |
| } |
| |
| public Object getDefaultValue () |
| { |
| return defaultValue; |
| } |
| |
| public boolean isRequired () |
| { |
| return required; |
| } |
| } |
| |
| private class NodeObjectEnumerated extends NodeObject |
| { |
| protected List enumeratedValues; |
| |
| public NodeObjectEnumerated (Element owner, |
| Class classType, |
| boolean required, |
| Object defaultValue, |
| List enumeratedValues) |
| { |
| super (owner, classType, false, defaultValue); |
| this.enumeratedValues = enumeratedValues; |
| valueType = IIOMetadataFormat.VALUE_ENUMERATION; |
| } |
| |
| public Object[] getEnumerations () |
| { |
| return enumeratedValues.toArray(); |
| } |
| } |
| |
| private class NodeObjectBounded extends NodeObject |
| { |
| protected Comparable minValue; |
| protected Comparable maxValue; |
| protected boolean minInclusive; |
| protected boolean maxInclusive; |
| |
| public NodeObjectBounded (Element owner, |
| Class classType, |
| Object defaultValue, |
| Comparable minValue, |
| Comparable maxValue, |
| boolean minInclusive, |
| boolean maxInclusive) |
| { |
| super (owner, classType, false, defaultValue); |
| this.minValue = minValue; |
| this.maxValue = maxValue; |
| this.minInclusive = minInclusive; |
| this.maxInclusive = maxInclusive; |
| if (minInclusive) |
| { |
| if (maxInclusive) |
| valueType = IIOMetadataFormat.VALUE_RANGE_MIN_MAX_INCLUSIVE; |
| else |
| valueType = IIOMetadataFormat.VALUE_RANGE_MIN_INCLUSIVE; |
| } |
| else |
| { |
| if (maxInclusive) |
| valueType = IIOMetadataFormat.VALUE_RANGE_MAX_INCLUSIVE; |
| else |
| valueType = IIOMetadataFormat.VALUE_RANGE; |
| } |
| } |
| |
| public Comparable getMinValue () |
| { |
| return minValue; |
| } |
| |
| public Comparable getMaxValue () |
| { |
| return maxValue; |
| } |
| } |
| |
| private class NodeObjectArray extends NodeObject |
| { |
| protected Integer arrayMinLength; |
| protected Integer arrayMaxLength; |
| |
| public NodeObjectArray (Element owner, |
| Class classType, |
| int arrayMinLength, |
| int arrayMaxLength) |
| { |
| super (owner, classType, false, null); |
| this.arrayMinLength = new Integer (arrayMinLength); |
| this.arrayMaxLength = new Integer (arrayMaxLength); |
| valueType = IIOMetadataFormat.VALUE_LIST; |
| } |
| |
| public Comparable getArrayMinLength () |
| { |
| return arrayMinLength; |
| } |
| |
| public Comparable getArrayMaxLength () |
| { |
| return arrayMaxLength; |
| } |
| } |
| |
| /** |
| * Construct a blank IIOMetadataFormatImpl with the given root name |
| * and child policy. |
| * |
| * @param rootName the root element name |
| * @param childPolicy the child policy of the root element |
| * |
| * @exception IllegalArgumentException if rootName is null |
| * @exception IllegalArgumentException if childPolicy is |
| * CHILD_POLICY_REPEAT or if childPolicy is not a CHILD_POLICY |
| * constant |
| */ |
| public IIOMetadataFormatImpl (String rootName, int childPolicy) |
| { |
| if (rootName == null) |
| throw new IllegalArgumentException ("null argument"); |
| |
| if (childPolicy < IIOMetadataFormat.CHILD_POLICY_ALL |
| || childPolicy > IIOMetadataFormat.CHILD_POLICY_SOME |
| || childPolicy == IIOMetadataFormat.CHILD_POLICY_REPEAT) |
| throw new IllegalArgumentException ("wrong child policy"); |
| |
| nodes.put (rootName, new IIOMetadataNode (rootName)); |
| childPolicies.put (rootName, new Integer (childPolicy)); |
| this.rootName = rootName; |
| } |
| |
| /** |
| * Construct a blank IIOMetadataFormatImpl with the given root name, |
| * a child policy of CHILD_POLICY_REPEAT and the given minimum and |
| * maximum limits on the number of root element children. |
| * |
| * @param rootName the root element name |
| * @param minChildren the minimum number of children that this node |
| * can have |
| * @param maxChildren the maximum number of children that this node |
| * can have |
| * |
| * @exception IllegalArgumentException if rootName is null |
| * @exception IllegalArgumentException if minChildren is less than |
| * zero or greater than maxChildren |
| */ |
| public IIOMetadataFormatImpl (String rootName, |
| int minChildren, |
| int maxChildren) |
| { |
| if (rootName == null) |
| throw new IllegalArgumentException ("null argument"); |
| |
| if (minChildren < 0 || maxChildren < minChildren) |
| throw new IllegalArgumentException ("invalid min or max children argument"); |
| |
| nodes.put (rootName, new IIOMetadataNode (rootName)); |
| childPolicies.put (rootName, new Integer (IIOMetadataFormat.CHILD_POLICY_REPEAT)); |
| childRanges.put (rootName, new int [] { minChildren, maxChildren }); |
| this.rootName = rootName; |
| } |
| |
| protected void addAttribute (String elementName, |
| String attrName, |
| int dataType, |
| boolean required, |
| String defaultValue) |
| { |
| IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName); |
| node.setAttributeNode (new IIOMetadataNodeAttr (node, |
| attrName, |
| dataType, |
| required, |
| defaultValue)); |
| } |
| |
| protected void addAttribute (String elementName, |
| String attrName, |
| int dataType, |
| boolean required, |
| String defaultValue, |
| List enumeratedValues) |
| { |
| IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName); |
| node.setAttributeNode (new IIOMetadataNodeAttrEnumerated (node, |
| attrName, |
| dataType, |
| required, |
| defaultValue, |
| enumeratedValues)); |
| } |
| |
| protected void addAttribute (String elementName, |
| String attrName, |
| int dataType, |
| boolean required, |
| String defaultValue, |
| String minValue, |
| String maxValue, |
| boolean minInclusive, |
| boolean maxInclusive) |
| { |
| IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName); |
| node.setAttributeNode (new IIOMetadataNodeAttrBounded (node, |
| attrName, |
| dataType, |
| required, |
| defaultValue, |
| minValue, |
| maxValue, |
| minInclusive, |
| maxInclusive)); |
| } |
| |
| protected void addAttribute (String elementName, |
| String attrName, |
| int dataType, |
| boolean required, |
| int listMinLength, |
| int listMaxLength) |
| { |
| IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName); |
| node.setAttributeNode (new IIOMetadataNodeAttrList (node, |
| attrName, |
| dataType, |
| required, |
| listMinLength, |
| listMaxLength)); |
| } |
| |
| protected void addBooleanAttribute (String elementName, |
| String attrName, |
| boolean hasDefaultValue, |
| boolean defaultValue) |
| { |
| IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName); |
| |
| List enumeratedValues = new ArrayList(); |
| enumeratedValues.add ("TRUE"); |
| enumeratedValues.add ("FALSE"); |
| |
| node.setAttributeNode (new IIOMetadataNodeAttrEnumerated (node, |
| attrName, |
| IIOMetadataFormat.DATATYPE_BOOLEAN, |
| hasDefaultValue, |
| defaultValue ? "TRUE" : "FALSE", |
| enumeratedValues)); |
| } |
| |
| protected void addChildElement (String elementName, String parentName) |
| { |
| IIOMetadataNode node = (IIOMetadataNode) nodes.get (parentName); |
| |
| node.appendChild (new IIOMetadataNode (elementName)); |
| childPolicies.put (elementName, new Integer (IIOMetadataFormat.CHILD_POLICY_REPEAT)); |
| } |
| |
| protected void addElement (String elementName, String parentName, int childPolicy) |
| { |
| IIOMetadataNode node = (IIOMetadataNode) nodes.get (parentName); |
| |
| node.appendChild (new IIOMetadataNode (elementName)); |
| childPolicies.put (elementName, new Integer (childPolicy)); |
| } |
| |
| protected void addElement (String elementName, String parentName, |
| int minChildren, int maxChildren) |
| { |
| addChildElement (elementName, parentName); |
| childRanges.put (elementName, new int [] { minChildren, maxChildren }); |
| } |
| |
| private void addNodeObject (IIOMetadataNode node, NodeObject o) |
| { |
| node.setUserObject (o); |
| } |
| |
| private NodeObject getNodeObject (IIOMetadataNode node) |
| { |
| return (NodeObject) node.getUserObject (); |
| } |
| |
| private void removeNodeObject (IIOMetadataNode node) |
| { |
| node.setUserObject (null); |
| } |
| |
| protected void addObjectValue (String elementName, Class classType, |
| boolean required, Object defaultValue) |
| { |
| IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName); |
| addNodeObject (node, new NodeObject (node, |
| classType, |
| required, |
| defaultValue)); |
| } |
| |
| protected void addObjectValue (String elementName, Class classType, |
| boolean required, Object defaultValue, |
| List enumeratedValues) |
| { |
| IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName); |
| addNodeObject (node, new NodeObjectEnumerated (node, |
| classType, |
| required, |
| defaultValue, |
| enumeratedValues)); |
| } |
| |
| protected void addObjectValue (String elementName, Class classType, |
| Object defaultValue, |
| Comparable minValue, |
| Comparable maxValue, |
| boolean minInclusive, |
| boolean maxInclusive) |
| { |
| IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName); |
| addNodeObject (node, new NodeObjectBounded (node, |
| classType, |
| defaultValue, |
| minValue, |
| maxValue, |
| minInclusive, |
| maxInclusive)); |
| } |
| |
| protected void addObjectValue (String elementName, Class classType, |
| int arrayMinLength, int arrayMaxLength) |
| { |
| IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName); |
| addNodeObject (node, new NodeObjectArray (node, |
| classType, |
| arrayMinLength, |
| arrayMaxLength)); |
| } |
| |
| public String getRootName () |
| { |
| return rootName; |
| } |
| |
| protected String getResourceBaseName () |
| { |
| return resourceBaseName; |
| } |
| |
| public static IIOMetadataFormat getStandardFormatInstance () |
| { |
| // FIXME: populate this with the standard metadata format |
| return new IIOMetadataFormatImpl (standardMetadataFormatName, |
| IIOMetadataFormat.CHILD_POLICY_ALL) |
| { |
| public boolean canNodeAppear (String elementName, |
| ImageTypeSpecifier specifier) |
| { |
| return true; |
| } |
| }; |
| } |
| |
| public abstract boolean canNodeAppear (String elementName, |
| ImageTypeSpecifier specifier); |
| |
| protected void removeAttribute (String elementName, |
| String attrName) |
| { |
| IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName); |
| node.removeAttribute (attrName); |
| } |
| |
| protected void removeElement (String elementName) |
| { |
| nodes.remove (elementName); |
| } |
| |
| protected void removeObjectValue (String elementName) |
| { |
| IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName); |
| removeNodeObject (node); |
| } |
| |
| protected void setResourceBaseName (String resourceBaseName) |
| { |
| this.resourceBaseName = resourceBaseName; |
| } |
| |
| public int getAttributeDataType (String elementName, String attrName) |
| { |
| IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName); |
| IIOMetadataNodeAttr attr = (IIOMetadataNodeAttr) node.getAttributeNode (attrName); |
| return attr.getDataType (); |
| } |
| |
| public String getAttributeDefaultValue (String elementName, String attrName) |
| { |
| IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName); |
| IIOMetadataNodeAttr attr = (IIOMetadataNodeAttr) node.getAttributeNode (attrName); |
| return attr.getValue(); |
| } |
| |
| public String getAttributeDescription (String elementName, String attrName, Locale locale) |
| { |
| return getDescription (elementName + "/" + attrName, locale); |
| } |
| |
| public String[] getAttributeEnumerations (String elementName, String attrName) |
| { |
| IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName); |
| IIOMetadataNodeAttrEnumerated attr = |
| (IIOMetadataNodeAttrEnumerated) node.getAttributeNode (attrName); |
| |
| Object[] attrEnums = attr.getEnumerations(); |
| |
| String[] attrNames = new String[attrEnums.length]; |
| |
| for (int i = 0; i < attrEnums.length; i++) |
| { |
| attrNames[i] = (String) attrEnums[i]; |
| } |
| |
| return attrNames; |
| } |
| |
| public int getAttributeListMaxLength (String elementName, String attrName) |
| { |
| IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName); |
| IIOMetadataNodeAttrList attr = |
| (IIOMetadataNodeAttrList) node.getAttributeNode (attrName); |
| return attr.getListMaxLength(); |
| } |
| |
| public int getAttributeListMinLength (String elementName, String attrName) |
| { |
| IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName); |
| IIOMetadataNodeAttrList attr = |
| (IIOMetadataNodeAttrList) node.getAttributeNode (attrName); |
| return attr.getListMinLength(); |
| } |
| |
| public String getAttributeMaxValue (String elementName, String attrName) |
| { |
| IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName); |
| IIOMetadataNodeAttrBounded attr = |
| (IIOMetadataNodeAttrBounded) node.getAttributeNode (attrName); |
| return attr.getMaxValue(); |
| } |
| |
| public String getAttributeMinValue (String elementName, String attrName) |
| { |
| IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName); |
| IIOMetadataNodeAttrBounded attr = |
| (IIOMetadataNodeAttrBounded) node.getAttributeNode (attrName); |
| return attr.getMinValue(); |
| } |
| |
| public String[] getAttributeNames (String elementName) |
| { |
| IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName); |
| |
| NamedNodeMap attrNodes = node.getAttributes(); |
| |
| String[] attrNames = new String[attrNodes.getLength()]; |
| |
| for (int i = 0; i < attrNodes.getLength(); i++) |
| { |
| attrNames[i] = attrNodes.item (i).getLocalName(); |
| } |
| |
| return attrNames; |
| } |
| |
| public int getAttributeValueType (String elementName, String attrName) |
| { |
| IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName); |
| IIOMetadataNodeAttr attr = (IIOMetadataNodeAttr) node.getAttributeNode (attrName); |
| return attr.getDataType(); |
| } |
| |
| public String[] getChildNames (String elementName) |
| { |
| IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName); |
| |
| NodeList childNodes = node.getChildNodes(); |
| |
| String[] childNames = new String[childNodes.getLength()]; |
| |
| for (int i = 0; i < childNodes.getLength(); i++) |
| { |
| childNames[i] = childNodes.item (i).getLocalName(); |
| } |
| |
| return childNames; |
| } |
| |
| public int getChildPolicy (String elementName) |
| { |
| return ((Integer) childPolicies.get (elementName)).intValue(); |
| } |
| |
| private String getDescription (String resourceName, Locale locale) |
| { |
| if (resourceBaseName == null) |
| return null; |
| |
| Locale l = locale; |
| |
| if (l == null) |
| l = Locale.getDefault(); |
| |
| ResourceBundle bundle = ResourceBundle.getBundle (resourceBaseName, locale); |
| |
| String desc = null; |
| |
| if (bundle == null) |
| { |
| try |
| { |
| desc = bundle.getString (resourceName); |
| } |
| catch (MissingResourceException e) |
| { |
| desc = null; |
| } |
| } |
| |
| return desc; |
| } |
| |
| public String getElementDescription (String elementName, Locale locale) |
| { |
| return getDescription (elementName, locale); |
| } |
| |
| public int getElementMaxChildren (String elementName) |
| { |
| return ((int[]) childRanges.get (elementName))[1]; |
| } |
| |
| public int getElementMinChildren (String elementName) |
| { |
| return ((int[]) childRanges.get (elementName))[0]; |
| } |
| |
| public int getObjectArrayMaxLength (String elementName) |
| { |
| IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName); |
| return ((Integer) ((NodeObjectArray) getNodeObject (node)).getArrayMaxLength ()).intValue(); |
| } |
| |
| public int getObjectArrayMinLength (String elementName) |
| { |
| IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName); |
| return ((Integer) ((NodeObjectArray) getNodeObject (node)).getArrayMinLength ()).intValue(); |
| } |
| |
| public Class getObjectClass (String elementName) |
| { |
| IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName); |
| return getNodeObject (node).getClassType (); |
| } |
| |
| public Object getObjectDefaultValue (String elementName) |
| { |
| IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName); |
| return getNodeObject (node).getDefaultValue (); |
| } |
| |
| public Object[] getObjectEnumerations (String elementName) |
| { |
| IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName); |
| return ((NodeObjectEnumerated) getNodeObject (node)).getEnumerations (); |
| } |
| |
| public Comparable getObjectMaxValue (String elementName) |
| { |
| IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName); |
| return ((NodeObjectBounded) getNodeObject (node)).getMaxValue (); |
| } |
| |
| public Comparable getObjectMinValue (String elementName) |
| { |
| IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName); |
| return ((NodeObjectBounded) getNodeObject (node)).getMinValue (); |
| } |
| |
| public int getObjectValueType (String elementName) |
| { |
| IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName); |
| NodeObject n = getNodeObject (node); |
| |
| if (n == null) |
| return IIOMetadataFormat.VALUE_NONE; |
| else |
| return n.getValueType (); |
| } |
| |
| public boolean isAttributeRequired (String elementName, String attrName) |
| { |
| IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName); |
| return ((IIOMetadataNodeAttr) node.getAttributeNode (attrName)).isRequired(); |
| } |
| } |