Class ADQLTable
- java.lang.Object
-
- adql.query.from.ADQLTable
-
- All Implemented Interfaces:
ADQLObject,FromContent
public class ADQLTable extends java.lang.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 Summary
Constructors Constructor Description ADQLTable(ADQLQuery query)Builds a reference to a sub-query.ADQLTable(ADQLTable toCopy)Builds an ADQL table by copying the given one.ADQLTable(java.lang.String table)Builds a reference to a table with its name (simple or full ({catalog}.{schema}.{table})).ADQLTable(java.lang.String schema, java.lang.String table)Builds a reference to a table with its name and the name of its schema.ADQLTable(java.lang.String catalog, java.lang.String schema, java.lang.String table)Builds a reference to a table with its name, the name of its schema and the name of its catalog.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ADQLIteratoradqlIterator()Gets an iterator on the intern ADQL objects.java.lang.StringgetAlias()Gets the label of this table.bytegetCaseSensitive()Gets the whole case sensitivity of this ADQL table.java.lang.StringgetCatalogName()Gets the name of the catalog which contains this table.ADQLObjectgetCopy()Gets a (deep) copy of this ADQL object.SearchColumnListgetDBColumns()Gets the list of all columns (~ database metadata) available in this FROM part.DBTablegetDBLink()Gets the correspondingDBTable.java.lang.StringgetFullTableName()Gets the full name of this table (catalogName .java.lang.StringgetName()Gets the name of this object in ADQL.TextPositiongetPosition()Gets the position in the original ADQL query string.java.lang.StringgetSchemaName()Gets the name of the schema which contains this table.ADQLQuerygetSubQuery()Gets the sub-query used as table.java.lang.StringgetTableName()Gets the name of the table.java.util.List<ADQLTable>getTables()java.util.List<ADQLTable>getTablesByAlias(java.lang.String alias, boolean caseSensitive)Gets all the table whose the alias is equals to the given one.booleanhasAlias()Tells whether this table has an alias or not.booleanisCaseSensitive()Indicates whether all fields (catalog, schema and table) are case sensitive.booleanisCaseSensitive(IdentifierField field)Indicates whether the specified field (catalog, schema or table) is case sensitive or not.booleanisSubQuery()Tells whether this table reference is a sub-query or a table name/alias.protected java.lang.StringnormalizeName(java.lang.String name, IdentifierField field)Lets normalizing any catalog/schema/table name or alias.voidrefreshDBLink()(Re-)Builds a default description of this ADQL table ONLY IF it is a sub-query AND there is an alias.voidsetAlias(java.lang.String alias)Sets the label of this table.voidsetCaseSensitive(boolean sensitive)Sets the case sensitivity of all fields (catalog, schema and table).voidsetCaseSensitive(byte sensitivity)Sets the whole case sensitivity of this ADQL table.voidsetCaseSensitive(IdentifierField field, boolean sensitive)Sets the case sensitivity of the specified field (catalog, schema or table).voidsetCatalogName(java.lang.String catalog)Sets the name of the catalog which contains this table.voidsetDBLink(DBTable dbLink)voidsetPosition(TextPosition pos)Sets the position at which thisADQLTablehas been found in the original ADQL query string.voidsetSchemaName(java.lang.String schema)Sets the name of the schema which contains this table.voidsetSubQuery(ADQLQuery query)Sets the sub-query to use as table.voidsetTable(java.lang.String tableRef)Updates the whole Table according to the given table reference ({catalog}.{schema}.{table}).voidsetTableName(java.lang.String newTableName)Sets the name of the table.java.lang.StringtoADQL()Gets the ADQL expression of this object.
-
-
-
Constructor Detail
-
ADQLTable
public ADQLTable(java.lang.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(java.lang.String schema, java.lang.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(java.lang.String catalog, java.lang.String schema, java.lang.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:
setSubQuery(ADQLQuery)
-
ADQLTable
public ADQLTable(ADQLTable toCopy) throws java.lang.Exception
Builds an ADQL table by copying the given one.- Parameters:
toCopy- The ADQLTable to copy.- Throws:
java.lang.Exception- If there is an error during the copy.
-
-
Method Detail
-
normalizeName
protected java.lang.String normalizeName(java.lang.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:
getPositionin interfaceADQLObject- Returns:
- The position of this
ADQLTable.
-
setPosition
public final void setPosition(TextPosition pos)
Sets the position at which thisADQLTablehas been found in the original ADQL query string.- Specified by:
setPositionin interfaceFromContent- Parameters:
pos- Position of thisADQLTable.
-
getCatalogName
public final java.lang.String getCatalogName()
Gets the name of the catalog which contains this table.- Returns:
- Catalog name.
-
setCatalogName
public final void setCatalogName(java.lang.String catalog)
Sets the name of the catalog which contains this table.- Parameters:
catalog- The new name of its catalog.
-
getSchemaName
public final java.lang.String getSchemaName()
Gets the name of the schema which contains this table.- Returns:
- Schema name.
-
setSchemaName
public final void setSchemaName(java.lang.String schema)
Sets the name of the schema which contains this table.- Parameters:
schema- The new name of its schema.
-
getTableName
public final java.lang.String getTableName()
Gets the name of the table.- Returns:
- Table name.
-
getFullTableName
public final java.lang.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(java.lang.String newTableName)
Sets the name of the table.- Parameters:
newTableName- The new name of the table.
-
setTable
public final void setTable(java.lang.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()
-
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.
-
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 java.lang.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(java.lang.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:
IdentifierField,IdentifierField.isCaseSensitive(byte)
-
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:
IdentifierField,IdentifierField.setCaseSensitive(byte, boolean)
-
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:
IdentifierField.isFullCaseSensitive(byte)
-
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:
IdentifierField.getFullCaseSensitive(boolean)
-
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:
IdentifierField
-
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:
IdentifierField
-
getDBLink
public final DBTable getDBLink()
Gets the corresponding
DBTable.Note: This information is added automatically by
DBCheckerwhenDBChecker.check(adql.query.ADQLQuery)is called.- Returns:
- The corresponding
DBTable.
-
setDBLink
public final void setDBLink(DBTable dbLink)
- Parameters:
dbLink- Its correspondingDBTable.
-
getDBColumns
public SearchColumnList getDBColumns()
Description copied from interface:FromContentGets 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:
getDBColumnsin interfaceFromContent- Returns:
- All the available
DBColumns.
-
getTables
public java.util.List<ADQLTable> getTables()
Description copied from interface:FromContent- Specified by:
getTablesin interfaceFromContent- Returns:
- The list of all
ADQLTables found.
-
getTablesByAlias
public java.util.List<ADQLTable> getTablesByAlias(java.lang.String alias, boolean caseSensitive)
Description copied from interface:FromContentGets 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
ADQLTableobjects exits with the same alias (particularly if there are JOIN).- Specified by:
getTablesByAliasin interfaceFromContent- 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 java.lang.Exception
Description copied from interface:ADQLObjectGets a (deep) copy of this ADQL object.- Specified by:
getCopyin interfaceADQLObject- Returns:
- The copy of this ADQL object.
- Throws:
java.lang.Exception- If there is any error during the copy.
-
getName
public java.lang.String getName()
Description copied from interface:ADQLObjectGets the name of this object in ADQL.- Specified by:
getNamein interfaceADQLObject- Returns:
- The name of this ADQL object.
-
adqlIterator
public ADQLIterator adqlIterator()
Description copied from interface:ADQLObjectGets an iterator on the intern ADQL objects.
Note:The returned iterator is particularly used by a
ISearchHandlerextension to browse a whole ADQL tree.- Specified by:
adqlIteratorin interfaceADQLObject- Returns:
- An ADQL objects iterator.
- See Also:
ADQLIterator,ISearchHandler
-
toADQL
public java.lang.String toADQL()
Description copied from interface:ADQLObjectGets the ADQL expression of this object.- Specified by:
toADQLin interfaceADQLObject- Returns:
- The corresponding ADQL expression.
-
-