# 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.

Author:
  Mark Taylor (Starlink)

## Constructor Summary

Constructors
Constructor
Description
`ColumnInfo(String name)`
Constructs a `ColumnInfo` object.
`ColumnInfo(String name, Class<?> contentClass, 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

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

### Methods inherited from class 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 Object

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

### Methods inherited from interface ValueInfo

`getAuxDatumByName, setAuxDatum`

## Constructor Details

### ColumnInfo

public ColumnInfo(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(String name, Class<?> contentClass, 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 Details

### 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, 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(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(String name, 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(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`