mirror of
https://github.com/autc04/Retro68.git
synced 2024-11-28 21:49:33 +00:00
882 lines
28 KiB
Java
882 lines
28 KiB
Java
/* 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.Element;
|
|
import org.w3c.dom.NamedNodeMap;
|
|
import org.w3c.dom.NodeList;
|
|
import org.w3c.dom.TypeInfo;
|
|
import java.util.ArrayList;
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
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<String> 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 <T> void addObjectValue (String elementName, Class<T> classType,
|
|
boolean required, T defaultValue)
|
|
{
|
|
IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName);
|
|
addNodeObject (node, new NodeObject (node,
|
|
classType,
|
|
required,
|
|
defaultValue));
|
|
}
|
|
|
|
protected <T> void addObjectValue (String elementName, Class<T> classType,
|
|
boolean required, T defaultValue,
|
|
List<? extends T> enumeratedValues)
|
|
{
|
|
IIOMetadataNode node = (IIOMetadataNode) nodes.get (elementName);
|
|
addNodeObject (node, new NodeObjectEnumerated (node,
|
|
classType,
|
|
required,
|
|
defaultValue,
|
|
enumeratedValues));
|
|
}
|
|
|
|
protected <T extends Object & Comparable<? super T>>
|
|
void addObjectValue (String elementName, Class<T> classType,
|
|
T defaultValue,
|
|
Comparable<? super T> minValue,
|
|
Comparable<? super T> 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();
|
|
}
|
|
}
|