PSE 2000 Group 4

jobmatch.data
Class ProfileQuery

jobmatch.data.ProfileQuery

public final class ProfileQuery

ProfileQuery is used to query the Profile table in the database.
It returns objects of type ProfileDO.

General usage:

In DODS: Create a Data Object named "Dog", and create an Attribute named "Name", and set that Attribute to "Can be queried." DODS will then generate the method DogQuery.setQueryName().

In your Business Layer, prepare the query:

             DogQuery dq = new DogQuery();
             dq.setQueryName("Rex")
             if ( Rex is a reserved name )
                 dq.requireUniqueInstance();
 
Then, get the query results one of two ways:

#1:

             String names = "";
             DogBDO[] dogs = dq.getBDOArray();
             for ( int i = 0; i < dogs.length; i++ ) {
                 names += dogs[i].getName() + " ";
             }
 
or #2:
             String names = "";
             DogBDO dog;
             while ( null != ( dog = dq.getNextBDO() ) ) {
                 names += dog.getName() + " ";
             }
 
Note: Methods getDOArray() and getNextDO() do exist, but they are not generally used in the Business or Presentation layers of an application. All access to the Data Layer (DO classes) should occur via the Business Layer (BDO classes). Only the Business Layer (BDO classes and classes extending them) should need to manipulate the Data Layer (DO classes). See also the comments in the BDO constructors.

Note: If requireUniqueInstance() was called, then getBDOArray() or getNextBDO() will throw an exception if more than one "Rex" was found.

Note: Results of the query will come from the Data Object cache if: - The cache is available. - Matches were found in the cache. - No other tables (Data Objects of other types) were involved in the query. This can happen if you extend the DogQuery class and you make calls to the QueryBuilder object to add SQL involving other tables. If any of these conditions is not true, then any results from the query will come from the database.

To reuse the query object, call:

             dq.reset();
 

Version:
$Revision: 1.6 $

Constructor Summary
ProfileQuery()
          Public constructor.
 
Method Summary
 void addOrderByCompany()
          Add Company to the ORDER BY clause.
 void addOrderByCompany(boolean direction_flag)
          Add Company to the ORDER BY clause.
 void addOrderByLastNotification()
          Add LastNotification to the ORDER BY clause.
 void addOrderByLastNotification(boolean direction_flag)
          Add LastNotification to the ORDER BY clause.
 void addOrderByMatchTree()
          Add MatchTree to the ORDER BY clause.
 void addOrderByMatchTree(boolean direction_flag)
          Add MatchTree to the ORDER BY clause.
 void addOrderByName()
          Add Name to the ORDER BY clause.
 void addOrderByName(boolean direction_flag)
          Add Name to the ORDER BY clause.
 void addOrderByNeedsRematching()
          Add NeedsRematching to the ORDER BY clause.
 void addOrderByNeedsRematching(boolean direction_flag)
          Add NeedsRematching to the ORDER BY clause.
 void addOrderByNotificationPeriod()
          Add NotificationPeriod to the ORDER BY clause.
 void addOrderByNotificationPeriod(boolean direction_flag)
          Add NotificationPeriod to the ORDER BY clause.
 void addOrderByNotify()
          Add Notify to the ORDER BY clause.
 void addOrderByNotify(boolean direction_flag)
          Add Notify to the ORDER BY clause.
 void closeParen()
          Place a closing parenthesis in the WHERE clause.
 ResultSet executeQuery(jobmatch.data.DBConnection conn)
          Method to query objects from the database.
 ProfileBDO[] getBDOArray()
          Return array of BDOs constructed from ResultSet returned by query.
 ProfileDO[] getDOArray()
          Return array of DOs constructed from ResultSet returned by query.
 ProfileBDO getNextBDO()
          Return successive BDOs from array built from ResultSet returned by query.
 ProfileDO getNextDO()
          Return successive DOs from array built from ResultSet returned by query.
 jobmatch.data.QueryBuilder getQueryBuilder()
          Returns the QueryBuilder that this ProfileQuery uses to construct and execute database queries.
 void hitDatabase()
           
 Object next(ResultSet rs)
          WARNING! This method is disabled.
 void openParen()
          Place an open parenthesis in the WHERE clause.
 void or()
          Insert an OR between WHERE clauses.
 void requireUniqueInstance()
          Set "unique instance" assertion bit.
 void reset()
          Reset the query parameters.
 void setQueryCompany(CompanyDO x)
          Set the Company to query
 void setQueryCompany(CompanyDO x, boolean exact)
          Set the Company to query.
 void setQueryHandle(String handle)
          Set the object handle to query.
 void setQueryLastNotification(Timestamp x)
          Set the LastNotification to query
 void setQueryLastNotification(Timestamp x, boolean exact)
          Set the LastNotification to query.
 void setQueryMatchTree(byte[] x)
          Set the MatchTree to query
 void setQueryMatchTree(byte[] x, boolean exact)
          Set the MatchTree to query.
 void setQueryName(String x)
          Set the Name to query
 void setQueryName(String x, boolean exact)
          Set the Name to query.
 void setQueryNeedsRematching(boolean x)
          Set the NeedsRematching to query
 void setQueryNeedsRematching(boolean x, boolean exact)
          Set the NeedsRematching to query.
 void setQueryNotificationPeriod(int x)
          Set the NotificationPeriod to query
 void setQueryNotificationPeriod(int x, boolean exact)
          Set the NotificationPeriod to query.
 void setQueryNotify(boolean x)
          Set the Notify to query
 void setQueryNotify(boolean x, boolean exact)
          Set the Notify to query.
 void setQueryOId(jobmatch.data.ObjectId oid)
          Set the OID to query.
 

