|
Enhydra 5.1 API | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--org.webdocwf.util.genericstore.data.GenericObjectQuery
GenericObjectQuery is used to query the GENERICOBJECT table in the database. It returns objects of type GenericObjectDO.
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 = ""; DogDO[] dogs = dq.getDOArray(); for ( int i = 0; i < dogs.length; i++ ) { names += dogs[i].getName() + " "; }or #2:
String names = ""; DogDO dog; while ( null != ( dog = dq.getNextDO() ) ) { names += dog.getName() + " "; }
Note: If requireUniqueInstance()
was called,
then getDOArray()
or getNextDO()
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();
Constructor Summary | |
GenericObjectQuery()
Public constructor. |
|
GenericObjectQuery(User usr)
Constructor for Query with security |
Method Summary | |
void |
addOrderByEXTERNALOID()
Add EXTERNALOID to the ORDER BY clause. |
void |
addOrderByEXTERNALOID(boolean direction_flag)
Add EXTERNALOID to the ORDER BY clause. |
void |
addOrderByTYPEDEFINITIONOID()
Add TYPEDEFINITIONOID to the ORDER BY clause. |
void |
addOrderByTYPEDEFINITIONOID(boolean direction_flag)
Add TYPEDEFINITIONOID to the ORDER BY clause. |
static void |
assertQueryAccess(User usr)
Ensure that the given user is allowed to create a query |
void |
assertQueryAttrEXTERNALOIDAccess(java.math.BigDecimal x,
boolean exact,
User usr)
Deprecated. Instead use assertQueryAttrEXTERNALOIDAccess(java.math.BigDecimal x, String cmp_op, org.webdocwf.dods.access.User usr ) WebDocWf extension |
void |
assertQueryAttrEXTERNALOIDAccess(java.math.BigDecimal x,
java.lang.String cmp_op,
User usr)
Ensure the given user is allowed to query the attribute |
void |
assertQueryAttrEXTERNALOIDAccess(java.math.BigDecimal x,
User usr)
Ensure the given user is allowed to query the attribute |
void |
assertQueryAttrTYPEDEFINITIONOIDAccess(TypeDefinitionDO x,
boolean exact,
User usr)
Deprecated. Instead use assertQueryAttrTYPEDEFINITIONOIDAccess(org.webdocwf.util.genericstore.data.TypeDefinitionDO x, String cmp_op, org.webdocwf.dods.access.User usr ) WebDocWf extension |
void |
assertQueryAttrTYPEDEFINITIONOIDAccess(TypeDefinitionDO x,
java.lang.String cmp_op,
User usr)
Ensure the given user is allowed to query the attribute |
void |
assertQueryAttrTYPEDEFINITIONOIDAccess(TypeDefinitionDO x,
User usr)
Ensure the given user is allowed to query the attribute |
void |
closeParen()
Place a closing parenthesis in the WHERE clause. |
boolean |
containsWildcards(java.lang.String dbSearchValue)
Check whether a string contains DB wildcards |
java.lang.String |
convertUserSearchValue(java.lang.String userSearchValue)
Convert a String with user wildcards into a string with DB wildcards |
java.sql.ResultSet |
executeQuery(DBConnection conn)
Method to query objects from the database. |
int |
getCount()
Get the rowcount of the query If possible, do it without reading all rows |
int |
getDatabaseLimit()
Get the database limit of the query |
boolean |
getDatabaseLimitExceeded()
Get the database limit exceeded flag of the query |
GenericObjectDO[] |
getDOArray()
Return array of DOs constructed from ResultSet returned by query. |
GenericObjectDO |
getNextDO()
Return successive DOs from array built from ResultSet returned by query. |
QueryBuilder |
getQueryBuilder()
Returns the QueryBuilder that this GenericObjectQuery
uses to construct and execute database queries. |
int |
getReadSkip()
Get the readSkip number of the query |
boolean |
getUnique()
Get the unique flag of the query |
User |
getUser()
Get the user of the query |
boolean |
getUserStringAppendWildcard()
|
java.lang.String |
getUserStringSingleWildcard()
|
java.lang.String |
getUserStringSingleWildcardEscape()
|
boolean |
getUserStringTrim()
|
java.lang.String |
getUserStringWildcard()
|
java.lang.String |
getUserStringWildcardEscape()
|
static boolean |
hasQueryAccess(User usr)
Check whether the given user is allowed to create a query |
boolean |
hasQueryAttrEXTERNALOIDAccess(java.math.BigDecimal x,
boolean exact,
User usr)
Deprecated. Instead use hasQueryAttrEXTERNALOIDAccess(java.math.BigDecimal x, String cmp_op, org.webdocwf.dods.access.User usr ) WebDocWf extension |
boolean |
hasQueryAttrEXTERNALOIDAccess(java.math.BigDecimal x,
java.lang.String cmp_op,
User usr)
Check whether the given user is allowed to query the attribute |
boolean |
hasQueryAttrEXTERNALOIDAccess(java.math.BigDecimal x,
User usr)
Check whether the given user is allowed to query the attribute |
boolean |
hasQueryAttrTYPEDEFINITIONOIDAccess(TypeDefinitionDO x,
boolean exact,
User usr)
Deprecated. Instead use hasQueryAttrTYPEDEFINITIONOIDAccess(org.webdocwf.util.genericstore.data.TypeDefinitionDO x, String cmp_op, org.webdocwf.dods.access.User usr ) WebDocWf extension |
boolean |
hasQueryAttrTYPEDEFINITIONOIDAccess(TypeDefinitionDO x,
java.lang.String cmp_op,
User usr)
Check whether the given user is allowed to query the attribute |
boolean |
hasQueryAttrTYPEDEFINITIONOIDAccess(TypeDefinitionDO x,
User usr)
Check whether the given user is allowed to query the attribute |
void |
hitDatabase()
|
java.lang.Object |
next(java.sql.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. |
int |
selectCount()
Get the rowcount of the query by using count(*) in the DB |
void |
setDatabaseLimit(int newLimit)
Set the database limit of the query |
void |
setMaxRows(int maxRows)
Limit the number of rows (DOs) returned. |
void |
setQueryEXTERNALOID(java.math.BigDecimal x)
Set the EXTERNALOID to query |
void |
setQueryEXTERNALOID(java.math.BigDecimal x,
boolean exact)
Deprecated. Instead use setQueryEXTERNALOID(java.math.BigDecimal x,String cmp_op) |
void |
setQueryEXTERNALOID(java.math.BigDecimal x,
boolean exact,
User usr)
Deprecated. Instead use setQueryEXTERNALOID(java.math.BigDecimal x,String cmp_op, org.webdocwf.dods.access.User usr) WebDocWf extension |
void |
setQueryEXTERNALOID(java.math.BigDecimal x,
java.lang.String cmp_op)
Set the EXTERNALOID to query, with a QueryBuilder comparison operator. |
void |
setQueryEXTERNALOID(java.math.BigDecimal x,
java.lang.String cmp_op,
User usr)
Set the EXTERNALOID to query, with a QueryBuilder comparison operator. |
void |
setQueryEXTERNALOID(java.math.BigDecimal x,
User usr)
Set the EXTERNALOID to query. |
void |
setQueryHandle(java.lang.String handle)
Set the object handle to query. |
void |
setQueryOId(ObjectId oid)
Set the OID to query. |
void |
setQueryTYPEDEFINITIONOID(TypeDefinitionDO x)
Set the TYPEDEFINITIONOID to query |
void |
setQueryTYPEDEFINITIONOID(TypeDefinitionDO x,
boolean exact)
Deprecated. Instead use setQueryTYPEDEFINITIONOID(org.webdocwf.util.genericstore.data.TypeDefinitionDO x,String cmp_op) |
void |
setQueryTYPEDEFINITIONOID(TypeDefinitionDO x,
boolean exact,
User usr)
Deprecated. Instead use setQueryTYPEDEFINITIONOID(org.webdocwf.util.genericstore.data.TypeDefinitionDO x,String cmp_op, org.webdocwf.dods.access.User usr) WebDocWf extension |
void |
setQueryTYPEDEFINITIONOID(TypeDefinitionDO x,
java.lang.String cmp_op)
Set the TYPEDEFINITIONOID to query, with a QueryBuilder comparison operator. |
void |
setQueryTYPEDEFINITIONOID(TypeDefinitionDO x,
java.lang.String cmp_op,
User usr)
Set the TYPEDEFINITIONOID to query, with a QueryBuilder comparison operator. |
void |
setQueryTYPEDEFINITIONOID(TypeDefinitionDO x,
User usr)
Set the TYPEDEFINITIONOID to query. |
void |
setReadSkip(int newReadSkip)
Set the readSkip number of the query |
void |
setUnique(boolean newUnique)
Set the unique flag of the query |
void |
setUserStringAppendWildcard(boolean userStringAppendWildcard)
|
void |
setUserStringSingleWildcard(java.lang.String newUserStringSingleWildcard)
|
void |
setUserStringSingleWildcardEscape(java.lang.String newUserStringSingleWildcardEscape)
|
void |
setUserStringTrim(boolean userStringTrim)
|
void |
setUserStringWildcard(java.lang.String newUserStringWildcard)
|
void |
setUserStringWildcardEscape(java.lang.String newUserStringWildcardEscape)
|
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
public GenericObjectQuery()
public GenericObjectQuery(User usr) throws AccessException
usr
- The user for security check
AccessException
- The user is not allowed to create a query
WebDocWf extensionMethod Detail |
public static void assertQueryAccess(User usr) throws AccessException
usr
- The user for security check
AccessException
- The user is not allowed to create a query
WebDocWf extensionpublic static boolean hasQueryAccess(User usr) throws AccessEvalException
usr
- The user for security check
AccessEvalException
public User getUser()
public void setUnique(boolean newUnique)
newUnique
- The unique flag for the query
WebDocWf extensionpublic boolean getUnique()
public void setReadSkip(int newReadSkip)
public int getReadSkip()
public void setDatabaseLimit(int newLimit)
newLimit
- The limit for the query
WebDocWf extensionpublic int getDatabaseLimit()
public boolean getDatabaseLimitExceeded()
public void hitDatabase()
public void setUserStringWildcard(java.lang.String newUserStringWildcard)
public void setUserStringSingleWildcard(java.lang.String newUserStringSingleWildcard)
public void setUserStringSingleWildcardEscape(java.lang.String newUserStringSingleWildcardEscape)
public void setUserStringWildcardEscape(java.lang.String newUserStringWildcardEscape)
public void setUserStringAppendWildcard(boolean userStringAppendWildcard)
public void setUserStringTrim(boolean userStringTrim)
public java.lang.String getUserStringWildcard()
public java.lang.String getUserStringSingleWildcard()
public java.lang.String getUserStringSingleWildcardEscape()
public java.lang.String getUserStringWildcardEscape()
public boolean getUserStringAppendWildcard()
public boolean getUserStringTrim()
public void setMaxRows(int maxRows) throws DataObjectException, NonUniqueQueryException
DataObjectException
- If a database access error occurs.
NonUniqueQueryException
- If too many rows were found.public GenericObjectDO[] getDOArray() throws DataObjectException, NonUniqueQueryException
DataObjectException
- If a database access error occurs.
NonUniqueQueryException
- If too many rows were found.public GenericObjectDO getNextDO() throws DataObjectException, NonUniqueQueryException
DataObjectException
- If a database access error occurs.
NonUniqueQueryException
- If too many rows were found.public void setQueryOId(ObjectId oid)
GENERICOBJECT
has a column named "oid"
.
This method is called from the DO classes to retrieve an object by id.
oid
- The object id to query.public void setQueryHandle(java.lang.String handle) throws ObjectIdException
handle
- The string version of the id to query.
ObjectIdException
public void requireUniqueInstance()
public void reset()
public java.sql.ResultSet executeQuery(DBConnection conn) throws java.sql.SQLException
executeQuery
in interface Query
conn
- Handle to database connection.
java.sql.SQLException
- If a database access error occurs.public java.lang.Object next(java.sql.ResultSet rs) throws java.sql.SQLException, ObjectIdException
next
in interface Query
rs
- JDBC result set from which the next object
will be instantiated.
java.sql.SQLException
- If a database access error occurs.
ObjectIdException
- If an invalid object id was queried from the database.public java.lang.String convertUserSearchValue(java.lang.String userSearchValue)
userSearchValue
- The string with user wildcards
public boolean containsWildcards(java.lang.String dbSearchValue)
dbSearchValue
- The string with possible DB wildcards
public int getCount() throws NonUniqueQueryException, DataObjectException, java.sql.SQLException, DatabaseManagerException
NonUniqueQueryException
DataObjectException
java.sql.SQLException
DatabaseManagerException
public int selectCount() throws java.sql.SQLException, DatabaseManagerException
java.sql.SQLException
DatabaseManagerException
public void setQueryEXTERNALOID(java.math.BigDecimal x, java.lang.String cmp_op) throws DataObjectException, QueryException
x
- The EXTERNALOID of the GENERICOBJECT to query.cmp_op
- QueryBuilder comparison operator to use.
DataObjectException
- If a database access error occurs.
QueryException
- If comparison operator is inappropriate
(e.g. CASE_SENSITIVE_CONTAINS on an integer field).public void setQueryEXTERNALOID(java.math.BigDecimal x, boolean exact) throws DataObjectException, QueryException
x
- The EXTERNALOID of the GENERICOBJECT to query.exact
- to use matches or not
DataObjectException
- If a database access error occurs.
QueryException
public void setQueryEXTERNALOID(java.math.BigDecimal x) throws DataObjectException, QueryException
x
- The EXTERNALOID of the GENERICOBJECT to query.
DataObjectException
- If a database access error occurs.
QueryException
public void addOrderByEXTERNALOID(boolean direction_flag)
direction_flag
- True for ascending order, false for descendingpublic void addOrderByEXTERNALOID()
public void setQueryEXTERNALOID(java.math.BigDecimal x, boolean exact, User usr) throws DataObjectException, QueryException, AccessException
x
- The EXTERNALOID of the GENERICOBJECT to query.exact
- to use matches or notusr
- The user for security check
DataObjectException
- If a database access error occurs.
AccessException
- The user is not allowed to query this attribute
QueryException
public void setQueryEXTERNALOID(java.math.BigDecimal x, User usr) throws DataObjectException, QueryException, AccessException
x
- The EXTERNALOID of the GENERICOBJECT to query.usr
- The user for security check
DataObjectException
- If a database access error occurs.
AccessException
- The user is not allowed to query this attribute
WebDocWf extension
QueryException
public void setQueryEXTERNALOID(java.math.BigDecimal x, java.lang.String cmp_op, User usr) throws DataObjectException, QueryException, AccessException
x
- The EXTERNALOID of the GENERICOBJECT to query.cmp_op
- QueryBuilder comparison operator to use.usr
- The user for security check
DataObjectException
- If a database access error occurs.
QueryException
- If comparison operator is inappropriate
(e.g. CASE_SENSITIVE_CONTAINS on an integer field).
WebDocWf extension
AccessException
public void assertQueryAttrEXTERNALOIDAccess(java.math.BigDecimal x, boolean exact, User usr) throws AccessException
x
- The EXTERNALOID of the GENERICOBJECT to query.exact
- to use matches or notusr
- The user for security check
AccessException
- The user is not allowed to query this attributepublic void assertQueryAttrEXTERNALOIDAccess(java.math.BigDecimal x, java.lang.String cmp_op, User usr) throws AccessException
x
- The EXTERNALOID of the GENERICOBJECT to query.cmp_op
- QueryBuilder comparison operator to use.usr
- The user for security check
AccessException
- The user is not allowed to query this attribute
WebDocWf extensionpublic void assertQueryAttrEXTERNALOIDAccess(java.math.BigDecimal x, User usr) throws AccessException
x
- The EXTERNALOID of the GENERICOBJECT to query.usr
- The user for security check
AccessException
- The user is not allowed to query this attribute
WebDocWf extensionpublic boolean hasQueryAttrEXTERNALOIDAccess(java.math.BigDecimal x, boolean exact, User usr) throws AccessEvalException
x
- The EXTERNALOID of the GENERICOBJECT to query.exact
- to use matches or notusr
- The user for security check
AccessEvalException
public boolean hasQueryAttrEXTERNALOIDAccess(java.math.BigDecimal x, java.lang.String cmp_op, User usr) throws AccessEvalException
x
- The EXTERNALOID of the GENERICOBJECT to query.cmp_op
- QueryBuilder comparison operator to use.usr
- The user for security check
AccessEvalException
public boolean hasQueryAttrEXTERNALOIDAccess(java.math.BigDecimal x, User usr) throws AccessEvalException
x
- The EXTERNALOID of the GENERICOBJECT to query.usr
- The user for security check
AccessEvalException
public void setQueryTYPEDEFINITIONOID(TypeDefinitionDO x, java.lang.String cmp_op) throws DataObjectException, QueryException
x
- The TYPEDEFINITIONOID of the GENERICOBJECT to query.cmp_op
- QueryBuilder comparison operator to use.
DataObjectException
- If a database access error occurs.
QueryException
- If comparison operator is inappropriate
(e.g. CASE_SENSITIVE_CONTAINS on an integer field).public void setQueryTYPEDEFINITIONOID(TypeDefinitionDO x, boolean exact) throws DataObjectException, QueryException
x
- The TYPEDEFINITIONOID of the GENERICOBJECT to query.exact
- to use matches or not
DataObjectException
- If a database access error occurs.
QueryException
public void setQueryTYPEDEFINITIONOID(TypeDefinitionDO x) throws DataObjectException, QueryException
x
- The TYPEDEFINITIONOID of the GENERICOBJECT to query.
DataObjectException
- If a database access error occurs.
QueryException
public void addOrderByTYPEDEFINITIONOID(boolean direction_flag)
direction_flag
- True for ascending order, false for descendingpublic void addOrderByTYPEDEFINITIONOID()
public void setQueryTYPEDEFINITIONOID(TypeDefinitionDO x, boolean exact, User usr) throws DataObjectException, QueryException, AccessException
x
- The TYPEDEFINITIONOID of the GENERICOBJECT to query.exact
- to use matches or notusr
- The user for security check
DataObjectException
- If a database access error occurs.
AccessException
- The user is not allowed to query this attribute
QueryException
public void setQueryTYPEDEFINITIONOID(TypeDefinitionDO x, User usr) throws DataObjectException, QueryException, AccessException
x
- The TYPEDEFINITIONOID of the GENERICOBJECT to query.usr
- The user for security check
DataObjectException
- If a database access error occurs.
AccessException
- The user is not allowed to query this attribute
WebDocWf extension
QueryException
public void setQueryTYPEDEFINITIONOID(TypeDefinitionDO x, java.lang.String cmp_op, User usr) throws DataObjectException, QueryException, AccessException
x
- The TYPEDEFINITIONOID of the GENERICOBJECT to query.cmp_op
- QueryBuilder comparison operator to use.usr
- The user for security check
DataObjectException
- If a database access error occurs.
QueryException
- If comparison operator is inappropriate
(e.g. CASE_SENSITIVE_CONTAINS on an integer field).
WebDocWf extension
AccessException
public void assertQueryAttrTYPEDEFINITIONOIDAccess(TypeDefinitionDO x, boolean exact, User usr) throws AccessException
x
- The TYPEDEFINITIONOID of the GENERICOBJECT to query.exact
- to use matches or notusr
- The user for security check
AccessException
- The user is not allowed to query this attributepublic void assertQueryAttrTYPEDEFINITIONOIDAccess(TypeDefinitionDO x, java.lang.String cmp_op, User usr) throws AccessException
x
- The TYPEDEFINITIONOID of the GENERICOBJECT to query.cmp_op
- QueryBuilder comparison operator to use.usr
- The user for security check
AccessException
- The user is not allowed to query this attribute
WebDocWf extensionpublic void assertQueryAttrTYPEDEFINITIONOIDAccess(TypeDefinitionDO x, User usr) throws AccessException
x
- The TYPEDEFINITIONOID of the GENERICOBJECT to query.usr
- The user for security check
AccessException
- The user is not allowed to query this attribute
WebDocWf extensionpublic boolean hasQueryAttrTYPEDEFINITIONOIDAccess(TypeDefinitionDO x, boolean exact, User usr) throws AccessEvalException
x
- The TYPEDEFINITIONOID of the GENERICOBJECT to query.exact
- to use matches or notusr
- The user for security check
AccessEvalException
public boolean hasQueryAttrTYPEDEFINITIONOIDAccess(TypeDefinitionDO x, java.lang.String cmp_op, User usr) throws AccessEvalException
x
- The TYPEDEFINITIONOID of the GENERICOBJECT to query.cmp_op
- QueryBuilder comparison operator to use.usr
- The user for security check
AccessEvalException
public boolean hasQueryAttrTYPEDEFINITIONOIDAccess(TypeDefinitionDO x, User usr) throws AccessEvalException
x
- The TYPEDEFINITIONOID of the GENERICOBJECT to query.usr
- The user for security check
AccessEvalException
public QueryBuilder getQueryBuilder()
QueryBuilder
that this GenericObjectQuery
uses to construct and execute database queries.
GenericObjectQuery.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 GenericObjectQuery
, the application developer
does not call getQueryBuilder
,
then GenericObjectQuery.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 GenericObjectQuery
object ignores the cache
and hits the actual database.
public void or()
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 AND
ed together,
so the following example will always return nothing:
PersonQuery pq = new PersonQuery();
pq.setQueryFirstName( "Bob" );
// AND automatically inserted here.
pq.setQueryFirstName( "Robert" );
to construct more elaborate queries.
public void openParen()
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();
to construct more elaborate queries.
public void closeParen()
WHERE
clause.
|
Enhydra 5.1 API | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |