com.smartgwt.client.docs.serverds

## Class AdvancedCriteria

- java.lang.Object
- - com.smartgwt.client.docs.serverds.AdvancedCriteria

-     public class AdvancedCriteria
      extends java.lang.Object

  This class is not meant to be created and used, it is actually documentation of settings allowed in a DataSource descriptor (.ds.xml file). See `com.smartgwt.client.docs.serverds` for how to use this documentation.

  AdvancedCriteria is a format for representing search criteria which may include operators on field values such as "less than", or may include sub-clauses such as several criteria applied to fields joined by an "OR" operator.

  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, 8000),
            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.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `AdvancedCriteria()`

  - ### Method Summary

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### AdvancedCriteria

          public AdvancedCriteria()