2.17.2: 2011-06-17

net.sf.basedb.core
Class DynamicJoin

java.lang.Object
  extended by net.sf.basedb.core.DynamicJoin
All Implemented Interfaces:
Join, QueryElement

 class DynamicJoin
extends Object
implements Join

Represents a join between two virtual tables in a dynamic query: leftTable JOIN rightTable ON columns.

This class is used by, for example, DynamicSpotQuery.joinReporters(JoinType) to create the Join query element that is needed.

Version:
2.0
Author:
Nicklas
Last modified
$Date: 2010-04-21 11:48:29 +0200 (Wed, 21 Apr 2010) $

Field Summary
private  VirtualColumn[] columns
           
private  int hashCode
           
private  JoinType joinType
           
private  VirtualTable left
           
private  VirtualTable right
           
private  VirtualDb vdb
           
 
Constructor Summary
DynamicJoin(VirtualDb vdb, JoinType joinType, VirtualTable right, VirtualColumn... columns)
          Create a new join using the root entity table as the left table.
DynamicJoin(VirtualDb vdb, JoinType joinType, VirtualTable left, VirtualTable right, VirtualColumn... columns)
          Create a new join between two tables.
 
Method Summary
 boolean equals(Object other)
          This join is equal to another DynamicJoin if they join between the same tables using the same columns and join types.
 Collection<? extends QueryElement> getChildren()
          Get the children of this query element or null if it has no children.
 String getThetaJoin(Query query, DbControl dc)
           
 String getThetaJoinCondition(Query query, DbControl dc)
           
 int hashCode()
           
 String toQl(Query query, DbControl dc)
          Create a query language string of the query element.
 String toString()
           
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

vdb

private final VirtualDb vdb

joinType

private final JoinType joinType

left

private final VirtualTable left

right

private final VirtualTable right

columns

private final VirtualColumn[] columns

hashCode

private int hashCode
Constructor Detail

DynamicJoin

DynamicJoin(VirtualDb vdb,
            JoinType joinType,
            VirtualTable right,
            VirtualColumn... columns)
Create a new join using the root entity table as the left table. SELECT ... FROM rootTable JOIN right ON columns.

Parameters:
vdb - The virtual database where the joined table is located
joinType - The type of join
right - The table to join to
columns - The columns to join on, all columns must exists in the root table and the joined table

DynamicJoin

DynamicJoin(VirtualDb vdb,
            JoinType joinType,
            VirtualTable left,
            VirtualTable right,
            VirtualColumn... columns)
Create a new join between two tables. The left table must already have been joined to the root table or to another joined table. SELECT ... FROM rootTable ... JOIN left ... JOIN right ON columns

Parameters:
vdb - The virtual database where the joined table is located
joinType - The type of join
left - The table to join from
right - The table to join to
columns - The columns to join on, all columns must exists in the left table and the right table
Method Detail

toQl

public String toQl(Query query,
                   DbControl dc)
            throws BaseException
Description copied from interface: QueryElement
Create a query language string of the query element. Use the Query.getQueryType() method to find out which query language is wanted in case the element requires different syntax for different languages.

Specified by:
toQl in interface QueryElement
Parameters:
query - The query that is about to be executed
dc - The DbControl object used to execute the query
Throws:
BaseException - If there is any other error

getChildren

public Collection<? extends QueryElement> getChildren()
Description copied from interface: QueryElement
Get the children of this query element or null if it has no children. For example the AddExpression has two children, the expression beeing added.

Specified by:
getChildren in interface QueryElement
Returns:
Always null

getThetaJoin

public String getThetaJoin(Query query,
                           DbControl dc)
                    throws BaseException
Specified by:
getThetaJoin in interface Join
Throws:
BaseException

getThetaJoinCondition

public String getThetaJoinCondition(Query query,
                                    DbControl dc)
                             throws BaseException
Specified by:
getThetaJoinCondition in interface Join
Throws:
BaseException

toString

public String toString()
Overrides:
toString in class Object

equals

public boolean equals(Object other)
This join is equal to another DynamicJoin if they join between the same tables using the same columns and join types.

Overrides:
equals in class Object

hashCode

public int hashCode()
Overrides:
hashCode in class Object

2.17.2: 2011-06-17