opendap.dap
Class AttributeTable

java.lang.Object
  extended by opendap.dap.AttributeTable
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable
Direct Known Subclasses:
DAS

public class AttributeTable
extends java.lang.Object
implements java.lang.Cloneable, java.io.Serializable

An AttributeTable stores a set of names and, for each name, an Attribute object. For more information on the types of data which can be stored in an attribute, including aliases and other AttributeTable objects, see the documentation for Attribute.

The attribute tables have a standard printed representation. There is a print method for writing this form and a parse method for reading the printed form.

An AttributeTable's print representation might look like:

   String long_name "Weekly Means of Sea Surface Temperature";
 
or
   actual_range {
       Float64 min -1.8;
       Float64 max 35.09;
   }
 
or
   String Investigators "Cornillon", "Fleirl", "Watts";
 
or
   Alias New_Attribute Old_Attribute;
 
Here, long_name and Investigators are simple attributes, actual_range is a container attribute, and New_Attribute is an alias pointing to Old_Attribute.

Version:
$Revision: 23881 $
Author:
jehamby
See Also:
DAS, Attribute, Serialized Form

Constructor Summary
AttributeTable()
          Deprecated. Use constructor that takes the name of the table.
AttributeTable(java.lang.String name)
          Create a new empty AttributeTable.
 
Method Summary
 void addAlias(java.lang.String alias, java.lang.String attributeName)
          Add an alias to the current table.
 void addContainer(java.lang.String name, AttributeTable at)
          Create and append an attribute container to the table.
 void appendAttribute(java.lang.String name, int type, java.lang.String value)
          Adds an attribute to the table.
 void appendAttribute(java.lang.String name, int type, java.lang.String value, boolean check)
          Adds an attribute to the table.
 AttributeTable appendContainer(java.lang.String name)
          Create and append an attribute container to the table.
 java.lang.Object clone()
          Returns a clone of this AttributeTable.
 void delAttribute(java.lang.String name)
          Delete the attribute named name.
 void delAttribute(java.lang.String name, int i)
          Delete the attribute named name.
 Attribute getAttribute(java.lang.String name)
          Returns the Attribute which matches name.
 java.lang.String getClearName()
          Returns the name of this AttributeTable.
 java.lang.String getName()
          Returns the name of this AttributeTable.
 java.util.Enumeration getNames()
          Returns an Enumeration of the attribute names in this AttributeTable.
 boolean hasAttribute(java.lang.String name)
          Returns the Attribute which matches name.
 void print(java.io.OutputStream os)
          Print the attribute table on the given OutputStream with four spaces of indentation.
 void print(java.io.OutputStream os, java.lang.String pad)
          Print the attribute table on the given OutputStream.
 void print(java.io.PrintWriter os)
          Print the attribute table on the given PrintWriter with four spaces of indentation.
 void print(java.io.PrintWriter os, java.lang.String pad)
          Print the attribute table on the given PrintWriter.
 void printXML(java.io.OutputStream os)
           
 void printXML(java.io.OutputStream os, java.lang.String pad)
           
 void printXML(java.io.PrintWriter pw)
           
 void printXML(java.io.PrintWriter pw, java.lang.String pad)
           
 void printXML(java.io.PrintWriter pw, java.lang.String pad, boolean constrained)
           
 void setClearName(java.lang.String n)
          Returns the name of this AttributeTable.
 void setName(java.lang.String n)
          Returns the name of this AttributeTable.
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AttributeTable

public AttributeTable()
Deprecated. Use constructor that takes the name of the table.

Create a new empty AttributeTable.


AttributeTable

public AttributeTable(java.lang.String name)
Create a new empty AttributeTable.

Method Detail

clone

public java.lang.Object clone()
Returns a clone of this AttributeTable. A deep copy is performed on all Attribute and AttributeTable objects inside the AttributeTable.

Overrides:
clone in class java.lang.Object
Returns:
a clone of this AttributeTable.

getName

public final java.lang.String getName()
Returns the name of this AttributeTable.


setName

public final void setName(java.lang.String n)
Returns the name of this AttributeTable.


getClearName

public final java.lang.String getClearName()
Returns the name of this AttributeTable.


setClearName

public final void setClearName(java.lang.String n)
Returns the name of this AttributeTable.


getNames

public final java.util.Enumeration getNames()
Returns an Enumeration of the attribute names in this AttributeTable. Use the getAttribute method to get the Attribute for a given name.

Returns:
an Enumeration of String.
See Also:
getAttribute(String)

getAttribute

public final Attribute getAttribute(java.lang.String name)
Returns the Attribute which matches name.

Parameters:
name - the name of the Attribute to return.
Returns:
the Attribute with the specified name, or null if there is no matching Attribute.
See Also:
Attribute

hasAttribute

public final boolean hasAttribute(java.lang.String name)
Returns the Attribute which matches name.

Parameters:
name - the name of the Attribute to return.
Returns:
True if an Attribute with named 'name' exists, False otherwise.
See Also:
Attribute

appendAttribute

public final void appendAttribute(java.lang.String name,
                                  int type,
                                  java.lang.String value,
                                  boolean check)
                           throws DASException
