uk.ac.starlink.table

## Class ColumnInfo

- java.lang.Object
- - uk.ac.starlink.table.DefaultValueInfo
  - - uk.ac.starlink.table.ColumnInfo

- All Implemented Interfaces:
    ValueInfo

      public class ColumnInfo
      extends DefaultValueInfo

  Contains information about a table column. This really does the same thing as its superclass, `DefaultValueInfo`, but for historical reasons it contains some additional methods for access to the auxiliary metadata items. In earlier versions of the library, columns were allowed to store auxiliary metadata and non-column items (like table parameters) were not, but now they have the same capabilities.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `ColumnInfo(java.lang.String name)` Constructs a `ColumnInfo` object.
    `ColumnInfo(java.lang.String name, java.lang.Class<?> contentClass, java.lang.String description)` Constructs a new `ColumnInfo` object with a given name, class and description.
    `ColumnInfo(ValueInfo base)` Constructs a new `ColumnInfo` based on a `ValueInfo` object.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `DescribedValue` | `getAuxDatum(ValueInfo vinfo)` Gets an item of auxiliary metadata from its specification.
    `<T> T` | `getAuxDatumValue(ValueInfo vinfo, java.lang.Class<T> clazz)` Gets the value of an item of auxiliary metadata using its specification, requiring a particular return type.
    `<T> T` | `getAuxDatumValueByName(java.lang.String name, java.lang.Class<T> clazz)` Gets the value of an item of auxiliary metadata by its name, requiring a particular return type.

    - ### Methods inherited from class uk.ac.starlink.table.DefaultValueInfo

      `formatClass, formatShape, formatValue, generalise, getAuxData, getContentClass, getDescription, getDomainMappers, getElementSize, getName, getShape, getUCD, getUnitString, getUtype, getXtype, isArray, isNullable, setAuxData, setContentClass, setDescription, setDomainMappers, setElementSize, setName, setNullable, setShape, setUCD, setUnitString, setUtype, setXtype, toString, unformatShape, unformatString`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface uk.ac.starlink.table.ValueInfo

      `getAuxDatumByName, setAuxDatum`

- - ### Constructor Detail

    - #### ColumnInfo

          public ColumnInfo(java.lang.String name)

      Constructs a `ColumnInfo` object.
      Parameters:
        `name` - the name of the column

    - #### ColumnInfo

          public ColumnInfo(ValueInfo base)

      Constructs a new `ColumnInfo` based on a `ValueInfo` object. All attributes are copied from the template to the new object.
      Parameters:
        `base` - the template `ValueInfo`

    - #### ColumnInfo

          public ColumnInfo(java.lang.String name,
                            java.lang.Class<?> contentClass,
                            java.lang.String description)

      Constructs a new `ColumnInfo` object with a given name, class and description.
      Parameters:
        `name` - the name applying to described values
        `contentClass` - the class of which described values should be instances
        `description` - a textual description of the described values

  - ### Method Detail

    - #### getAuxDatum

          public DescribedValue getAuxDatum(ValueInfo vinfo)

      Gets an item of auxiliary metadata from its specification. Currently this just calls `getAuxDatumByName(vinfo.getName())`, but may be revised in future to match on other attributes.
      Parameters:
        `vinfo` - the data item to match
      Returns:
        a `DescribedValue` object representing the auxiliary metadata item matching `vinfo` for this column, or `null` if none exists

    - #### getAuxDatumValue

          public <T> T getAuxDatumValue(ValueInfo vinfo,
                                        java.lang.Class<T> clazz)

      Gets the value of an item of auxiliary metadata using its specification, requiring a particular return type. This convenience method works like `getAuxDatum(uk.ac.starlink.table.ValueInfo)` but returns a non-null value only if the named item exists and if its value is an instance of the given type `clazz`.
      Parameters:
        `vinfo` - the data item to match
        `clazz` - required return type
      Returns:
        value of the auxiliary metadata item matching `vinfo` for this column if it exists and is an instance of `clazz` or one of its subtypes, otherwise `null`

    - #### getAuxDatumValueByName

          public <T> T getAuxDatumValueByName(java.lang.String name,
                                              java.lang.Class<T> clazz)

      Gets the value of an item of auxiliary metadata by its name, requiring a particular return type. This convenience method works like `ValueInfo.getAuxDatumByName(java.lang.String)`, but returns a non-null value only if the named item exists, and if its value is an instance of the given type `clazz`.
      Parameters:
        `name` - the name of an auxiliary metadata item
        `clazz` - required return type
      Returns:
        value of the auxiliary metadata item matching `vinfo` for this column if it exists and is an instance of `clazz` or one of its subtypes, otherwise `null`