public abstract class StandardQuery<S extends Storable> extends AbstractQuery<S> implements Appender
QueryExecutor
.Query.Controller, Query.Timeout
Modifier | Constructor and Description |
---|---|
protected |
StandardQuery(Filter<S> filter,
FilterValues<S> values,
OrderingList<S> ordering,
QueryHints hints) |
Modifier and Type | Method and Description |
---|---|
<T extends S> |
after(T start)
Returns a query which fetches results for this query after a given
starting point, which is useful for re-opening a cursor.
|
Query<S> |
and(Filter<S> filter)
Returns a new query which has another
filter logically "and"ed to this, potentially reducing the amount of
results. |
void |
appendTo(java.lang.Appendable app)
Append the string representation of this object to the given Appendable.
|
protected void |
clearExecutor()
Clears any cached reference to a query executor.
|
long |
count()
Returns a count of all results matched by this query.
|
long |
count(Query.Controller controller)
Returns a count of all results matched by this query.
|
void |
deleteAll()
Deletes zero or more matching objects.
|
void |
deleteAll(Query.Controller controller)
Deletes zero or more matching objects.
|
protected abstract Transaction |
enterTransaction(IsolationLevel level)
Enter a transaction as needed by the standard delete operation, or null
if transactions are not supported.
|
boolean |
equals(java.lang.Object obj) |
protected QueryExecutor<S> |
executor()
Returns the executor in use by this query.
|
protected abstract QueryExecutorFactory<S> |
executorFactory()
Return a QueryExecutorFactory which is used to get an executor.
|
boolean |
exists()
Returns true if any results are matched by this query.
|
boolean |
exists(Query.Controller controller)
Returns true if any results are matched by this query.
|
Cursor<S> |
fetch()
Fetches results for this query.
|
Cursor<S> |
fetch(Query.Controller controller)
Fetches results for this query.
|
Cursor<S> |
fetchSlice(long from,
java.lang.Long to)
Fetches a slice of results for this query, as defined by a numerical
range.
|
Cursor<S> |
fetchSlice(long from,
java.lang.Long to,
Query.Controller controller)
Fetches a slice of results for this query, as defined by a numerical
range.
|
int |
getBlankParameterCount()
Returns the amount of blank parameters that need to be filled in.
|
Filter<S> |
getFilter()
Returns the query's filter.
|
FilterValues<S> |
getFilterValues()
Returns the query's filter values, which is null if filter has no
parameters.
|
protected OrderingList<S> |
getOrdering() |
java.lang.Class<S> |
getStorableType()
Returns the specific type of Storable managed by this object.
|
int |
hashCode() |
protected abstract StandardQuery<S> |
newInstance(FilterValues<S> values,
OrderingList<S> ordering,
QueryHints hints)
Return a new or cached instance of StandardQuery implementation, using
new filter values.
|
Query<S> |
not()
Returns a new query which produces all the results not supplied in this
query.
|
Query<S> |
or(Filter<S> filter)
Returns a new query which has another
filter logically "or"ed to this, potentially increasing the amount of
results. |
Query<S> |
orderBy(java.lang.String... properties)
Returns a copy of this query ordered by specific property values.
|
Query<S> |
orderBy(java.lang.String property)
Returns a copy of this query ordered by a specific property value.
|
boolean |
printNative(java.lang.Appendable app,
int indentLevel)
Prints the native query to any appendable, which is useful for
performance analysis.
|
boolean |
printPlan(java.lang.Appendable app,
int indentLevel)
Prints the query excecution plan to any appendable, which is useful for
performance analysis.
|
protected abstract QueryFactory<S> |
queryFactory()
Return a QueryFactory which is used to form new queries from this one.
|
protected void |
resetExecutor()
Resets any cached reference to a query executor.
|
protected void |
setExecutor()
Ensures that a cached query executor reference is available.
|
boolean |
tryDeleteOne()
Deletes zero or one matching objects.
|
boolean |
tryDeleteOne(Query.Controller controller)
Deletes zero or one matching objects.
|
Query<S> |
with(boolean value)
Returns a copy of this Query with the next blank parameter filled in.
|
Query<S> |
with(byte value)
Returns a copy of this Query with the next blank parameter filled in.
|
Query<S> |
with(char value)
Returns a copy of this Query with the next blank parameter filled in.
|
Query<S> |
with(double value)
Returns a copy of this Query with the next blank parameter filled in.
|
Query<S> |
with(float value)
Returns a copy of this Query with the next blank parameter filled in.
|
Query<S> |
with(int value)
Returns a copy of this Query with the next blank parameter filled in.
|
Query<S> |
with(long value)
Returns a copy of this Query with the next blank parameter filled in.
|
Query<S> |
with(java.lang.Object value)
Returns a copy of this Query with the next blank parameter filled in.
|
Query<S> |
with(short value)
Returns a copy of this Query with the next blank parameter filled in.
|
Query<S> |
withValues(java.lang.Object... values)
Returns a copy of this Query with the next blank parameters filled in.
|
and, checkSliceArguments, deleteOne, deleteOne, fetchAfter, fetchAfter, loadOne, loadOne, or, printNative, printNative, printPlan, printPlan, toString, tryLoadOne, tryLoadOne
protected StandardQuery(Filter<S> filter, FilterValues<S> values, OrderingList<S> ordering, QueryHints hints)
filter
- optional filter object, defaults to open filter if nullvalues
- optional values object, defaults to filter initial valuesordering
- optional order-by propertieshints
- optional query hintspublic java.lang.Class<S> getStorableType()
Query
getStorableType
in interface Query<S extends Storable>
public Filter<S> getFilter()
Query
public FilterValues<S> getFilterValues()
Query
getFilterValues
in interface Query<S extends Storable>
public int getBlankParameterCount()
Query
getBlankParameterCount
in interface Query<S extends Storable>
public Query<S> with(int value)
Query
public Query<S> with(long value)
Query
public Query<S> with(float value)
Query
public Query<S> with(double value)
Query
public Query<S> with(boolean value)
Query
public Query<S> with(char value)
Query
public Query<S> with(byte value)
Query
public Query<S> with(short value)
Query
public Query<S> with(java.lang.Object value)
Query
public Query<S> withValues(java.lang.Object... values)
Query
withValues
in interface Query<S extends Storable>
values
- parameter values to fill in; if null or empty, this
Query instance is returnedpublic Query<S> and(Filter<S> filter) throws FetchException
Query
filter
logically "and"ed to this, potentially reducing the amount of
results.and
in interface Query<S extends Storable>
filter
- query filterFetchException
- if storage layer throws an exceptionpublic Query<S> or(Filter<S> filter) throws FetchException
Query
filter
logically "or"ed to this, potentially increasing the amount of
results.or
in interface Query<S extends Storable>
filter
- query filterFetchException
- if storage layer throws an exceptionpublic Query<S> not() throws FetchException
Query
not
in interface Query<S extends Storable>
FetchException
- if storage layer throws an exceptionpublic Query<S> orderBy(java.lang.String property) throws FetchException
Query
Note: Specification of ordering properties is not cumulative. Calling this method will first remove any previous ordering properties.
orderBy
in interface Query<S extends Storable>
property
- name of property to order byFetchException
- if storage layer throws an exceptionpublic Query<S> orderBy(java.lang.String... properties) throws FetchException
Query
Note: Specification of ordering properties is not cumulative. Calling this method will first remove any previous ordering properties.
orderBy
in interface Query<S extends Storable>
properties
- names of properties to order byFetchException
- if storage layer throws an exceptionpublic <T extends S> Query<S> after(T start) throws FetchException
Query
ordering
. If not a total ordering, then query may start at an earlier
position.
Note: The returned query can be very expensive to fetch from repeatedly, if the query needs to perform a sort operation. Ideally, the query ordering should match the natural ordering of an index or key.
after
in interface Query<S extends Storable>
start
- storable to attempt to start after; if null, this query is
returnedFetchException
- if storage layer throws an exceptionpublic Cursor<S> fetch() throws FetchException
Query
fetch
in interface Query<S extends Storable>
FetchException
- if storage layer throws an exceptionRepository.enterTransaction(IsolationLevel)
public Cursor<S> fetch(Query.Controller controller) throws FetchException
Query
fetch
in interface Query<S extends Storable>
controller
- optional controller which can abort query operationFetchException
- if storage layer throws an exceptionRepository.enterTransaction(IsolationLevel)
public Cursor<S> fetchSlice(long from, java.lang.Long to) throws FetchException
Query
ordering
in order for the slice results to be deterministic.fetchSlice
in interface Query<S extends Storable>
from
- zero-based from
record number, inclusiveto
- optional zero-based to
record number, exclusiveFetchException
- if storage layer throws an exceptionpublic Cursor<S> fetchSlice(long from, java.lang.Long to, Query.Controller controller) throws FetchException
Query
ordering
in order for the slice results to be deterministic.fetchSlice
in interface Query<S extends Storable>
from
- zero-based from
record number, inclusiveto
- optional zero-based to
record number, exclusivecontroller
- optional controller which can abort query operationFetchException
- if storage layer throws an exceptionpublic boolean tryDeleteOne() throws PersistException
Query
tryDeleteOne
in interface Query<S extends Storable>
PersistMultipleException
- if more than one record matchesPersistException
- if storage layer throws an exceptionpublic boolean tryDeleteOne(Query.Controller controller) throws PersistException
Query
tryDeleteOne
in interface Query<S extends Storable>
controller
- optional controller which can abort query operationPersistMultipleException
- if more than one record matchesPersistException
- if storage layer throws an exceptionpublic void deleteAll() throws PersistException
Query
deleteAll
in interface Query<S extends Storable>
PersistException
- if storage layer throws an exceptionpublic void deleteAll(Query.Controller controller) throws PersistException
Query
deleteAll
in interface Query<S extends Storable>
controller
- optional controller which can abort query operationPersistException
- if storage layer throws an exceptionpublic long count() throws FetchException
Query
count
in interface Query<S extends Storable>
FetchException
- if storage layer throws an exceptionpublic long count(Query.Controller controller) throws FetchException
Query
count
in interface Query<S extends Storable>
controller
- optional controller which can abort query operationFetchException
- if storage layer throws an exceptionpublic boolean exists() throws FetchException
Query
exists
in interface Query<S extends Storable>
FetchException
- if storage layer throws an exceptionpublic boolean exists(Query.Controller controller) throws FetchException
Query
exists
in interface Query<S extends Storable>
controller
- optional controller which can abort query operationFetchException
- if storage layer throws an exceptionpublic boolean printNative(java.lang.Appendable app, int indentLevel) throws java.io.IOException
Query
printNative
in interface Query<S extends Storable>
app
- append results hereindentLevel
- amount to indent text, zero for nonejava.io.IOException
public boolean printPlan(java.lang.Appendable app, int indentLevel) throws java.io.IOException
Query
public int hashCode()
public boolean equals(java.lang.Object obj)
public void appendTo(java.lang.Appendable app) throws java.io.IOException
Appender
protected OrderingList<S> getOrdering()
protected QueryExecutor<S> executor() throws RepositoryException
RepositoryException
protected void setExecutor() throws RepositoryException
RepositoryException
protected void resetExecutor() throws RepositoryException
RepositoryException
protected void clearExecutor()
protected abstract Transaction enterTransaction(IsolationLevel level)
level
- minimum desired isolation levelprotected abstract QueryFactory<S> queryFactory()
protected abstract QueryExecutorFactory<S> executorFactory()
protected abstract StandardQuery<S> newInstance(FilterValues<S> values, OrderingList<S> ordering, QueryHints hints)
values
- non-null values objectordering
- order-by properties, never nullCopyright © 2006-2013 Amazon Technologies, Inc.. All Rights Reserved.