Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## com.bea.ld.filter
Class FilterXQuery

    java.lang.Object
      com.bea.ld.filter.FilterXQuery

All Implemented Interfaces:
  java.io.Serializable

    public class FilterXQuery

extends java.lang.Object
implements java.io.Serializable

This class enables client-side control of data service function results through filtering and ordering without having to use complex XQuery syntax. A filter object is passed to Liquid Data (along with the name of a function in a data service), which processes the filters/orderby list and generates the XQuery. This capability is helpful in cases where a data service returns results that contain nested objects and you want to get different views of the objects based on certain conditions.

For example, if the returned document is CUSTOMERS/CUSTOMER/ORDER, where:

- CUSTOMERS: the top-level document element.
- CUSTOMER: a repeatable sequence inside CUSTOMERS.
- ORDER: a repeatable sequence inside CUSTOMER.

There are four possible ways to view large orders (say CUSTOMER/ORDER/ORDER_AMOUNT > 1000)

1. All CUSTOMER objects but only large ORDER objects
2. Only CUSTOMER object which has at least one large order and view all ORDER objects for such CUSTOMER
3. Only CUSTOMER object which has at least one large order and view only Large ORDER objects (basically 1 & 2)
4. Only CUSTOMER object which has all the ORDER as large order (i.e., ORDER_AMOUNT > 1000)

Instead of writing XQuery for all these cases you just pass this object as parameter when executing the data service function.

1. All CUSTOMER objects but Only Large ORDER objects
`FilterXQuery filter = new FilterXQuery();
filter.addFilter("CUSTOMERS/CUSTOMER/ORDER","CUSTOMERS/CUSTOMER/ORDER/ORDER_AMOUNT",">","1000");
`

2. Only CUSTOMER object which has at least one large order and view All ORDER objects for such CUSTOMER

`FilterXQuery filter = new FilterXQuery();
filter.addFilter("CUSTOMERS/CUSTOMER","CUSTOMERS/CUSTOMER/ORDER/ORDER_AMOUNT",">","1000");
`

3. Only CUSTOMER object which has at least one large order and view only Large ORDER objects ( basically 1 & 2)

`FilterXQuery filter = new FilterXQuery();
filter.addFilter("CUSTOMERS/CUSTOMER","CUSTOMERS/CUSTOMER/ORDER/ORDER_AMOUNT",">","1000");
filter.addFilter("CUSTOMERS/CUSTOMER/ORDER","CUSTOMERS/CUSTOMER/ORDER/ORDER_AMOUNT",">","1000");
`

4. Only CUSTOMER object which has all the ORDER as large order (i.e. ORDER_AMOUNT > 1000)

`FilterXQuery filter = new FilterXQuery();
filter.addFilter("CUSTOMERS/CUSTOMER","CUSTOMERS/CUSTOMER/ORDER/ORDER_AMOUNT",">","1000",true);
`

See Also:
  `addFilter(String appliesTo, String field, String operator, String value)`, `createFilter(String field, String operator, String value, boolean everyChild)`, Serialized Form

Field Summary
`static java.lang.String` | `AND`
`static java.lang.String` | `ANY_TYPE_LIMIT`
`static java.lang.String` | `ASCENDING`
`static java.lang.String` | `BEA_SQL_LIKE`
`static java.lang.String` | `DESCENDING`
`static java.lang.String` | `EQUAL`
`static java.lang.String` | `GREATER_THAN`
`static java.lang.String` | `GREATER_THAN_EQUAL`
`static java.lang.String` | `LESS_THAN`
`static java.lang.String` | `LESS_THAN_EQUAL`
`static java.lang.String` | `MATCHES`
`static java.lang.String` | `NOT`
`static java.lang.String` | `NOT_EQUAL`
`static java.lang.String` | `OR`

Constructor Summary
`FilterXQuery()`

