public class AdvancedCriteria extends Criterion
Smart GWT DataSources can use AdvancedCriteria to search a list of Record
s, and
the Smart GWT Java Server can translate AdvancedCriteria to either SQL or Hibernate
queries (Note: The server-side AdvancedCriteria handling feature is only available
with the Power and Enterprise Editions of Smart GWT; the Pro Edition is
limited to ordinary criteria handling on the server side).
If the entire dataset is cached locally, Smart GWT can perform AdvancedCriteria filtering on the client, avoiding a server call.
AdvancedCriteria objects can be created directly in java. For example:
AdvancedCriteria criteria = new AdvancedCriteria(OperatorId.AND, new Criterion[]{ new Criterion("salary", OperatorId.LESS_THAN, 80000), new AdvancedCriteria(OperatorId.OR, new Criterion[]{ new Criterion("title", OperatorId.ICONTAINS, "Manager"), new Criterion("reports", OperatorId.NOT_NULL) }) });
In addition to building a raw AdvancedCriteria object as described above, the
DataSource.convertCriteria()
and DataSource.combineCriteria()
methods
may be used to create and modify criteria based on simple fieldName / value mappings.
When passed to the Smart GWT Server, a server-side AdvancedCriteria instance (in the package com.isomorphic.criteria) can be retrieved from a DSRequest via com.isomorphic.datasource.DSRequest.getAdvancedCriteria(). These same AdvancedCriteria objects can be directly created server side, and applied to a DSRequest via setAdvancedCriteria().
RestDataSource
, the recommended way of integration with servers that are not running
the Smart GWT Server Framework, defines a standard XML and JSON serialization of
AdvancedCriteria
.
For other servers, you can translate AdvancedCriteria
into whatever format is
expected by the server, typically by implementing DataSource.transformRequest()
.
The internal representation of AdvancedCriteria is a simple JavaScript structure, available via AdvancedCriteria.getJsObj():
// an AdvancedCriteria { _constructor:"AdvancedCriteria", operator:"and", criteria:[ // this is a Criterion { fieldName:"salary", operator:"lessThan", value:"80000" }, { operator:"or", criteria:[ { fieldName:"title", operator:"iContains", value:"Manager" }, { fieldName:"reports", operator:"notNull" } ] } ] }And an AdvancedCriteria can also be created from a JavaScriptObject. This makes AdvancedCriteria very easy to store and retrieve as JSON strings, using
JSONEncoder
.
See Criteria Editing
for information about
editing AdvancedCriteria in a DynamicForm.factoryCreated, factoryProperties
Constructor and Description |
---|
AdvancedCriteria() |
AdvancedCriteria(Criterion c) |
AdvancedCriteria(JavaScriptObject jsObj) |
AdvancedCriteria(OperatorId operator) |
AdvancedCriteria(OperatorId operator,
Criterion[] criterias) |
AdvancedCriteria(java.lang.String fieldName,
OperatorId operator) |
AdvancedCriteria(java.lang.String fieldName,
OperatorId operator,
java.lang.Boolean value) |
AdvancedCriteria(java.lang.String fieldName,
OperatorId operator,
java.lang.Boolean[] value) |
AdvancedCriteria(java.lang.String fieldName,
OperatorId operator,
java.util.Date value) |
AdvancedCriteria(java.lang.String fieldName,
OperatorId operator,
java.util.Date[] value) |
AdvancedCriteria(java.lang.String fieldName,
OperatorId operator,
java.util.Date start,
java.util.Date end) |
AdvancedCriteria(java.lang.String fieldName,
OperatorId operator,
java.lang.Float value) |
AdvancedCriteria(java.lang.String fieldName,
OperatorId operator,
java.lang.Float[] value) |
AdvancedCriteria(java.lang.String fieldName,
OperatorId operator,
java.lang.Float start,
java.lang.Float end) |
AdvancedCriteria(java.lang.String fieldName,
OperatorId operator,
java.lang.Integer value) |
AdvancedCriteria(java.lang.String fieldName,
OperatorId operator,
java.lang.Integer[] value) |
AdvancedCriteria(java.lang.String fieldName,
OperatorId operator,
java.lang.Integer start,
java.lang.Integer end) |
AdvancedCriteria(java.lang.String fieldName,
OperatorId operator,
java.lang.Long value) |
AdvancedCriteria(java.lang.String fieldName,
OperatorId operator,
java.lang.Long[] value) |
AdvancedCriteria(java.lang.String fieldName,
OperatorId operator,
java.lang.Long start,
java.lang.Long end) |
AdvancedCriteria(java.lang.String fieldName,
OperatorId operator,
java.lang.String value) |
AdvancedCriteria(java.lang.String fieldName,
OperatorId operator,
java.lang.String[] value) |
AdvancedCriteria(java.lang.String fieldName,
OperatorId operator,
java.lang.String start,
java.lang.String end) |
Modifier and Type | Method and Description |
---|---|
java.lang.String |
asString()
Gets a string encoding of an AdvancedCriteria object.
|
static AdvancedCriteria |
fromJSObject(JavaScriptObject jsObj)
Creates an AdvancedCriteria from a JavaScriptObject with the format described in
AdvancedCriteria |
static AdvancedCriteria |
fromJSON(java.lang.String json)
Creates an AdvancedCriteria from a JSON String in the format described in
AdvancedCriteria . |
static AdvancedCriteria |
fromString(java.lang.String json)
Creates an AdvancedCriteria from a String in the format described in
AdvancedCriteria
Unlike fromJSON(), dates, times and datetimes round-trip correctly, because they
serialize via the LOGICAL_DATE_CONSTRUCTOR mode of JSONEncoder. |
static AdvancedCriteria |
getOrCreateRef(JavaScriptObject jsObj) |
java.lang.Boolean |
getStrictSQLFiltering()
When set to true, causes filtering using this criteria object to follow SQL99 behavior for dealing with NULL values.
|
void |
setStrictSQLFiltering(java.lang.Boolean strictSQLFiltering)
When set to true, causes filtering using this criteria object to follow SQL99 behavior for dealing with NULL values.
|
java.lang.String |
toJSON()
Gets a JSON encoding of an AdvancedCriteria object.
|
addCriteria, addCriteria, addCriteria, addCriteria, addCriteria, addCriteria, addCriteria, addCriteria, addCriteria, addCriteria, addCriteria, addCriteria, addCriteria, addCriteria, addCriteria, addCriteria, addCriteria, addCriteria, addCriteria, addCriteria, addCriteria, addCriteria, appendToCriterionList, asAdvancedCriteria, buildCriterionFromList, getCriteria, getFieldName, getOperator, getValueAsBoolean, getValueAsDate, getValueAsFloat, getValueAsInt, getValueAsIntArray, getValueAsInteger, getValueAsString, getValueAsStringArray, instanceOf, markAdvancedCriteria, setCriteria, setFieldName, setOperator, unmarkAdvancedCriteria
addCriteria, addCriteria, addCriteria, addCriteria, convertToCriteriaArray, getValues, isAdvanced
applyFactoryProperties, doAddHandler, fireEvent, getAttribute, getAttributeAsBoolean, getAttributeAsBoolean, getAttributeAsDate, getAttributeAsDouble, getAttributeAsDoubleArray, getAttributeAsFloat, getAttributeAsInt, getAttributeAsIntArray, getAttributeAsJavaScriptObject, getAttributeAsLong, getAttributeAsMap, getAttributeAsObject, getAttributeAsRecord, getAttributeAsString, getAttributeAsStringArray, getAttributes, getHandlerCount, isFactoryCreated, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttribute, setAttributeAsJavaObject, setFactoryCreated
public AdvancedCriteria()
public AdvancedCriteria(JavaScriptObject jsObj)
public AdvancedCriteria(Criterion c)
public AdvancedCriteria(OperatorId operator, Criterion[] criterias)
public AdvancedCriteria(OperatorId operator)
public AdvancedCriteria(java.lang.String fieldName, OperatorId operator)
public AdvancedCriteria(java.lang.String fieldName, OperatorId operator, java.lang.Integer value)
public AdvancedCriteria(java.lang.String fieldName, OperatorId operator, java.lang.String value)
public AdvancedCriteria(java.lang.String fieldName, OperatorId operator, java.lang.Float value)
public AdvancedCriteria(java.lang.String fieldName, OperatorId operator, java.util.Date value)
public AdvancedCriteria(java.lang.String fieldName, OperatorId operator, java.lang.Boolean value)
public AdvancedCriteria(java.lang.String fieldName, OperatorId operator, java.lang.Integer[] value)
public AdvancedCriteria(java.lang.String fieldName, OperatorId operator, java.lang.String[] value)
public AdvancedCriteria(java.lang.String fieldName, OperatorId operator, java.lang.Float[] value)
public AdvancedCriteria(java.lang.String fieldName, OperatorId operator, java.util.Date[] value)
public AdvancedCriteria(java.lang.String fieldName, OperatorId operator, java.lang.Boolean[] value)
public AdvancedCriteria(java.lang.String fieldName, OperatorId operator, java.util.Date start, java.util.Date end)
public AdvancedCriteria(java.lang.String fieldName, OperatorId operator, java.lang.Float start, java.lang.Float end)
public AdvancedCriteria(java.lang.String fieldName, OperatorId operator, java.lang.Integer start, java.lang.Integer end)
public AdvancedCriteria(java.lang.String fieldName, OperatorId operator, java.lang.Long value)
public AdvancedCriteria(java.lang.String fieldName, OperatorId operator, java.lang.Long[] value)
public AdvancedCriteria(java.lang.String fieldName, OperatorId operator, java.lang.Long start, java.lang.Long end)
public AdvancedCriteria(java.lang.String fieldName, OperatorId operator, java.lang.String start, java.lang.String end)
public static AdvancedCriteria getOrCreateRef(JavaScriptObject jsObj)
public void setStrictSQLFiltering(java.lang.Boolean strictSQLFiltering)
this discussion
for more detail.
Note : This is an advanced setting
strictSQLFiltering
- Default value is nullpublic java.lang.Boolean getStrictSQLFiltering()
this discussion
for more detail.public static AdvancedCriteria fromJSObject(JavaScriptObject jsObj)
AdvancedCriteria
jsObj
- the passed JavaScriptObject objectpublic static AdvancedCriteria fromJSON(java.lang.String json)
AdvancedCriteria
.
Note that dates will not round-trip perfectly because JSON has no way of accurately representing
date values, nor a method of differentiating between dates, times and datetimes.
To have dates, times and datetimes round-trip correctly, use asString() and fromString(),
which serialize via the LOGICAL_DATE_CONSTRUCTOR mode of JSONEncoder.json
- the passed JSON stringpublic java.lang.String toJSON()
public static AdvancedCriteria fromString(java.lang.String json)
AdvancedCriteria
Unlike fromJSON(), dates, times and datetimes round-trip correctly, because they
serialize via the LOGICAL_DATE_CONSTRUCTOR mode of JSONEncoder.json
- the passed JSON stringpublic java.lang.String asString()