Package adql.query.from
Class ADQLJoin
- java.lang.Object
-
- adql.query.from.ADQLJoin
-
- All Implemented Interfaces:
ADQLObject,FromContent
public abstract class ADQLJoin extends java.lang.Object implements ADQLObject, FromContent
Defines a join between two "tables".- Version:
- 1.4 (09/2017)
- Author:
- Grégory Mantelet (CDS;ARI)
-
-
Field Summary
Fields Modifier and Type Field Description protected ClauseConstraintsconditionThe join condition.protected java.util.ArrayList<ADQLColumn>lstColumnsList of columns on which the join must be done.protected booleannaturalNatural join (use of table keys) ?
-
Constructor Summary
Constructors Constructor Description ADQLJoin(ADQLJoin toCopy)Builds an ADQL join by copying the given one.ADQLJoin(FromContent left, FromContent right)Builds anADQLJoinwith at least twoFromContentobjects: the left and the right part of the join (usually two tables: T1 JOIN T2).
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description static voidaddAllExcept(SearchColumnList itemsToAdd, SearchColumnList target, java.util.Map<java.lang.String,DBCommonColumn> exception)ADQLIteratoradqlIterator()Gets an iterator on the intern ADQL objects.static DBColumnfindAtMostOneColumn(java.lang.String columnName, byte caseSensitive, SearchColumnList list, boolean leftList)static DBColumnfindExactlyOneColumn(java.lang.String columnName, byte caseSensitive, SearchColumnList list, boolean leftList)abstract ADQLObjectgetCopy()Gets a (deep) copy of this ADQL object.SearchColumnListgetDBColumns()Gets the list of all columns (~ database metadata) available in this FROM part.ClauseConstraintsgetJoinCondition()Gets the condition of this join (that's to say: the condition which follows the keyword ON).java.util.Iterator<ADQLColumn>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).abstract java.lang.StringgetJoinType()Gets the type of this join.FromContentgetLeftTable()Gets the left "table" of this join.java.lang.StringgetName()Gets the name of this object in ADQL.TextPositiongetPosition()Gets the position of this object/token in the ADQL query.FromContentgetRightTable()Gets the right "table" of this join.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.booleanhasJoinedColumns()Tells whether this join has a list of columns to join.static booleanisCommonColumn(DBColumn col)Tells whether the given column is a common column (that's to say, a unification of several columns of the same name).booleanisNatural()Indicates whether this join is natural or not.voidsetJoinCondition(ClauseConstraints cond)Sets the condition of this join (that's to say: the condition which follows the keyword ON).voidsetJoinedColumns(java.util.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).voidsetLeftTable(FromContent table)Sets the left "table" of this join.voidsetNatural(boolean natural)Lets indicate that this join is natural (it must use the table keys).voidsetPosition(TextPosition position)Set the position of thisFromContentin the given ADQL query string.voidsetRightTable(FromContent table)Sets the right "table" of this join.java.lang.StringtoADQL()Gets the ADQL expression of this object.
-
-
-
Field Detail
-
natural
protected boolean natural
Natural join (use of table keys) ?
-
condition
protected ClauseConstraints condition
The join condition.
-
lstColumns
protected java.util.ArrayList<ADQLColumn> lstColumns
List of columns on which the join must be done.
-
-
Constructor Detail
-
ADQLJoin
public ADQLJoin(FromContent left, FromContent right)
Builds anADQLJoinwith at least twoFromContentobjects: 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
public ADQLJoin(ADQLJoin toCopy) throws java.lang.Exception
Builds an ADQL join by copying the given one.- Parameters:
toCopy- The ADQLJoin to copy.- Throws:
java.lang.Exception- If there is an error during the copy.
-
-
Method Detail
-
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
public final FromContent getLeftTable()
Gets the left "table" of this join.- Returns:
- The left part of the join.
-
setLeftTable
public void setLeftTable(FromContent table)
Sets the left "table" of this join.- Parameters:
table- The left part of the join.
-
getRightTable
public final FromContent getRightTable()
Gets the right "table" of this join.- Returns:
- The right part of the join.
-
setRightTable
public void setRightTable(FromContent table)
Sets the right "table" of this join.- Parameters:
table- The right part of the join.
-
getJoinCondition
public final ClauseConstraints getJoinCondition()
Gets the condition of this join (that's to say: the condition which follows the keyword ON).- Returns:
- The join condition.
-
setJoinCondition
public void setJoinCondition(ClauseConstraints cond)
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
public final TextPosition getPosition()
Description copied from interface:ADQLObjectGets the position of this object/token in the ADQL query.
By default, no position should be set.
- Specified by:
getPositionin 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
public final void setPosition(TextPosition position)
Description copied from interface:FromContentSet the position of thisFromContentin the given ADQL query string.- Specified by:
setPositionin interfaceFromContent- Parameters:
position- New position of thisFromContent.
-
getJoinedColumns
public final java.util.Iterator<ADQLColumn> 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
public void setJoinedColumns(java.util.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).- Parameters:
columns- The joined columns.
-
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.
-
getDBColumns
public SearchColumnList getDBColumns() throws UnresolvedJoinException
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. - Throws:
UnresolvedJoinException- If a join is not possible.
-
addAllExcept
public static final void addAllExcept(SearchColumnList itemsToAdd, SearchColumnList target, java.util.Map<java.lang.String,DBCommonColumn> exception)
-
findExactlyOneColumn
public static final DBColumn findExactlyOneColumn(java.lang.String columnName, byte caseSensitive, SearchColumnList list, boolean leftList) throws UnresolvedJoinException
- Throws:
UnresolvedJoinException
-
findAtMostOneColumn
public static final DBColumn findAtMostOneColumn(java.lang.String columnName, byte caseSensitive, SearchColumnList list, boolean leftList) throws UnresolvedJoinException
- Throws:
UnresolvedJoinException
-
isCommonColumn
public 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).- Parameters:
col- A DBColumn.- Returns:
- true if the given column is a common column, false otherwise (particularly if col = null).
-
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.
-
getJoinType
public abstract java.lang.String getJoinType()
Gets the type of this join.- Returns:
- Its join type (i.e. CROSS JOIN, LEFT JOIN, LEFT OUTER JOIN, ...).
-
getCopy
public abstract 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.
-
-