Method Summary
`void` | `addFilter(java.lang.String appliesTo, Filter filter)`
`void` | `addFilter(java.lang.String appliesTo, Filter f1, Filter f2, java.lang.String op)`
`void` | `addFilter(java.lang.String appliesTo, java.lang.String field, java.lang.String operator, java.lang.String value)` Creates a filter and adds it to the list of filters.
`void` | `addFilter(java.lang.String appliesTo, java.lang.String field, java.lang.String operator, java.lang.String value, boolean everyChild)`
`void` | `addOrderBy(java.lang.String appliesTo, java.lang.String field, java.lang.String sort)` Adds the sort crieteria to the object specified by the appliesTo argument.
`Filter` | `createFilter(Filter f1, Filter f2, java.lang.String operator)` This method will create a compound filter.
`Filter` | `createFilter(java.lang.String field, java.lang.String operator, java.lang.String value)` Creates a filter that can be later applied to any of the objects in the hierarchy of the field path, e.g., either to CUSTOMER or ORDER if the field is CUSTOMER/ORDER/TOTAL_ORDER_AMOUNT.
`Filter` | `createFilter(java.lang.String field, java.lang.String operator, java.lang.String value, boolean everyChild)`
`ExternalVariables` | `getExternalVariables()` gets the ExternalVariables
`com.bea.ld.filter.FilterContainer[]` | `getFilterList()`
`com.bea.ld.filter.LimitData[]` | `getLimitDataList()`
`com.bea.ld.filter.OrderByContainer[]` | `getOrderByList()`
`java.util.Hashtable` | `keyedFilterList()`
`java.util.Hashtable` | `keyedLimitDataList()`
`java.util.Hashtable` | `keyedOrderByList()`
`void` | `setExternalVariables(ExternalVariables v)` set the ExternalVariables containing the list of external variables which can be used in filter/limit.
`void` | `setFilterList(com.bea.ld.filter.FilterContainer[] fl)`
`void` | `setLimit(java.lang.String appliesTo, java.lang.String max)` Associates the maximum number of entries to return of the element specified by the appliesTo argument.
`void` | `setLimitDataList(com.bea.ld.filter.LimitData[] ld)`
`void` | `setOrderByList(com.bea.ld.filter.OrderByContainer[] ob)`
`org.openuri.www.FilterXQuery` | `toProxy()`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### LESS_THAN

    public static final java.lang.String LESS_THAN

See Also:
  Constant Field Values

### GREATER_THAN

    public static final java.lang.String GREATER_THAN

See Also:
  Constant Field Values

### LESS_THAN_EQUAL

    public static final java.lang.String LESS_THAN_EQUAL

See Also:
  Constant Field Values

### GREATER_THAN_EQUAL

    public static final java.lang.String GREATER_THAN_EQUAL

See Also:
  Constant Field Values

### EQUAL

    public static final java.lang.String EQUAL

See Also:
  Constant Field Values

### NOT_EQUAL

    public static final java.lang.String NOT_EQUAL

See Also:
  Constant Field Values

### AND

    public static final java.lang.String AND

See Also:
  Constant Field Values

### OR

    public static final java.lang.String OR

See Also:
  Constant Field Values

### NOT

    public static final java.lang.String NOT

See Also:
  Constant Field Values

### BEA_SQL_LIKE

    public static final java.lang.String BEA_SQL_LIKE

See Also:
  Constant Field Values

### MATCHES

    public static final java.lang.String MATCHES

See Also:
  Constant Field Values

### ASCENDING

    public static final java.lang.String ASCENDING

See Also:
  Constant Field Values

### DESCENDING

    public static final java.lang.String DESCENDING

See Also:
  Constant Field Values

### ANY_TYPE_LIMIT

    public static final java.lang.String ANY_TYPE_LIMIT

See Also:
  Constant Field Values

Constructor Detail

### FilterXQuery

    public FilterXQuery()

Method Detail

### createFilter

    public Filter createFilter(java.lang.String field,
                               java.lang.String operator,
                               java.lang.String value)

  Creates a filter that can be later applied to any of the objects in the hierarchy of the field path, e.g., either to CUSTOMER or ORDER if the field is CUSTOMER/ORDER/TOTAL_ORDER_AMOUNT.

  Parameters:
    `field` - Path relative to document element.
    `operator` - This is an operator ( <,<=,>,>=,=,!=) supported by XQuery directly on field (XAPTH).
    `value` - Value against which the field will be compared. Provide necessary quotes if required.
  Returns:
    return the filter object. This filter can be applied to any of the object in the hierarchy of the field.

### createFilter

    public Filter createFilter(java.lang.String field,
                               java.lang.String operator,
                               java.lang.String value,
                               boolean everyChild)

  Parameters:
    `everyChild` - This flag is false by default. This is applicable only if the field belongs to one of the child objects in the hierarchy and this filter is applied to the parent object. If this flag is true it will return parent object only if the filter condition is satisfied by all the children of the parent object.
  See Also:
    `createFilter(String field, String operator, String value)`