Constructor Detail

ProfileQuery

public ProfileQuery()
Public constructor.
Method Detail

hitDatabase

public void hitDatabase()

getDOArray

public ProfileDO[] getDOArray()
                       throws jobmatch.data.DataObjectException,
                              jobmatch.data.NonUniqueQueryException
Return array of DOs constructed from ResultSet returned by query.
Throws:
jobmatch.data.DataObjectException - If a database access error occurs.
jobmatch.data.NonUniqueQueryException - If too many rows were found.

getNextDO

public ProfileDO getNextDO()
                    throws jobmatch.data.DataObjectException,
                           jobmatch.data.NonUniqueQueryException
Return successive DOs from array built from ResultSet returned by query.
Throws:
jobmatch.data.DataObjectException - If a database access error occurs.
jobmatch.data.NonUniqueQueryException - If too many rows were found.

getBDOArray

public ProfileBDO[] getBDOArray()
                         throws jobmatch.data.DataObjectException,
                                jobmatch.data.NonUniqueQueryException
Return array of BDOs constructed from ResultSet returned by query.
Throws:
jobmatch.data.DataObjectException - If a database access error occurs.
jobmatch.data.NonUniqueQueryException - If too many rows were found.

getNextBDO

public ProfileBDO getNextBDO()
                      throws jobmatch.data.DataObjectException,
                             jobmatch.data.NonUniqueQueryException
Return successive BDOs from array built from ResultSet returned by query.
Throws:
jobmatch.data.DataObjectException - If a database access error occurs.
jobmatch.data.NonUniqueQueryException - If too many rows were found.

setQueryOId

public void setQueryOId(jobmatch.data.ObjectId oid)
Set the OID to query. WARNING! This method assumes that table Profile has a column named "oid". This method is called from the DO classes to retrieve an object by id.
Parameters:
oid - The object id to query.

setQueryHandle

public void setQueryHandle(String handle)
                    throws jobmatch.data.ObjectIdException
Set the object handle to query. This is a variant of setQueryOId().
Parameters:
handle - The string version of the id to query.

requireUniqueInstance

public void requireUniqueInstance()
Set "unique instance" assertion bit. The first call to the next() method will throw an exception if more than one object was found.

reset

public void reset()
Reset the query parameters.

executeQuery

public ResultSet executeQuery(jobmatch.data.DBConnection conn)
                       throws SQLException
Method to query objects from the database. The following call in runQuery() dbQuery.query( this ); causes the dbQuery object to invoke executeQuery()
Parameters:
conn - Handle to database connection.
Throws:
SQLException - If a database access error occurs.

next

public Object next(ResultSet rs)
            throws SQLException,
                   jobmatch.data.ObjectIdException
WARNING! This method is disabled. It's implementation is forced by the Query interface. This method is disabled for 2 reasons: 1) the getDOArray() and getNextDO() methods are better because they return DOs instead of JDBC objects. 2) the createExisting() method throws an exception that we cannot reasonably handle here, and that we cannot throw from here.
Parameters:
rs - JDBC result set from which the next object will be instantiated.
Throws:
SQLException - If a database access error occurs.
com.lutris.appserver.server.sql.ObjectIdException - If an invalid object id was queried from the database.

setQueryCompany

public void setQueryCompany(CompanyDO x,
                            boolean exact)
                     throws jobmatch.data.DataObjectException,
                            jobmatch.data.QueryException
