public class DBObjectCriteria<T extends SystemObject> extends java.lang.Object implements DBObjectFilter<T>
accept
capability, information about each criterion is
available (type, name, schema) so that the listing of objects can be done
efficiently.
The base class supports the following criteria as they are supported by the fundamentals of the object listing - for example they can be used in the actual dictionary SQL queries against the database.
listObjects
documentation for the specific
DBObjectProvider implementation for more information.DBObject.getType()
,
DBObject.getName()
,
SchemaObject.getSchema()
DBObjectFilter.IDFilter<T extends DBObject>
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
LIKE_SINGLE_CHAR_WILDCARD |
static char |
LIKE_SINGLE_CHAR_WILDCARD_CHAR |
static java.lang.String |
LIKE_WILDCARD |
static char |
LIKE_WILDCARD_CHAR |
Constructor and Description |
---|
DBObjectCriteria(java.lang.Class<? extends T> clz,
java.lang.String... types)
Constructs a new criteria object for the given DBObject implementation
that is restricted to the given types.
|
DBObjectCriteria(T obj)
Constructs a new criteria object to match the given object by name, type
and schema.
|
Modifier and Type | Method and Description |
---|---|
boolean |
accept(java.lang.String type,
Schema schema,
java.lang.String name)
Tests whether this filter accepts the given values.
|
boolean |
accept(T obj)
Tests the given object to see if it matches all of the criteria and returns
true if it does.
|
void |
addFilter(DBObjectFilter<T> filter)
Adds an extra filter to this object as an auxillary criterion.
|
DBObjectCriteria<T> |
clone()
Creates a copy of this criteria, such that accept on the returned
criteria will accept the same objects that this criteria accepts.
|
static boolean |
containsWildcard(java.lang.String string)
Tests whether the given String contains a SQL wildcard (i.e.
|
static DBObjectCriteria<SystemObject> |
createCriteria(java.lang.String[] types,
Schema schema,
java.lang.String nameLike)
Creates a new, blank criteria that isn't tied to a specific SystemObject
subclass.
|
static DBObjectCriteria<SystemObject> |
createCriteria(java.lang.String type,
Schema schema,
java.lang.String nameLike)
Creates a new, blank criteria that isn't tied to a specific SystemObject
subclass.
|
static DBObjectCriteria<SystemObject> |
createCriteria(java.lang.String type,
java.lang.String schemaName,
java.lang.String nameLike)
Creates a new, blank criteria that isn't tied to a specific SystemObject
subclass.
|
static DBObjectCriteria<SystemObject> |
createCriteria(java.lang.String type,
java.lang.String dbName,
java.lang.String schemaName,
java.lang.String nameLike)
Creates a new, blank criteria that isn't tied to a specific SystemObject
subclass.
|
static DBObjectCriteria<SystemObject> |
createSingleObjectCriteria(java.lang.String type,
Schema schema,
java.lang.String name)
Creates a new criteria for getting a single object, that isn't tied to
a specific SystemObject subclass.
|
static DBObjectCriteria<SystemObject> |
createSingleObjectCriteria(java.lang.String type,
java.lang.String schemaName,
java.lang.String name)
Creates a new criteria for getting a single object, that isn't tied to
a specific SystemObject subclass.
|
static DBObjectCriteria<SystemObject> |
createSingleObjectCriteria(java.lang.String type,
java.lang.String dbName,
java.lang.String schemaName,
java.lang.String name)
Creates a new criteria for getting a single object, that isn't tied to
a specific SystemObject subclass.
|
static DBObjectCriteria<SystemObject> |
createTypeCriteria(java.util.Collection<java.lang.String> types)
Creates a new DBObjectCriteria object that is only restricted by object
type.
|
static DBObjectCriteria<SystemObject> |
createTypeCriteria(java.lang.String... types)
Creates a new DBObjectCriteria object that is only restricted by object
type.
|
boolean |
equals(java.lang.Object other) |
java.lang.String |
getDatabaseName()
Gets the criterion for database name restriction.
|
java.lang.String |
getName()
Gets the criterion for name restriction.
|
java.lang.String |
getNameLike()
Gets the criterion for name restriction.
|
java.lang.String |
getSchemaName()
Gets the schema name criterion.
|
java.lang.String[] |
getTypeArray()
Gets the criterion for object type as an array of allowed type Strings.
|
java.util.Collection<java.lang.String> |
getTypes()
Gets the criterion for object type as a list of allowed type Strings.
|
boolean |
hasExtraCriteria()
Returns true if this criteria has had at least one extra criterion added
via the
addFilter method. |
int |
hashCode() |
boolean |
isAllowedName(java.lang.String name)
Tests whether the given name matches the name like criterion.
|
boolean |
isAllowedSchema(Schema schema)
Tests whether the given schema matches the "schema name" criterion.
|
boolean |
isAllowedSchemaName(java.lang.String schemaName)
Tests whether the given schema name matches the "schema name" criterion.
|
boolean |
isAllowedType(java.lang.String type)
Tests if the given type string passes this criterion.
|
boolean |
isFullyLoadObjects()
Tests whether the provider should fully load the object(s) on list/get
if a partial load has an extra cost.
|
boolean |
isNameWild()
Tests whether the "name like" criterion will accept more than one specific
string.
|
boolean |
isUserOnly()
Gets the value of the "user only" criterion.
|
void |
setDatabaseDescriptor(DatabaseDescriptor desc)
By default a DBObjectCriteria will compare names case sensitively,
having assumed that they are internalised.
|
void |
setDatabaseName(java.lang.String dbName)
Sets the database name criterion.
|
void |
setFullyLoadObjects(boolean fullLoad)
Sets whether listed object(s) should be fully loaded where possible.
|
void |
setName(java.lang.String name)
Sets the name criterion.
|
void |
setNameLike(java.lang.String nameLike)
Sets the name like criterion.
|
void |
setSchema(Schema schema)
Sets the schema name criterion using a Schema object.
|
void |
setSchemaName(java.lang.String name)
Sets the schema name criterion.
|
void |
setTypes(java.util.Collection<java.lang.String> types)
Deprecated.
types can only be set on initial construction, this method
does nothing.
|
void |
setTypes(java.lang.String... types)
Deprecated.
types can only be set on initial construction, this method
does nothing.
|
void |
setUserOnly(boolean userOnly)
Sets the "user only" criterion.
|
public static final char LIKE_WILDCARD_CHAR
public static final java.lang.String LIKE_WILDCARD
public static final char LIKE_SINGLE_CHAR_WILDCARD_CHAR
public static final java.lang.String LIKE_SINGLE_CHAR_WILDCARD
public DBObjectCriteria(T obj) throws java.lang.NullPointerException
obj
- the object that the new criteria will match. Must not be null.java.lang.NullPointerException
- if the object passed in is nullpublic DBObjectCriteria(java.lang.Class<? extends T> clz, java.lang.String... types)
For example the following will return a Collection of Relations from
DBObjectProvider.listObjects(DBObjectCriteria)
containing just
Tables and Views:
new DBObjectCritiera( Relation.class, Table.TYPE, View.TYPE )
To construct a generic criteria use the static
createCriteria
methods.
clz
- the class of object set restrict as a criteria.types
- the object types to additionally restrict on top of the
class.public final java.lang.String getNameLike()
If no "name like" criterion has been set, but a "name" criterion has been set then this will return the "name" criterion, as it will still be compatible with a LIKE expression. If there is query logic available for "equals" as well as "like" then check the "name" criterion first.
getName()
public final void setNameLike(java.lang.String nameLike)
set the database descriptor
in
conjunction with this criterion.
Setting this criteria clears the "name" criteria.
nameLike
- the parameter to LIKE for matching an object namegetNameLike()
,
setName(String)
,
setDatabaseDescriptor(DatabaseDescriptor)
public final java.lang.String getName()
getNameLike()
public final void setName(java.lang.String name)
set the database descriptor
in
conjunction with this criterion.
Setting this criteria clears the "name like" criteria.
name
- the exact object name to matchgetName()
,
setNameLike(String)
,
setDatabaseDescriptor(DatabaseDescriptor)
public final void setDatabaseDescriptor(DatabaseDescriptor desc)
case
insensitive
policy for names then this will fail. Setting the
descriptor here allows us to always perform the correct logic for
calls to accept
or isAllowedName
.
This will automatically be set when a criteria is passed to a
DBObjectProvider (e.g. to getObject
).
desc
- the database descriptor to use for name logicsetNameLike(String)
,
isAllowedName(String)
public final boolean isNameWild()
public final boolean isAllowedName(java.lang.String name)
name
- the name to testsetNameLike(String)
,
setDatabaseDescriptor(DatabaseDescriptor)
public final java.util.Collection<java.lang.String> getTypes()
public final java.lang.String[] getTypeArray()
public final boolean isAllowedType(java.lang.String type)
type
- the type to testgetTypes()
@Deprecated public final void setTypes(java.util.Collection<java.lang.String> types)
@Deprecated public final void setTypes(java.lang.String... types)
public final java.lang.String getSchemaName()
public final void setSchemaName(java.lang.String name)
name
- the schema name for SchemaObjects to match. If null, schema
objects from any schema are matched.getSchemaName()
public final void setSchema(Schema schema)
schema
- the schema for SchemaObjects to match. If null, the
schema objects will not be restricted by schemagetSchemaName()
public final boolean isAllowedSchema(Schema schema)
schema
- the schema to testpublic final boolean isAllowedSchemaName(java.lang.String schemaName)
schemaName
- the schema name to testpublic final java.lang.String getDatabaseName()
public final void setDatabaseName(java.lang.String dbName)
dbName
- the name of the database link to usegetDatabaseName()
public final boolean isUserOnly()
public final void setUserOnly(boolean userOnly)
userOnly
- if true, the "user only" criterion will be enforcedpublic boolean accept(java.lang.String type, Schema schema, java.lang.String name)
type
- the object type to testschema
- the schema to testname
- the object name to testpublic boolean accept(T obj)
accept
in interface DBObjectFilter<T extends SystemObject>
obj
- the object to testpublic final void addFilter(DBObjectFilter<T> filter)
filter
- a new filter to check when accept
is called.public final boolean hasExtraCriteria()
addFilter
method.public void setFullyLoadObjects(boolean fullLoad)
Databases do not support this flag as there is no extra cost involved in listing the objects before building their properties.
fullLoad
- whether to fully load the object (if supported).public boolean isFullyLoadObjects()
setFullyLoadObjects(boolean)
public int hashCode()
hashCode
in class java.lang.Object
public boolean equals(java.lang.Object other)
equals
in class java.lang.Object
public DBObjectCriteria<T> clone()
clone
in class java.lang.Object
public static DBObjectCriteria<SystemObject> createTypeCriteria(java.lang.String... types)
If the given types are empty, the returned criteria will list any SystemObject type.
This is a convinience mechansim for a caller that doesn't care about
the type T of the returned DBObjectCriteria. To make T specific, use
the constructor DBObjectCriteria(Class,String[])
.
types
- the object types the returned criteria will matchpublic static DBObjectCriteria<SystemObject> createTypeCriteria(java.util.Collection<java.lang.String> types)
types
- the object types the returned criteria will matchcreateTypeCriteria(java.lang.String[])
public static DBObjectCriteria<SystemObject> createCriteria(java.lang.String type, Schema schema, java.lang.String nameLike)
type
- restrict objects by this typeschema
- restrict objects by this schemanameLike
- restrict object by names LIKE
this stringpublic static DBObjectCriteria<SystemObject> createCriteria(java.lang.String type, java.lang.String schemaName, java.lang.String nameLike)
type
- restrict objects by this typeschemaName
- restrict objects by this schemanameLike
- restrict object by names LIKE
this stringpublic static DBObjectCriteria<SystemObject> createCriteria(java.lang.String type, java.lang.String dbName, java.lang.String schemaName, java.lang.String nameLike)
type
- restrict objects by this typedbName
- restrict objects by this databaseschemaName
- restrict objects by this schemanameLike
- restrict object by names LIKE
this stringpublic static DBObjectCriteria<SystemObject> createCriteria(java.lang.String[] types, Schema schema, java.lang.String nameLike)
types
- restrict objects by these typesschema
- restrict objects by this schemanameLike
- restrict object by names LIKE
this stringpublic static DBObjectCriteria<SystemObject> createSingleObjectCriteria(java.lang.String type, Schema schema, java.lang.String name)
type
- get object of this typeschema
- get object in this schemaname
- get object with this namepublic static DBObjectCriteria<SystemObject> createSingleObjectCriteria(java.lang.String type, java.lang.String schemaName, java.lang.String name)
type
- get object of this typeschemaName
- get object in this schemaname
- get object with this namepublic static DBObjectCriteria<SystemObject> createSingleObjectCriteria(java.lang.String type, java.lang.String dbName, java.lang.String schemaName, java.lang.String name)
type
- get object of this typedbName
- restrict objects by this databaseschemaName
- get object in this schemaname
- get object with this namepublic static boolean containsWildcard(java.lang.String string)
string
- the string to test