### createFilter

    public Filter createFilter(Filter f1,
                               Filter f2,
                               java.lang.String operator)

  This method will create a compound filter.

  Parameters:
    `f1` - Filter object created by any of the createFilter Method.
    `f2` - Filter object created by any of the createFilter Method.
    `operator` - Logical operator (and, or, not). For not operator, f2 will not be used and can be set to null.
  Returns:
    - A Filter Object.

### addFilter

    public void addFilter(java.lang.String appliesTo,
                          java.lang.String field,
                          java.lang.String operator,
                          java.lang.String value)

  Creates a filter and adds it to the list of filters.

  Parameters:
    `appliesTo` - String XPath (relative to document element) to which the filter is applied.
  See Also:
    `for details`

### addFilter

    public void addFilter(java.lang.String appliesTo,
                          java.lang.String field,
                          java.lang.String operator,
                          java.lang.String value,
                          boolean everyChild)

  See Also:
    `addFilter(String appliesTo, String field, String operator, String value)`, `createFilter(String field, String operator, String value, boolean everyChild)`

### addFilter

    public void addFilter(java.lang.String appliesTo,
                          Filter f1,
                          Filter f2,
                          java.lang.String op)

  See Also:
    `addFilter(String appliesTo, String field, String operator, String value)`, `createFilter(Filter f1, Filter f2, String operator)`

### addFilter

    public void addFilter(java.lang.String appliesTo,
                          Filter filter)

  See Also:
    `addFilter(String appliesTo, String field, String operator, String value)`, `createFilter(Filter f1, Filter f2, String operator)`

### addOrderBy

    public void addOrderBy(java.lang.String appliesTo,
                           java.lang.String field,
                           java.lang.String sort)

  Adds the sort crieteria to the object specified by the appliesTo argument.

  Parameters:
    `appliesTo` - String XPath relative to document Element
    `field` - String fieldName (relative (not the full path) to 'appliesTo' object)
    `sort` - sort criteria (ascending/descending)

### keyedFilterList

    public java.util.Hashtable keyedFilterList()

  Returns:
    FilterList keyed by XPath ( For internal use only)
  Exclude:

### getFilterList

    public com.bea.ld.filter.FilterContainer[] getFilterList()

  Returns:
    the array of FilterContainer Object ( For internal use only)
  Exclude:

### setFilterList

    public void setFilterList(com.bea.ld.filter.FilterContainer[] fl)

  Parameters:
    `fl` - Array of FilterContainer
  Exclude:
    Converts the array to keyed list ( For internal use only)

### keyedOrderByList

    public java.util.Hashtable keyedOrderByList()

  Returns:
    FilterList keyed by XPath ( For internal use only)
  Exclude:

### setOrderByList

    public void setOrderByList(com.bea.ld.filter.OrderByContainer[] ob)

  Parameters:
    `ob` - Array of OrderByContainer
  Exclude:
    Converts the array to keyed list ( For internal use only)

### getOrderByList

    public com.bea.ld.filter.OrderByContainer[] getOrderByList()

  Returns:
    the array of OrderByContainer Object ( For internal use only)
  Exclude:

### setLimitDataList

    public void setLimitDataList(com.bea.ld.filter.LimitData[] ld)

  Parameters:
    `ld` - array of LimitData
  Exclude:
    Converts the array to keyed list ( For internal use only)

### getLimitDataList

    public com.bea.ld.filter.LimitData[] getLimitDataList()

  Returns:
    the array of LimitData Object ( For internal use only)
  Exclude:

### setLimit

    public void setLimit(java.lang.String appliesTo,
                         java.lang.String max)

  Associates the maximum number of entries to return of the element specified by the appliesTo argument.

  Parameters:
    `appliesTo` - String XPath ( relative to document element) to which the filter is applied.
    `max` - $variable declared in ExternalVariables OR int value specified in string e.g. "2"

### keyedLimitDataList

    public java.util.Hashtable keyedLimitDataList()

  Returns:
    LimitDataList keyed by XPath (For internal use only)
  Exclude:

### setExternalVariables

    public void setExternalVariables(ExternalVariables v)

  set the ExternalVariables containing the list of external variables which can be used in filter/limit.

  Parameters:
    `v` - ExternalVariables

### getExternalVariables

    public ExternalVariables getExternalVariables()

  gets the ExternalVariables

  Returns:
    the ExternalVariables object

### toProxy

    public org.openuri.www.FilterXQuery toProxy()

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2009 Oracle. All Rights Reserved.