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.4 (09/2017)
- 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 ADQLIterator
adqlIterator()
Gets an iterator on the intern ADQL objects.java.lang.String
getAlias()
Gets the label of this table.byte
getCaseSensitive()
Gets the whole case sensitivity of this ADQL table.java.lang.String
getCatalogName()
Gets the name of the catalog which contains this table.ADQLObject
getCopy()
Gets a (deep) copy of this ADQL object.SearchColumnList
getDBColumns()
Gets the list of all columns (~ database metadata) available in this FROM part.DBTable
getDBLink()
Gets the correspondingDBTable
.java.lang.String
getFullTableName()
Gets the full name of this table (catalogName .java.lang.String
getName()
Gets the name of this object in ADQL.TextPosition
getPosition()
Gets the position in the original ADQL query string.java.lang.String
getSchemaName()
Gets the name of the schema which contains this table.ADQLQuery
getSubQuery()
Gets the sub-query used as table.java.lang.String
getTableName()
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.boolean
hasAlias()
Tells whether this table has an alias or not.boolean
isCaseSensitive()
Indicates whether all fields (catalog, schema and table) are case sensitive.boolean
isCaseSensitive(IdentifierField field)
Indicates whether the specified field (catalog, schema or table) is case sensitive or not.boolean
isSubQuery()
Tells whether this table reference is a sub-query or a table name/alias.protected java.lang.String
normalizeName(java.lang.String name, IdentifierField field)
Lets normalizing any catalog/schema/table name or alias.void
refreshDBLink()
(Re-)Builds a default description of this ADQL table ONLY IF it is a sub-query AND there is an alias.void
setAlias(java.lang.String alias)
Sets the label of this table.void
setCaseSensitive(boolean sensitive)
Sets the case sensitivity of all fields (catalog, schema and table).void
setCaseSensitive(byte sensitivity)
Sets the whole case sensitivity of this ADQL table.void
setCaseSensitive(IdentifierField field, boolean sensitive)
Sets the case sensitivity of the specified field (catalog, schema or table).void
setCatalogName(java.lang.String catalog)
Sets the name of the catalog which contains this table.void
setDBLink(DBTable dbLink)
void
setPosition(TextPosition pos)
Sets the position at which thisADQLTable
has been found in the original ADQL query string.void
setSchemaName(java.lang.String schema)
Sets the name of the schema which contains this table.void
setSubQuery(ADQLQuery query)
Sets the sub-query to use as table.void
setTable(java.lang.String tableRef)
Updates the whole Table according to the given table reference ({catalog}.{schema}.{table}).void
setTableName(java.lang.String newTableName)
Sets the name of the table.java.lang.String
toADQL()
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:
getPosition
in interfaceADQLObject
- Returns:
- The position of this
ADQLTable
.
-
setPosition
public final void setPosition(TextPosition pos)
Sets the position at which thisADQLTable
has been found in the original ADQL query string.- Specified by:
setPosition
in 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
DBChecker
whenDBChecker.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: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 interfaceFromContent
- Returns:
- All the available
DBColumn
s.
-
getTables
public java.util.List<ADQLTable> getTables()
Description copied from interface:FromContent
- Specified by:
getTables
in interfaceFromContent
- Returns:
- The list of all
ADQLTable
s found.
-
getTablesByAlias
public java.util.List<ADQLTable> getTablesByAlias(java.lang.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 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:ADQLObject
Gets a (deep) copy of this ADQL object.- Specified by:
getCopy
in 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:ADQLObject
Gets the name of this object in ADQL.- Specified by:
getName
in interfaceADQLObject
- 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 interfaceADQLObject
- Returns:
- An ADQL objects iterator.
- See Also:
ADQLIterator
,ISearchHandler
-
toADQL
public java.lang.String toADQL()
Description copied from interface:ADQLObject
Gets the ADQL expression of this object.- Specified by:
toADQL
in interfaceADQLObject
- Returns:
- The corresponding ADQL expression.
-
-