Package adql.query.from
Class ADQLJoin
java.lang.Object
adql.query.from.ADQLJoin
- All Implemented Interfaces:
ADQLObject
,FromContent
Defines a join between two "tables".
- Version:
- 1.4 (09/2017)
- Author:
- Grégory Mantelet (CDS;ARI)
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected ClauseConstraints
The join condition.protected ArrayList<ADQLColumn>
List of columns on which the join must be done.protected boolean
Natural join (use of table keys) ? -
Constructor Summary
ConstructorsConstructorDescriptionBuilds an ADQL join by copying the given one.ADQLJoin
(FromContent left, FromContent right) Builds anADQLJoin
with at least twoFromContent
objects: the left and the right part of the join (usually two tables: T1 JOIN T2). -
Method Summary
Modifier and TypeMethodDescriptionstatic final void
addAllExcept
(SearchColumnList itemsToAdd, SearchColumnList target, Map<String, DBCommonColumn> exception) Gets an iterator on the intern ADQL objects.static final DBColumn
findAtMostOneColumn
(String columnName, byte caseSensitive, SearchColumnList list, boolean leftList) static final DBColumn
findExactlyOneColumn
(String columnName, byte caseSensitive, SearchColumnList list, boolean leftList) abstract ADQLObject
getCopy()
Gets a (deep) copy of this ADQL object.Gets the list of all columns (~ database metadata) available in this FROM part.final ClauseConstraints
Gets the condition of this join (that's to say: the condition which follows the keyword ON).final Iterator<ADQLColumn>
Gets the list of all columns on which the join is done (that's to say: the list of columns given with the keyword USING).abstract String
Gets the type of this join.final FromContent
Gets the left "table" of this join.getName()
Gets the name of this object in ADQL.final TextPosition
Gets the position of this object/token in the ADQL query.final FromContent
Gets the right "table" of this join.getTablesByAlias
(String alias, boolean caseSensitive) Gets all the table whose the alias is equals to the given one.final boolean
Tells whether this join has a list of columns to join.static final boolean
isCommonColumn
(DBColumn col) Tells whether the given column is a common column (that's to say, a unification of several columns of the same name).final boolean
Indicates whether this join is natural or not.void
Sets the condition of this join (that's to say: the condition which follows the keyword ON).void
setJoinedColumns
(Collection<ADQLColumn> columns) Sets the list of all columns on which the join is done (that's to say: the list of columns given with the keyword USING).void
setLeftTable
(FromContent table) Sets the left "table" of this join.void
setNatural
(boolean natural) Lets indicate that this join is natural (it must use the table keys).final void
setPosition
(TextPosition position) Set the position of thisFromContent
in the given ADQL query string.void
setRightTable
(FromContent table) Sets the right "table" of this join.toADQL()
Gets the ADQL expression of this object.
-
Field Details
-
natural
protected boolean naturalNatural join (use of table keys) ? -
condition
The join condition. -
lstColumns
List of columns on which the join must be done.
-
-
Constructor Details
-
ADQLJoin
Builds anADQLJoin
with at least twoFromContent
objects: the left and the right part of the join (usually two tables: T1 JOIN T2).- Parameters:
left
- Left "table" of the join.right
- Right "table" of the join.
-
ADQLJoin
Builds an ADQL join by copying the given one.- Parameters:
toCopy
- The ADQLJoin to copy.- Throws:
Exception
- If there is an error during the copy.
-
-
Method Details
-
isNatural
public final boolean isNatural()Indicates whether this join is natural or not.- Returns:
- true means this join is natural, false else.
-
setNatural
public void setNatural(boolean natural) Lets indicate that this join is natural (it must use the table keys).- Parameters:
natural
- true means this join must be natural, false else.
-
getLeftTable
Gets the left "table" of this join.- Returns:
- The left part of the join.
-
setLeftTable
Sets the left "table" of this join.- Parameters:
table
- The left part of the join.
-
getRightTable
Gets the right "table" of this join.- Returns:
- The right part of the join.
-
setRightTable
Sets the right "table" of this join.- Parameters:
table
- The right part of the join.
-
getJoinCondition
Gets the condition of this join (that's to say: the condition which follows the keyword ON).- Returns:
- The join condition.
-
setJoinCondition
Sets the condition of this join (that's to say: the condition which follows the keyword ON).- Parameters:
cond
- The join condition (condition following ON).
-
getPosition
Description copied from interface:ADQLObject
Gets the position of this object/token in the ADQL query.
By default, no position should be set.
- Specified by:
getPosition
in interfaceADQLObject
- Returns:
- Position of this ADQL item in the ADQL query, or NULL if not written originally in the query (for example, if added afterwards.
-
setPosition
Description copied from interface:FromContent
Set the position of thisFromContent
in the given ADQL query string.- Specified by:
setPosition
in interfaceFromContent
- Parameters:
position
- New position of thisFromContent
.
-
getJoinedColumns
Gets the list of all columns on which the join is done (that's to say: the list of columns given with the keyword USING).- Returns:
- The joined columns (columns listed in USING(...)).
-
hasJoinedColumns
public final boolean hasJoinedColumns()Tells whether this join has a list of columns to join.- Returns:
- true if some columns must be explicitly joined, false otherwise.
-
setJoinedColumns
Sets the list of all columns on which the join is done (that's to say: the list of columns given with the keyword USING).- Parameters:
columns
- The joined columns.
-
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
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:
-
toADQL
Description copied from interface:ADQLObject
Gets the ADQL expression of this object.- Specified by:
toADQL
in interfaceADQLObject
- Returns:
- The corresponding ADQL expression.
-
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. - Throws:
UnresolvedJoinException
- If a join is not possible.
-
addAllExcept
public static final void addAllExcept(SearchColumnList itemsToAdd, SearchColumnList target, Map<String, DBCommonColumn> exception) -
findExactlyOneColumn
public static final DBColumn findExactlyOneColumn(String columnName, byte caseSensitive, SearchColumnList list, boolean leftList) throws UnresolvedJoinException - Throws:
UnresolvedJoinException
-
findAtMostOneColumn
public static final DBColumn findAtMostOneColumn(String columnName, byte caseSensitive, SearchColumnList list, boolean leftList) throws UnresolvedJoinException - Throws:
UnresolvedJoinException
-
isCommonColumn
Tells whether the given column is a common column (that's to say, a unification of several columns of the same name).- Parameters:
col
- A DBColumn.- Returns:
- true if the given column is a common column, false otherwise (particularly if col = null).
-
getTables
Description copied from interface:FromContent
- Specified by:
getTables
in interfaceFromContent
- Returns:
- The list of all
ADQLTable
s found.
-
getTablesByAlias
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.
-
getJoinType
Gets the type of this join.- Returns:
- Its join type (i.e. CROSS JOIN, LEFT JOIN, LEFT OUTER JOIN, ...).
-
getCopy
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:
Exception
- If there is any error during the copy.
-