Class ADQLTable

java.lang.Object
adql.query.from.ADQLTable
All Implemented Interfaces:
ADQLObject, FromContent

public class ADQLTable extends Object implements ADQLObject, FromContent
It represents any item of the clause FROM: a table name or a sub-query.
A table reference may have an alias (MUST if it is a sub-query).
Version:
1.5 (09/2019)
Author:
Grégory Mantelet (CDS;ARI)
  • Constructor Details

    • ADQLTable

      public ADQLTable(String table)
      Builds a reference to a table with its name (simple or full ({catalog}.{schema}.{table})).
      Parameters:
      table - Name of the table (simple or full ({catalog}.{schema}.{table})).
    • ADQLTable

      public ADQLTable(String schema, String table)
      Builds a reference to a table with its name and the name of its schema.
      Parameters:
      schema - Name of its schema.
      table - Name of the table.
    • ADQLTable

      public ADQLTable(String catalog, String schema, String table)
      Builds a reference to a table with its name, the name of its schema and the name of its catalog.
      Parameters:
      catalog - Name of its catalog.
      schema - Name of its schema.
      table - Name of the table.
    • ADQLTable

      public ADQLTable(ADQLQuery query)
      Builds a reference to a sub-query.
      Parameters:
      query - Sub-query.
      See Also:
    • ADQLTable

      public ADQLTable(ADQLTable toCopy) throws Exception
      Builds an ADQL table by copying the given one.
      Parameters:
      toCopy - The ADQLTable to copy.
      Throws:
      Exception - If there is an error during the copy.
  • Method Details

    • normalizeName

      protected String normalizeName(String name, IdentifierField field)

      Lets normalizing any catalog/schema/table name or alias.

      If the name is surrounded by double-quotes, they are removed and the corresponding field will be declared as case sensitive.

      Parameters:
      name - Name to normalize.
      field - The name part to normalize and to get (if normalized, the case sensitivity of the given field will be set).
      Returns:
      The normalized name.
    • getPosition

      public final TextPosition getPosition()
      Gets the position in the original ADQL query string.
      Specified by:
      getPosition in interface ADQLObject
      Returns:
      The position of this ADQLTable.
    • setPosition

      public final void setPosition(TextPosition pos)
      Sets the position at which this ADQLTable has been found in the original ADQL query string.
      Specified by:
      setPosition in interface FromContent
      Parameters:
      pos - Position of this ADQLTable.
    • getCatalogName

      public final String getCatalogName()
      Gets the name of the catalog which contains this table.
      Returns:
      Catalog name.
    • setCatalogName

      public final void setCatalogName(String catalog)
      Sets the name of the catalog which contains this table.
      Parameters:
      catalog - The new name of its catalog.
    • getSchemaName

      public final String getSchemaName()
      Gets the name of the schema which contains this table.
      Returns:
      Schema name.
    • setSchemaName

      public final void setSchemaName(String schema)
      Sets the name of the schema which contains this table.
      Parameters:
      schema - The new name of its schema.
    • getTableName

      public final String getTableName()
      Gets the name of the table.
      Returns:
      Table name.
    • getFullTableName

      public final String getFullTableName()
      Gets the full name of this table (catalogName . schemaName . tableName) by respecting the case sensitivity of each field (if case sensitive double-quotes will surround the concerned fields name).
      Returns:
      Its full name.
    • setTableName

      public void setTableName(String newTableName)
      Sets the name of the table.
      Parameters:
      newTableName - The new name of the table.
    • setTable

      public final void setTable(String tableRef)
      Updates the whole Table according to the given table reference ({catalog}.{schema}.{table}).
      Parameters:
      tableRef - The complete table reference ({catalog}.{schema}.{table}).
    • getSubQuery

      public final ADQLQuery getSubQuery()
      Gets the sub-query used as table.
      Returns:
      Sub-query.
    • setSubQuery

      public final void setSubQuery(ADQLQuery query)
      Sets the sub-query to use as table.
      Parameters:
      query - Sub-query (MUST NOT BE NULL).
      See Also:
    • refreshDBLink

      public final void refreshDBLink()
      (Re-)Builds a default description of this ADQL table ONLY IF it is a sub-query AND there is an alias. This method has no effect if this table is not a sub-query or has no alias.
      See Also:
    • isSubQuery

      public final boolean isSubQuery()
      Tells whether this table reference is a sub-query or a table name/alias.
      Returns:
      true if this table is a sub-query, false else.
    • getAlias

      public final String getAlias()
      Gets the label of this table.
      Returns:
      Table label.
    • hasAlias

      public final boolean hasAlias()
      Tells whether this table has an alias or not.
      Returns:
      true if this table has an alias, false otherwise.
    • setAlias

      public void setAlias(String alias)
      Sets the label of this table.
      Parameters:
      alias - Label to put on this table.
    • isCaseSensitive

      public final boolean isCaseSensitive(IdentifierField field)
      Indicates whether the specified field (catalog, schema or table) is case sensitive or not.
      Parameters:
      field - A field (catalog, schema or table).
      Returns:
      true if the specified field is case sensitive, false otherwise.
      See Also:
    • setCaseSensitive

      public final void setCaseSensitive(IdentifierField field, boolean sensitive)
      Sets the case sensitivity of the specified field (catalog, schema or table).
      Parameters:
      field - The field for which the case sensitivity must be updated.
      sensitive - true if the specified field must be case sensitive, false otherwise.
      See Also:
    • isCaseSensitive

      public final boolean isCaseSensitive()
      Indicates whether all fields (catalog, schema and table) are case sensitive.
      Returns:
      true if all fields are case sensitive, false otherwise.
      See Also:
    • setCaseSensitive

      public final void setCaseSensitive(boolean sensitive)
      Sets the case sensitivity of all fields (catalog, schema and table).
      Parameters:
      sensitive - true if all fields must be case sensitive, false otherwise.
      See Also:
    • getCaseSensitive

      public final byte getCaseSensitive()
      Gets the whole case sensitivity of this ADQL table.
      Returns:
      Its new case sensitivity (one bit per fields).
      See Also:
    • setCaseSensitive

      public final void setCaseSensitive(byte sensitivity)
      Sets the whole case sensitivity of this ADQL table.
      Parameters:
      sensitivity - Its new case sensitivity (one bit per fields).
      See Also:
    • getDBLink

      public final DBTable getDBLink()

      Gets the corresponding DBTable.

      Note: This information is added automatically by DBChecker when DBChecker.check(adql.query.ADQLQuery) is called.

      Returns:
      The corresponding DBTable.
    • setDBLink

      public final void setDBLink(DBTable dbLink)
      Sets the DBTable corresponding to this ADQLTable.
      Parameters:
      dbLink - Its corresponding DBTable.
    • getDBColumns

      public SearchColumnList getDBColumns()
      Description copied from interface: FromContent

      Gets the list of all columns (~ database metadata) available in this FROM part.

      Note: In the most cases, this list is generated on the fly !

      Specified by:
      getDBColumns in interface FromContent
      Returns:
      All the available DBColumns.
    • getTables

      public List<ADQLTable> getTables()
      Description copied from interface: FromContent
      Gets all ADQLTable instances contained in this FROM part (itself included, if it is an ADQLTable).
      Specified by:
      getTables in interface FromContent
      Returns:
      The list of all ADQLTables found.
    • getTablesByAlias

      public List<ADQLTable> getTablesByAlias(String alias, boolean caseSensitive)
      Description copied from interface: FromContent

      Gets all the table whose the alias is equals to the given one.

      Note: Theoretically, only one table may be returned. But, since this object may be generated without the parser, it is possible that several ADQLTable objects exits with the same alias (particularly if there are JOIN).

      Specified by:
      getTablesByAlias in interface FromContent
      Parameters:
      alias - Alias of the table(s) to get.
      caseSensitive - true if the research must be made with case-sensitivity, false otherwise.
      Returns:
      The list of all tables found.
    • getCopy

      public ADQLObject getCopy() throws Exception
      Description copied from interface: ADQLObject
      Gets a (deep) copy of this ADQL object.
      Specified by:
      getCopy in interface ADQLObject
      Returns:
      The copy of this ADQL object.
      Throws:
      Exception - If there is any error during the copy.
    • getName

      public String getName()
      Description copied from interface: ADQLObject
      Gets the name of this object in ADQL.
      Specified by:
      getName in interface ADQLObject
      Returns:
      The name of this ADQL object.
    • adqlIterator

      public ADQLIterator adqlIterator()
      Description copied from interface: ADQLObject

      Gets an iterator on the intern ADQL objects.

      Note:The returned iterator is particularly used by a ISearchHandler extension to browse a whole ADQL tree.

      Specified by:
      adqlIterator in interface ADQLObject
      Returns:
      An ADQL objects iterator.
      See Also:
    • toADQL

      public String toADQL()
      Description copied from interface: ADQLObject
      Gets the ADQL expression of this object.
      Specified by:
      toADQL in interface ADQLObject
      Returns:
      The corresponding ADQL expression.