Package uk.ac.starlink.vo

# Class MetaNameFixer

java.lang.Object
uk.ac.starlink.vo.MetaNameFixer

public abstract class MetaNameFixer extends Object
Provides methods for fixing up table and column names reported by TAP services, so that they fit required syntactic constraints. If the services are operating correctly, the behaviour provided by this class should not be required.

Concrete instances must implement the abstract `getFixedTableName(java.lang.String, uk.ac.starlink.vo.SchemaMeta)` and `getFixedColumnName(java.lang.String)` methods. The `fix*` methods can then be used to fix up table metadata acquired from some service for use within ADQL queries. The `getOriginal*Name` methods may be required for subsequent communications with the service (since the original names are the ones that the service knows about).

Since:
  14 May 2015
Author:
  Mark Taylor

## Field Summary

Fields
Modifier and Type
Field
Description
`static MetaNameFixer`
`NONE`
Instance which makes no name changes.

## Constructor Summary

Constructors
Modifier
Constructor
Description
`protected`
`MetaNameFixer()`
Constructor.

## Method Summary

Modifier and Type
Method
Description
`static MetaNameFixer`
`createAdqlFixer(AdqlSyntax syntax)`
Returns a new instance that follows rules for a particular ADQL-like syntax.
`static MetaNameFixer`
`createDefaultFixer()`
Returns a new instance that follows standard ADQL syntax rules.
`void`
`fixColumns(ColumnMeta[] columns)`
Ensures that the given columns have syntactically acceptable names.
`void`
`fixSchemas(SchemaMeta[] schemas)`
Ensures that the given schemas and their contained tables and columns have syntactically acceptable names.
`void`
`fixTables(TableMeta[] tables, SchemaMeta schema)`
Ensures that the given tables and their contained columns have syntactically acceptable names.
`abstract String`
`getFixedColumnName(String cname)`
Returns a column name which is syntactically acceptable.
`abstract String`
`getFixedTableName(String tname, SchemaMeta schema)`
Returns a table name which is syntactically acceptable.
`String`
`getOriginalColumnName(ColumnMeta column)`
Returns the unfixed name for a given column.
`String`
`getOriginalTableName(TableMeta table)`
Returns the unfixed name for a given table.

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

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

## Field Details

### NONE

public static MetaNameFixer NONE
Instance which makes no name changes. May be used multiple times.

## Constructor Details

### MetaNameFixer

protected MetaNameFixer()
Constructor.

## Method Details

### getFixedTableName

public abstract String getFixedTableName(String tname, SchemaMeta schema)
Returns a table name which is syntactically acceptable. If the input name is OK, it should be returned unchanged.

Parameters:
  `tname` - original table name
  `schema` - schema from which table was acquired
Returns:
  original or fixed table name

### getFixedColumnName

public abstract String getFixedColumnName(String cname)
Returns a column name which is syntactically acceptable. If the input name is OK, it should be returned unchanged.

Parameters:
  `cname` - original column name
Returns:
  original or fixed column name

### fixSchemas

public void fixSchemas(SchemaMeta[] schemas)
Ensures that the given schemas and their contained tables and columns have syntactically acceptable names.

Parameters:
  `schemas` - schemas to fix up

### fixTables

public void fixTables(TableMeta[] tables, SchemaMeta schema)
Ensures that the given tables and their contained columns have syntactically acceptable names.

Parameters:
  `tables` - tables to fix up
  `schema` - schema containing the given tables

### fixColumns

public void fixColumns(ColumnMeta[] columns)
Ensures that the given columns have syntactically acceptable names.

Parameters:
  `columns` - columns to fix up

### getOriginalColumnName

public String getOriginalColumnName(ColumnMeta column)
Returns the unfixed name for a given column.

Parameters:
  `column` - column whose name may have been fixed
Returns:
  column name prior to fixing

### getOriginalTableName

public String getOriginalTableName(TableMeta table)
Returns the unfixed name for a given table.

Parameters:
  `table` - table whose name may have been fixed
Returns:
  table name prior to fixing

### createDefaultFixer

public static MetaNameFixer createDefaultFixer()
Returns a new instance that follows standard ADQL syntax rules. Note this instance should not be shared between multiple metadata sets.

Returns:
  new fixer instance

### createAdqlFixer

public static MetaNameFixer createAdqlFixer(AdqlSyntax syntax)
Returns a new instance that follows rules for a particular ADQL-like syntax. Note this instance should not be shared between multiple metadata sets.

Parameters:
  `syntax` - syntax rules
Returns:
  new fixer instance