Set the Company to query.
Parameters:
x - The Company of the Profile to query.
exact - to use matches or not
Throws:
jobmatch.data.DataObjectException - If a database access error occurs.

setQueryCompany

public void setQueryCompany(CompanyDO x)
                     throws jobmatch.data.DataObjectException,
                            jobmatch.data.QueryException
Set the Company to query
Parameters:
x - The Company of the Profile to query.
Throws:
jobmatch.data.DataObjectException - If a database access error occurs.

addOrderByCompany

public void addOrderByCompany(boolean direction_flag)
Add Company to the ORDER BY clause.
Parameters:
direction_flag - True for ascending order, false for descending

addOrderByCompany

public void addOrderByCompany()
Add Company to the ORDER BY clause. This convenience method assumes ascending order.

setQueryLastNotification

public void setQueryLastNotification(Timestamp x,
                                     boolean exact)
                              throws jobmatch.data.DataObjectException,
                                     jobmatch.data.QueryException
Set the LastNotification to query.
Parameters:
x - The LastNotification of the Profile to query.
exact - to use matches or not
Throws:
jobmatch.data.DataObjectException - If a database access error occurs.

setQueryLastNotification

public void setQueryLastNotification(Timestamp x)
                              throws jobmatch.data.DataObjectException,
                                     jobmatch.data.QueryException
Set the LastNotification to query
Parameters:
x - The LastNotification of the Profile to query.
Throws:
jobmatch.data.DataObjectException - If a database access error occurs.

addOrderByLastNotification

public void addOrderByLastNotification(boolean direction_flag)
Add LastNotification to the ORDER BY clause.
Parameters:
direction_flag - True for ascending order, false for descending

addOrderByLastNotification

public void addOrderByLastNotification()
Add LastNotification to the ORDER BY clause. This convenience method assumes ascending order.

setQueryMatchTree

public void setQueryMatchTree(byte[] x,
                              boolean exact)
                       throws jobmatch.data.DataObjectException,
                              jobmatch.data.QueryException
Set the MatchTree to query.
Parameters:
x - The MatchTree of the Profile to query.
exact - to use matches or not
Throws:
jobmatch.data.DataObjectException - If a database access error occurs.

setQueryMatchTree

public void setQueryMatchTree(byte[] x)
                       throws jobmatch.data.DataObjectException,
                              jobmatch.data.QueryException
Set the MatchTree to query
Parameters:
x - The MatchTree of the Profile to query.
Throws:
jobmatch.data.DataObjectException - If a database access error occurs.

addOrderByMatchTree

public void addOrderByMatchTree(boolean direction_flag)
Add MatchTree to the ORDER BY clause.
Parameters:
direction_flag - True for ascending order, false for descending

addOrderByMatchTree

public void addOrderByMatchTree()
Add MatchTree to the ORDER BY clause. This convenience method assumes ascending order.

setQueryName

public void setQueryName(String x,
                         boolean exact)
                  throws jobmatch.data.DataObjectException,
                         jobmatch.data.QueryException
Set the Name to query.
Parameters:
x - The Name of the Profile to query.
exact - to use matches or not
Throws:
jobmatch.data.DataObjectException - If a database access error occurs.

setQueryName

public void setQueryName(String x)
                  throws jobmatch.data.DataObjectException,
                         jobmatch.data.QueryException
Set the Name to query
Parameters:
x - The Name of the Profile to query.
Throws:
jobmatch.data.DataObjectException - If a database access error occurs.

addOrderByName

public void addOrderByName(boolean direction_flag)
Add Name to the ORDER BY clause.
Parameters:
direction_flag - True for ascending order, false for descending

addOrderByName

public void addOrderByName()
Add Name to the ORDER BY clause. This convenience method assumes ascending order.

setQueryNeedsRematching

public void setQueryNeedsRematching(boolean x,
                                    boolean exact)
                             throws jobmatch.data.DataObjectException,
                                    jobmatch.data.QueryException
Set the NeedsRematching to query.
Parameters:
x - The NeedsRematching of the Profile to query.
exact - to use matches or not
Throws:
jobmatch.data.DataObjectException - If a database access error occurs.

setQueryNeedsRematching

public void setQueryNeedsRematching(boolean x)
                             throws jobmatch.data.DataObjectException,
                                    jobmatch.data.QueryException
Set the NeedsRematching to query
Parameters:
x - The NeedsRematching of the Profile to query.
Throws:
jobmatch.data.DataObjectException - If a database access error occurs.

addOrderByNeedsRematching

