Imported GNU Classpath 0.19 + gcj-import-20051115.

* sources.am: Regenerated.
       * Makefile.in: Likewise.
       * scripts/makemake.tcl: Use glob -nocomplain.

From-SVN: r107049
This commit is contained in:
Mark Wielaard 2005-11-15 23:20:01 +00:00
parent 02e549bfaa
commit 8f523f3a10
1241 changed files with 97711 additions and 25284 deletions

View file

@ -38,6 +38,848 @@ 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();
}
}