## dods.dap
Class AttributeTable

    java.lang.Object
      dods.dap.AttributeTable

All Implemented Interfaces:
  Cloneable

public class AttributeTable
extends Object
implements Cloneable

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.

See Also:
  `DAS`, `Attribute`

Constructor Summary
`AttributeTable()` Deprecated.
`AttributeTable(String name)` Create a new empty `AttributeTable`.

Method Summary
`void` `addAlias(String alias, String name)` Add an alias to the current table.
`void` `appendAttribute(String name, int type, String value)` Adds an attribute to the table.
`void` `appendAttribute(String name, int type, String value, boolean check)` Adds an attribute to the table.
`AttributeTable` `appendContainer(String name)` Create and append an attribute container to the table.
`Object` `clone()` Returns a clone of this `AttributeTable`.
`void` `delAttribute(String name)` Delete the attribute named `name`.
`void` `delAttribute(String name, int i)` Delete the attribute named `name`.
`Attribute` `getAttribute(String name)` Returns the `Attribute` which matches name.
`String` `getName()` Returns the name of this AttributeTable.
`Enumeration` `getNames()` Returns an `Enumeration` of the attribute names in this `AttributeTable`.
`void` `print(OutputStream os)` Print the attribute table on the given `OutputStream` with four spaces of indentation.
`void` `print(OutputStream os, String pad)` Print the attribute table on the given `OutputStream`.
`void` `print(PrintWriter os)` Print the attribute table on the given `PrintWriter` with four spaces of indentation.
`void` `print(PrintWriter os, String pad)` Print the attribute table on the given `PrintWriter`.

Methods inherited from class java.lang.Object
`equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### AttributeTable

    public AttributeTable()

  Deprecated.

  Create a new empty `AttributeTable`.

### AttributeTable

    public AttributeTable(String name)

  Create a new empty `AttributeTable`.

Method Detail

### clone

    public Object clone()

  Returns a clone of this `AttributeTable`. A deep copy is performed on all `Attribute` and `AttributeTable` objects inside the `AttributeTable`.

  Returns:
    a clone of this `AttributeTable`.

### getName

    public final String getName()

  Returns the name of this AttributeTable.

### getNames

    public final 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(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`

### appendAttribute

    public final void appendAttribute(String name,
                                      int type,
                                      String value,
                                      boolean check)
                               throws AttributeExistsException,
                                      AttributeBadValueException

  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
  See Also:
    `appendContainer(String)`

### appendAttribute

    public final void appendAttribute(String name,
                                      int type,
                                      String value)
                               throws AttributeExistsException,
                                      AttributeBadValueException

  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
  See Also:
    `appendContainer(String)`

### appendContainer

    public final AttributeTable appendContainer(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.

### addAlias

    public final void addAlias(String alias,
                               String name)
                        throws NoSuchAttributeException,
                               AttributeExistsException

  Add an alias to the current table.

  Parameters:
    `alias` - The alias to insert into the attribute table.
    `name` - The name of the already-existing 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(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(String name,
                                   int i)

  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.
  See Also:
    `delAttribute(String)`

### print

    public void print(PrintWriter os,
                      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(OutputStream os,
                            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(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(OutputStream os)

  Print the attribute table on the given `OutputStream` with four spaces of indentation.

  Parameters:
    `os` - the `OutputStream` to use for output.