public void addOrderByNeedsRematching(boolean direction_flag)
Add NeedsRematching to the ORDER BY clause.
Parameters:
direction_flag - True for ascending order, false for descending

addOrderByNeedsRematching

public void addOrderByNeedsRematching()
Add NeedsRematching to the ORDER BY clause. This convenience method assumes ascending order.

setQueryNotify

public void setQueryNotify(boolean x,
                           boolean exact)
                    throws jobmatch.data.DataObjectException,
                           jobmatch.data.QueryException
Set the Notify to query.
Parameters:
x - The Notify of the Profile to query.
exact - to use matches or not
Throws:
jobmatch.data.DataObjectException - If a database access error occurs.

setQueryNotify

public void setQueryNotify(boolean x)
                    throws jobmatch.data.DataObjectException,
                           jobmatch.data.QueryException
Set the Notify to query
Parameters:
x - The Notify of the Profile to query.
Throws:
jobmatch.data.DataObjectException - If a database access error occurs.

addOrderByNotify

public void addOrderByNotify(boolean direction_flag)
Add Notify to the ORDER BY clause.
Parameters:
direction_flag - True for ascending order, false for descending

addOrderByNotify

public void addOrderByNotify()
Add Notify to the ORDER BY clause. This convenience method assumes ascending order.

setQueryNotificationPeriod

public void setQueryNotificationPeriod(int x,
                                       boolean exact)
                                throws jobmatch.data.DataObjectException,
                                       jobmatch.data.QueryException
Set the NotificationPeriod to query.
Parameters:
x - The NotificationPeriod of the Profile to query.
exact - to use matches or not
Throws:
jobmatch.data.DataObjectException - If a database access error occurs.

setQueryNotificationPeriod

public void setQueryNotificationPeriod(int x)
                                throws jobmatch.data.DataObjectException,
                                       jobmatch.data.QueryException
Set the NotificationPeriod to query
Parameters:
x - The NotificationPeriod of the Profile to query.
Throws:
jobmatch.data.DataObjectException - If a database access error occurs.

addOrderByNotificationPeriod

public void addOrderByNotificationPeriod(boolean direction_flag)
Add NotificationPeriod to the ORDER BY clause.
Parameters:
direction_flag - True for ascending order, false for descending

addOrderByNotificationPeriod

public void addOrderByNotificationPeriod()
Add NotificationPeriod to the ORDER BY clause. This convenience method assumes ascending order.

getQueryBuilder

public jobmatch.data.QueryBuilder getQueryBuilder()
Returns the QueryBuilder that this ProfileQuery uses to construct and execute database queries. ProfileQuery.setQueryXXX methods use the QueryBuilder to append SQL expressions to the "WHERE" clause to be executed. The QueryBuilder.addEndClause method. can be used to append freeform SQL expressions to the WHERE clause, e.g. "ORDER BY name". Notes regarding cache-enabled DO classes: DO classes can be cache-enabled. If when using a ProfileQuery, the application developer does not call getQueryBuilder, then ProfileQuery.setQueryXXX methods simply prune the DO cache and return the remaining results. However, a QueryBuilder builds SELECT statements for execution by the actual database, and never searches the built-in cache for the DO. So, if the DO class is cache-enabled, and getQueryBuilder is called, this ProfileQuery object ignores the cache and hits the actual database.

or

public void or()
Insert an OR between WHERE clauses. Example: find all the persons named Bob or Robert: PersonQuery pq = new PersonQuery(); pq.setQueryFirstName( "Bob" ); pq.or(); pq.setQueryFirstName( "Robert" ); Note: Calls to setQueryXxx methods are implicitly ANDed together, so the following example will always return nothing: PersonQuery pq = new PersonQuery(); pq.setQueryFirstName( "Bob" ); // AND automatically inserted here. pq.setQueryFirstName( "Robert" );
See Also:
to construct more elaborate queries.

openParen

public void openParen()
Place an open parenthesis in the WHERE clause. Example usage: find all the Bobs and Roberts who are 5 or 50 years old: PersonQuery pq = new PersonQuery(); pq.openParen(); pq.setQueryFirstName( "Bob" ); pq.or(); pq.setQueryFirstName( "Robert" ); pq.closeParen(); // AND automatically inserted here. pq.openParen(); pq.setQueryAge( 5 ); pq.or(); pq.setQueryAge( 50 ); pq.closeParen();
See Also:
to construct more elaborate queries.

closeParen

public void closeParen()
Place a closing parenthesis in the WHERE clause.
See Also:
openParen

PSE 2000 Group 4