Adds an attribute to the table. If the given name already refers to an attribute, and the attribute has a vector value, the given value is appended to the attribute vector. Calling this function repeatedly is the way to create an attribute vector.

The function throws an exception if the attribute is a container, or if the type of the input value does not match the existing attribute's type and the check parameter is true. Use the appendContainer method to add container attributes.

Parameters:
name - The name of the attribute to add or modify.
type - The type code of the attribute to add or modify.
value - The value to add to the attribute table.
check - Check the validity of the attribute's value?
Throws:
AttributeExistsException - thrown if an Attribute with the same name, but a different type was previously defined.
AttributeBadValueException - thrown if the value is not a legal member of type
DASException
See Also:
appendContainer(String)

appendAttribute

public final void appendAttribute(java.lang.String name,
                                  int type,
                                  java.lang.String value)
                           throws DASException
Adds an attribute to the table. If the given name already refers to an attribute, and the attribute has a vector value, the given value is appended to the attribute vector. Calling this function repeatedly is the way to create an attribute vector.

The function throws an exception if the attribute is a container, or if the type of the input value does not match the existing attribute's type. Use the appendContainer method to add container attributes.

Parameters:
name - The name of the attribute to add or modify.
type - The type code of the attribute to add or modify.
value - The value to add to the attribute table.
Throws:
AttributeExistsException - thrown if an Attribute with the same name, but a different type was previously defined.
AttributeBadValueException - thrown if the value is not a legal member of type
DASException
See Also:
appendContainer(String)

appendContainer

public final AttributeTable appendContainer(java.lang.String name)
Create and append an attribute container to the table. A container is another AttributeTable object.

Parameters:
name - the name of the container to add.
Returns:
A pointer to the new AttributeTable object, or null if a container by that name already exists.

addContainer

public final void addContainer(java.lang.String name,
                               AttributeTable at)
                        throws AttributeExistsException
Create and append an attribute container to the table. A container is another AttributeTable object.

Parameters:
name - the name of the container to add. if a container by that name already exists.
Throws:
AttributeExistsException

addAlias

public final void addAlias(java.lang.String alias,
                           java.lang.String attributeName)
                    throws NoSuchAttributeException,
                           AttributeExistsException
Add an alias to the current table. This method is used by the DAS parser to build Aliases for the DAS. And the DDSXMLParser to add them to the DDX

The new (9/26/02) DDS requires the use of addAlias(String, String, String) and is the preffered way of representing the DAS information.

Parameters:
alias - The alias to insert into the attribute table.
attributeName - The normalized name of the attribute to which the alias will refer.
Throws:
NoSuchAttributeException - thrown if the existing attribute could not be found.
AttributeExistsException - thrown if the new alias has the same name as an existing attribute.

delAttribute

public final void delAttribute(java.lang.String name)
Delete the attribute named name.

Parameters:
name - The name of the attribute to delete. This can be an attribute of any type, including containers.

delAttribute

public final void delAttribute(java.lang.String name,
                               int i)
                        throws DASException
Delete the attribute named name. If the attribute has a vector value, delete the i'th element of the vector.

Parameters:
name - The name of the attribute to delete. This can be an attribute of any type, including containers.
i - If the named attribute is a vector, and i is non-negative, the i'th entry in the vector is deleted. If i equals -1, the entire attribute is deleted.
Throws:
DASException
See Also:
delAttribute(String)

print

public void print(java.io.PrintWriter os,
                  java.lang.String pad)
Print the attribute table on the given PrintWriter.

Parameters:
os - the PrintWriter to use for output.
pad - the number of spaces to indent each line.

print

public final void print(java.io.OutputStream os,
                        java.lang.String pad)
Print the attribute table on the given OutputStream.

Parameters:
os - the OutputStream to use for output.
pad - the number of spaces to indent each line.

print

public final void print(java.io.PrintWriter os)
Print the attribute table on the given PrintWriter with four spaces of indentation.

Parameters:
os - the PrintWriter to use for output.

print

public final void print(java.io.OutputStream os)
Print the attribute table on the given OutputStream with four spaces of indentation.

Parameters:
os - the OutputStream to use for output.

printXML

public void printXML(java.io.OutputStream os)
Parameters:
os -

This class/method is associated with pre-release version of the DDX API. It is experimental and is subject to (significant) change.


printXML

public void printXML(java.io.OutputStream os,
                     java.lang.String pad)
Parameters:
os -
pad -

This class/method is associated with pre-release version of the DDX API. It is experimental and is subject to (significant) change.


printXML

public void printXML(java.io.PrintWriter pw)
Parameters:
pw -

This class/method is associated with pre-release version of the DDX API. It is experimental and is subject to (significant) change.


printXML

public void printXML(java.io.PrintWriter pw,
                     java.lang.String pad)
Parameters:
pw -
pad -

This class/method is associated with pre-release version of the DDX API. It is experimental and is subject to (significant) change.


printXML

public void printXML(java.io.PrintWriter pw,
                     java.lang.String pad,
                     boolean constrained)
Parameters:
pw -
pad -
constrained -

This class/method is associated with pre-release version of the DDX API. It is experimental and is subject to (significant) change.