Package uk.ac.starlink.vo.datalink

## Class LinkColMap

- java.lang.Object
- - uk.ac.starlink.vo.datalink.LinkColMap

-     public class LinkColMap
      extends java.lang.Object

  Defines the mapping of columns named by the DataLink standard to a given table.

  The usual way to obtain an instance of this class is using the static `getMap` method.

  Since:
    22 Nov 2017
  Author:
    Mark Taylor
  See Also:
    DataLink-1.0, sec 3.2

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `static class` | `LinkColMap.ColDef<C>` | Utility class that encapsulates the characteristics of a given column from the DataLink standard.

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static LinkColMap.ColDef<java.lang.String>` | `COL_ACCESSURL` | access_url column definition.
    `static LinkColMap.ColDef<java.lang.Number>` | `COL_CONTENTLENGTH` | content_length column definition.
    `static LinkColMap.ColDef<java.lang.String>` | `COL_CONTENTTYPE` | content_type column definition.
    `static LinkColMap.ColDef<java.lang.String>` | `COL_DESCRIPTION` | description column definition.
    `static LinkColMap.ColDef<java.lang.String>` | `COL_ERRORMESSAGE` | error_message column definition.
    `static LinkColMap.ColDef<java.lang.String>` | `COL_ID` | ID column definition.
    `static LinkColMap.ColDef<java.lang.String>` | `COL_SEMANTICS` | semantics column definition.
    `static LinkColMap.ColDef<java.lang.String>` | `COL_SERVICEDEF` | service_def column definition.
    `static java.util.Map<java.lang.String,​LinkColMap.ColDef<?>>` | `COLDEF_MAP` | Map by column name of all columns required in a DataLink table.

  - ### Constructor Summary

    Constructors
    Modifier | Constructor | Description
    --- | --- | ---
    `protected` | `LinkColMap​(java.util.Map<LinkColMap.ColDef<?>,​java.lang.Integer> icolMap)` | Constructor.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `java.lang.String` | `getAccessUrl​(java.lang.Object[] row)` | Returns the value of the DataLink access_url column in a given row.
    `java.lang.Long` | `getContentLength​(java.lang.Object[] row)` | Returns the value of the DataLink content_length column in a given row.
    `java.lang.String` | `getContentType​(java.lang.Object[] row)` | Returns the value of the DataLink content_type column in a given row.
    `java.lang.String` | `getDescription​(java.lang.Object[] row)` | Returns the value of the DataLink description column in a given row.
    `java.lang.String` | `getErrorMessage​(java.lang.Object[] row)` | Returns the value of the DataLink error_message column in a given row.
    `java.lang.String` | `getId​(java.lang.Object[] row)` | Returns the value of the DataLink id column in a given row.
    `static LinkColMap` | `getMap​(uk.ac.starlink.table.StarTable table)` | Constructs a LinkColMap that knows where the DataLink columns are in a supplied table.
    `java.lang.String` | `getSemantics​(java.lang.Object[] row)` | Returns the value of the DataLink semantics column in a given row.
    `java.lang.String` | `getServiceDef​(java.lang.Object[] row)` | Returns the value of the DataLink service_def column in a given row.
    `<C> C` | `getValue​(LinkColMap.ColDef<C> col, java.lang.Object[] row)` | Returns the typed corresponding to a given column definition in a given row.

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

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

- - ### Field Detail

    - #### COL_ID

          public static final LinkColMap.ColDef<java.lang.String> COL_ID

      ID column definition.

    - #### COL_ACCESSURL

          public static final LinkColMap.ColDef<java.lang.String> COL_ACCESSURL

      access_url column definition.

    - #### COL_SERVICEDEF

          public static final LinkColMap.ColDef<java.lang.String> COL_SERVICEDEF

      service_def column definition.

    - #### COL_ERRORMESSAGE

          public static final LinkColMap.ColDef<java.lang.String> COL_ERRORMESSAGE

      error_message column definition.

    - #### COL_DESCRIPTION

          public static final LinkColMap.ColDef<java.lang.String> COL_DESCRIPTION

      description column definition.

    - #### COL_SEMANTICS

          public static final LinkColMap.ColDef<java.lang.String> COL_SEMANTICS

      semantics column definition.

    - #### COL_CONTENTTYPE

          public static final LinkColMap.ColDef<java.lang.String> COL_CONTENTTYPE

      content_type column definition.

    - #### COL_CONTENTLENGTH

          public static final LinkColMap.ColDef<java.lang.Number> COL_CONTENTLENGTH

      content_length column definition.

    - #### COLDEF_MAP

          public static final java.util.Map<java.lang.String,​LinkColMap.ColDef<?>> COLDEF_MAP

      Map by column name of all columns required in a DataLink table.

  - ### Constructor Detail

    - #### LinkColMap

          protected LinkColMap​(java.util.Map<LinkColMap.ColDef<?>,​java.lang.Integer> icolMap)

      Constructor.
      Parameters:
        `icolMap` - map from column definition to column index, providing the state of this object

  - ### Method Detail

    - #### getId

          public java.lang.String getId​(java.lang.Object[] row)

      Returns the value of the DataLink id column in a given row.
      Parameters:
        `row` - row from the table for which this map was prepared
      Returns:
        cell value for the `id` column

    - #### getAccessUrl

          public java.lang.String getAccessUrl​(java.lang.Object[] row)

      Returns the value of the DataLink access_url column in a given row.
      Parameters:
        `row` - row from the table for which this map was prepared
      Returns:
        cell value for the `access_url` column

    - #### getServiceDef

          public java.lang.String getServiceDef​(java.lang.Object[] row)

      Returns the value of the DataLink service_def column in a given row.
      Parameters:
        `row` - row from the table for which this map was prepared
      Returns:
        cell value for the `service_def` column

    - #### getErrorMessage

          public java.lang.String getErrorMessage​(java.lang.Object[] row)

      Returns the value of the DataLink error_message column in a given row.
      Parameters:
        `row` - row from the table for which this map was prepared
      Returns:
        cell value for the `error_message` column

    - #### getDescription

          public java.lang.String getDescription​(java.lang.Object[] row)

      Returns the value of the DataLink description column in a given row.
      Parameters:
        `row` - row from the table for which this map was prepared
      Returns:
        cell value for the `description` column

    - #### getSemantics

          public java.lang.String getSemantics​(java.lang.Object[] row)

      Returns the value of the DataLink semantics column in a given row.
      Parameters:
        `row` - row from the table for which this map was prepared
      Returns:
        cell value for the `semantics` column

    - #### getContentType

          public java.lang.String getContentType​(java.lang.Object[] row)

      Returns the value of the DataLink content_type column in a given row.
      Parameters:
        `row` - row from the table for which this map was prepared
      Returns:
        cell value for the `content_type` column

    - #### getContentLength

          public java.lang.Long getContentLength​(java.lang.Object[] row)

      Returns the value of the DataLink content_length column in a given row.
      Parameters:
        `row` - row from the table for which this map was prepared
      Returns:
        cell value for the `content_length` column, may be null

    - #### getValue

          public <C> C getValue​(LinkColMap.ColDef<C> col,
                                java.lang.Object[] row)

      Returns the typed corresponding to a given column definition in a given row.
      Parameters:
        `col` - column value extractor object
        `row` - row from the table for which this map was prepared
      Returns:
        typed cell value for `col`

    - #### getMap

          public static LinkColMap getMap​(uk.ac.starlink.table.StarTable table)

      Constructs a LinkColMap that knows where the DataLink columns are in a supplied table. Columns are identified by name and content type. Incorrect UCDs etc lead to warnings emitted through the logging system. No check is made that all columns are present; attempts to retrieve column values for unidentified columns just return null.
      Parameters:
        `table` - table (assumed DataLink) to interpret
      Returns:
        column map object