Oracle ADF Model and Business Components API Reference 10.1.2 B14022-01

oracle.jbo
Class ViewCriteria

java.lang.Object
  extended byjava.util.AbstractCollection
      extended byjava.util.AbstractList
          extended byjava.util.Vector
              extended byoracle.jbo.ViewCriteria
All Implemented Interfaces:
java.lang.Cloneable, java.util.Collection, java.util.List, NavigatableRowIterator, java.util.RandomAccess, RowIterator, java.io.Serializable

public class ViewCriteria
extends java.util.Vector
implements NavigatableRowIterator

A list of row criteria for a View Object's WHERE clause.

The lengths of the oracle.jbo.ViewCriteriaRow's in the list must all match the number of attributes in the View Object.

The following example of a user-defined function, demoCriteria uses several methods in the ViewCriteria and ViewCriteriaRow classes to create and populate criteria rows and to demonstrate "query-by-example." The printViewObject is a helper function that executes the View Object query and prints the results to the screen.

    public static void demoCriteria(ApplicationModule appMod)
    {
       // Create and populate criteria rows to support query-by-example.
       ViewObject empView = appMod.createViewObject("Emp", "mypackage1.EmpView");
       ViewCriteria vc = empView.createViewCriteria();
       ViewCriteriaRow vcRow = vc.createViewCriteriaRow();

       // ViewCriteriaRow attribute name is case-sensitive.
       // ViewCriteriaRow attribute value requires operator and value.
       // Note also single-quotes around string value.
       vcRow.setAttribute("Job", "= 'MANAGER'");
       vc.addElement(vcRow);

       vcRow = vc.createViewCriteriaRow();
       vcRow.setAttribute("Sal", "> 2500");

       vc.addElement(vcRow);
       empView.applyViewCriteria(vc);

       // Multiple rows are OR-ed in WHERE clause.
       System.out.println("Demo View Criteria");

       // Should print employees that are MANAGER or have Sal > 2500
       QueryDemo.printViewObject(empView);
    }

    public static void printViewObject(ViewObject vo)
    {
       // Execute the query, print results to the screen.
       vo.executeQuery();

       // Print the View Object's query
       System.out.println("Query: " + vo.getQuery());

       while (vo.hasNext())
       {
          Row row = vo.next();\
          String rowDataStr = "";

          // How many attributes (columns) is the View Object using?
          int numAttrs = vo.getAttributeCount();

          // Column numbers start with 0, not 1.
          for (int columnNo = 0; columnNo < numAttrs; columnNo++)
          {
             // See also Row.getAttribute(String name).
             Object attrData = row.getAttribute(columnNo);
             rowDataStr += (attrData + "\t");
          }
          System.out.println(rowDataStr);
       }
    }
 

In the above code example, note that the View Object's ViewObject.applyViewCriteria(oracle.jbo.ViewCriteria) must be called to apply this ViewCriteria to the View Object.

Since:
JDeveloper 3.0
See Also:
Serialized Form

Field Summary
protected  com.sun.java.util.collections.ArrayList listeners
           
 
Fields inherited from class java.util.Vector
capacityIncrement, elementCount, elementData
 
Fields inherited from class java.util.AbstractList
modCount
 
Fields inherited from interface oracle.jbo.RowIterator
ITER_MODE_LAST_PAGE_FULL, ITER_MODE_LAST_PAGE_PARTIAL, SLOT_BEFORE_FIRST, SLOT_BEYOND_LAST, SLOT_DELETED, SLOT_VALID
 
Constructor Summary
ViewCriteria(StructureDef structureDef)
           
ViewCriteria(ViewObject viewObject)
          Creates an empty view criteria object.
 
Method Summary
 void addListener(java.lang.Object target)
          Adds a RowSetListener.
 Row createAndInitRow(AttributeList nvp)
          Creates a new Row object, but does not insert it into the row set.
 Key createKey(AttributeList nvp)
          Given a list of name-value pairs, creates a Key object.
 Row createRow()
          Creates a new Row object, but does not insert it into the row set.
 ViewCriteriaRow createViewCriteriaRow()
          Creates a new ViewCriteriaRow for this ViewCriteria.
 java.util.Enumeration enumerateRowsInRange()
          Gets an Enumeration interface for the row set.
 Row[] findByEntity(int eRowHandle, int maxNumOfRows)
          Finds and returns View rows that use the entity row, identified by the entity row handle, eRowHandle.
 Row[] findByKey(Key key, int maxNumOfRows)
          Finds and returns View rows that match the specified key.
 Row first()
          Designates the first row of the row set as the current row.
 Row[] getAllRowsInRange()
          Extracts the rows in the range.
 int getAttributeIndexOf(java.lang.String name)
          Finds the attribute associated with an attribute name.
 Row getCurrentRow()
          Accesses the current row.
 int getCurrentRowIndex()
          Gets the absolute index (not range index) of the current row.
 int getCurrentRowSlot()
          Gets the slot status of the current row.
 int getFetchedRowCount()
          Counts the number of rows currently fetched in the row set.
 int getIterMode()
          Gets the iteration mode.
protected  com.sun.java.util.collections.ArrayList getListenersList()
           
 int getRangeIndexOf(Row row)
          Get the index of the given row relative to the beginning of the range.
 int getRangeSize()
          Gets the range size.
 int getRangeStart()
          Gets the absolute index of the first row in the row set range.
 Row getRow(Key key)
          Accesses a row through a unique key.
 Row getRowAtRangeIndex(int index)
          Accesses a row through its index in the row set.
 int getRowCount()
          Counts the total number of rows in the row set.
 int getRowCountInRange()
          Gets the size of the row set range.
 ViewObject getViewObject()
          Gets the View Object that owns the view criteria.
 boolean hasNext()
          Tests for the existence of a row after the current row.
 boolean hasPrevious()
          Tests for the existence of a row before the current row.
 void insertRow(Row row)
          Adds a row to the row set, before the current row.
 void insertRowAtRangeIndex(int index, Row row)
          Adds a row to the row set at the given index.
 boolean isCriteriaForQuery()
          Returns a flag indicating whether the View Criteria is to be included in database query or be used for in memory row filtering.
 boolean isRangeAtBottom()
          Tests if the row set range is at the end of the result set.
 boolean isRangeAtTop()
          Tests if the row set range is at the beginning of the result set.
 boolean isRowValidation()
          Gets the validation flag on this iterator.
 boolean isUseAttributeFormatHint()
           
 Row last()
          Designates the last row of the row set as the current row.
 Row next()
          Steps forward, designating the next row as the current row.
 Row previous()
          Steps backward, designating the previous row as the current row.
 void removeCurrentRow()
          Removes the current Row object from the row set.
 Row removeCurrentRowAndRetain()
          Removes the current Row object from the collection and retain it for insertion into another location.
 void removeCurrentRowFromCollection()
          Removes the current Row object from the collection.
 void removeListener(java.lang.Object target)
          Removes a RowSetListener.
 void reset()
          Clears the "current row" designation and places the iterator in the slot before the first row.
 int scrollRange(int amount)
          Moves the row set range up or down a given number of rows.
 int scrollRangeTo(Row row, int index)
          Scrolls the range to place a given row at a given row set index.
 int scrollToRangePage(int pageIndex)
          This method is a no-op and returns zero.
 void setCriteriaForQuery(boolean b)
          Sets the flag indicating whether the View Criteria is to be included in database query or be used for in memory row filtering.
 boolean setCurrentRow(Row row)
          Designates a given row as the current row.
 boolean setCurrentRowAtRangeIndex(int index)
          Designates a given index as the current row.
 void setIterMode(int mode)
          Modifies the iteration mode.
 int setRangeSize(int size)
          Modifies the size of the row set range.
 int setRangeStart(int start)
          Moves the row set range.
 void setRowValidation(boolean flag)
          Sets the validation flag on this iterator.
 void setUseAttributeFormatHint(boolean flag)
          Turn this flag off to get the 904 and earlier behavior where attribute formatters are not consulated for equality critiera.
 void trimNoDataRows()
          This method walks through ViewCriteriaRow's in this ViewCriteria and removes those rows that have no data.
 
Methods inherited from class java.util.Vector
add, add, addAll, addAll, addElement, capacity, clear, clone, contains, containsAll, copyInto, elementAt, elements, ensureCapacity, equals, firstElement, get, hashCode, indexOf, indexOf, insertElementAt, isEmpty, lastElement, lastIndexOf, lastIndexOf, remove, remove, removeAll, removeAllElements, removeElement, removeElementAt, removeRange, retainAll, set, setElementAt, setSize, size, subList, toArray, toArray, toString, trimToSize
 
Methods inherited from class java.util.AbstractList
iterator, listIterator, listIterator
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.util.List
iterator, listIterator, listIterator
 

Field Detail

listeners

protected com.sun.java.util.collections.ArrayList listeners
Constructor Detail

ViewCriteria

public ViewCriteria(ViewObject viewObject)
Creates an empty view criteria object.

Parameters:
viewObject - the owner of this ViewCriteria.

ViewCriteria

public ViewCriteria(StructureDef structureDef)
Method Detail

isCriteriaForQuery

public boolean isCriteriaForQuery()
Returns a flag indicating whether the View Criteria is to be included in database query or be used for in memory row filtering.

If true, when the View Criteria is translated into a row qualification clause, it will use the name of the database column to which the attribute is mapped. If false, the attribute name is used as is.

If the View Criteria is being used for in memory row filtering, it should be used in conjunction with RowQualifier. See ViewObjectImpl.setRowQualifier(oracle.jbo.server.RowQualifier) for details.

Returns:
the flag indicating whether the View Criteria is for database query (true) or for in memory row filtering (false).

setCriteriaForQuery

public void setCriteriaForQuery(boolean b)
Sets the flag indicating whether the View Criteria is to be included in database query or be used for in memory row filtering.

If true, when the View Criteria is translated into a row qualification clause, it will use the name of the database column to which the attribute is mapped. If false, the attribute name is used as is.

If the View Criteria is being used for in memory row filtering, it should be used in conjunction with RowQualifier. See ViewObjectImpl.setRowQualifier(oracle.jbo.server.RowQualifier) for details.

Parameters:
b - the flag indicating whether the View Criteria is for database query (true) or for in memory row filtering (false).

getViewObject

public ViewObject getViewObject()
Gets the View Object that owns the view criteria.

Returns:
the ViewObject that owns this ViewCriteria.

getAttributeIndexOf

public int getAttributeIndexOf(java.lang.String name)
Finds the attribute associated with an attribute name.

Parameters:
name - the attribute name.
Returns:
an attribute index (0 based).

createViewCriteriaRow

public ViewCriteriaRow createViewCriteriaRow()
Creates a new ViewCriteriaRow for this ViewCriteria. A ViewCriteriaRow object is an array for WHERE clause criteria. After setting up the ViewCriteriaRow, call add(viewCriteriaRow) or addElement(viewCriteriaRow) to add it to this ViewCriteria.

Returns:
a ViewCriteriaRow, an array for WHERE clause criteria.
See Also:
ViewCriteriaRow

next

public Row next()
Steps forward, designating the next row as the current row.

Specified by:
next in interface RowIterator
Returns:
a Row object, or null if there is no next row.

previous

public Row previous()
Steps backward, designating the previous row as the current row.

Specified by:
previous in interface RowIterator
Returns:
a Row object, or null if there is no previous row.

first

public Row first()
Designates the first row of the row set as the current row.

Specified by:
first in interface RowIterator
Returns:
a Row object, or null if the row set is empty.

last

public Row last()
Designates the last row of the row set as the current row.

Specified by:
last in interface RowIterator
Returns:
a Row object, or null if the row set is empty.

reset

public void reset()
Clears the "current row" designation and places the iterator in the slot before the first row.

A subsequent invocation of next() will cause the first row to become the current row.

Specified by:
reset in interface RowIterator

hasNext

public boolean hasNext()
Tests for the existence of a row after the current row.

Specified by:
hasNext in interface RowIterator
Returns:
true if there is next row.

hasPrevious

public boolean hasPrevious()
Tests for the existence of a row before the current row.

Specified by:
hasPrevious in interface RowIterator
Returns:
true if there is previous row.

getFetchedRowCount

public int getFetchedRowCount()
Counts the number of rows currently fetched in the row set.

Specified by:
getFetchedRowCount in interface RowIterator
Returns:
the number of fetched rows.

getRowCount

public int getRowCount()
Counts the total number of rows in the row set.

Specified by:
getRowCount in interface RowIterator
Returns:
the number of rows.

getRowAtRangeIndex

public Row getRowAtRangeIndex(int index)
Accesses a row through its index in the row set.

Specified by:
getRowAtRangeIndex in interface RowIterator
Parameters:
index - an integer in the range 0 to getRangeSize() - 1.
Returns:
a Row object, or null if the index is out of range.

getCurrentRow

public Row getCurrentRow()
Accesses the current row.

Specified by:
getCurrentRow in interface RowIterator
Returns:
the Row object designated as the current row.

getCurrentRowIndex

public int getCurrentRowIndex()
Gets the absolute index (not range index) of the current row.

Specified by:
getCurrentRowIndex in interface RowIterator
Returns:
a row index (0 based).

getCurrentRowSlot

public int getCurrentRowSlot()
Gets the slot status of the current row.

Specified by:
getCurrentRowSlot in interface RowIterator
Returns:
one of the class constants prefixed by SLOT_. See SLOT_ constants in RowIterator.

setCurrentRow

public boolean setCurrentRow(Row row)
Designates a given row as the current row.

Specified by:
setCurrentRow in interface RowIterator
Parameters:
row - the new current row.
Returns:
true if the operation succeeded.

createAndInitRow

public Row createAndInitRow(AttributeList nvp)
Creates a new Row object, but does not insert it into the row set. For ViewCriteria, this method works just like createRow().

Specified by:
createAndInitRow in interface RowIterator
Parameters:
nvp - not used.
Returns:
a new Row object.

createRow

public Row createRow()
Creates a new Row object, but does not insert it into the row set.

Specified by:
createRow in interface RowIterator
Returns:
a new Row object.

insertRow

public void insertRow(Row row)
Adds a row to the row set, before the current row. This method sets the current row to the row just inserted. With respect to eventing, this method call will generate two events (of oracle.jbo.RowSetListener): rowInserted, followed by navigated.

Specified by:
insertRow in interface RowIterator
Parameters:
row - the Row object to be added.

removeCurrentRow

public void removeCurrentRow()
Removes the current Row object from the row set.

Specified by:
removeCurrentRow in interface RowIterator

removeCurrentRowFromCollection

public void removeCurrentRowFromCollection()
Description copied from interface: RowIterator
Removes the current Row object from the collection.

It does not cause the row to be deleted from the database table. It just removes the row from the row collection. However, once the row is removed, it cannot be used any more. If you want to remove the current row from collection and insert it elsewhere, call #removeAndRetain(), change currency to the desired location, and then call RowIterator.insertRow(oracle.jbo.Row) with that row.

Specified by:
removeCurrentRowFromCollection in interface RowIterator

removeCurrentRowAndRetain

public Row removeCurrentRowAndRetain()
Description copied from interface: RowIterator
Removes the current Row object from the collection and retain it for insertion into another location.

It does not cause the row to be deleted from the database table. It just removes the row from the row collection.

This method differs from RowIterator.removeCurrentRowFromCollection() in that after the current row is removed from the collection, it can be inserted back into the collection at another location.

To do so, call RowIterator.removeCurrentRowAndRetain(), and get the returning row. Then, change currency to the desired location, and call RowIterator.insertRow(oracle.jbo.Row) with that row.

Specified by:
removeCurrentRowAndRetain in interface RowIterator
Returns:
the current row which was just removed from collection.

setRangeSize

public int setRangeSize(int size)
Modifies the size of the row set range.

This method is a no-op for ViewCriteria. For a ViweCriteria, the range size is always -1.

Specified by:
setRangeSize in interface RowIterator
Parameters:
size - this parameter is not used.
Returns:
-1, which means that the range contains all rows.
See Also:
RowIterator.setRangeStart(int)

getRangeSize

public int getRangeSize()
Gets the range size. For ViewCriteria, the range size is always -1 (all rows).

Specified by:
getRangeSize in interface RowIterator
Returns:
-1, which means that the range contains all rows.

getRangeStart

public int getRangeStart()
Gets the absolute index of the first row in the row set range.

The absolute index is 0-based, and is the row's index relative to the entire result set.

Specified by:
getRangeStart in interface RowIterator
Returns:
an index.

setRangeStart

public int setRangeStart(int start)
Moves the row set range.

Note that the index is 0-based. When you call setRangeStart(1), the range start will be positioned at the second table row.

Another behavior of setRangeStart (and also setRangeSize) is that it tries to position the range, so as to fill up the range as much as possible. For example, assume you have View Object vo focused on a table with four rows (A, B, C, D), and you execute the following code:

     vo.setRangeStart(4);
     vo.setRangeSize(3);
     Row[] rows = vo.getAllRowsInRange();
 

In this case, rows contains the last 3 rows (B, C, D). When you call setRangeStart(4), it will try to position you at row 4. Since the index is 0-based, it finds that there is no row. Since the default range size is 1, it will position you to the last row (row index 3).

Then, when you call getRangeSize(3), it tries to fill up the range from the bottom. This is why you get (B, C, D).

Specified by:
setRangeStart in interface RowIterator
Parameters:
start - the absolute index of the new first row in the row set range.

scrollRange

public int scrollRange(int amount)
Moves the row set range up or down a given number of rows.

Specified by:
scrollRange in interface RowIterator
Parameters:
amount - the number of rows to scroll. A negative value scrolls upward.
Returns:
the number of rows actually scrolled.

scrollToRangePage

public int scrollToRangePage(int pageIndex)
This method is a no-op and returns zero.


scrollRangeTo

public int scrollRangeTo(Row row,
                         int index)
Scrolls the range to place a given row at a given row set index.

Specified by:
scrollRangeTo in interface RowIterator
Parameters:
row - the row.
index - the row's new index.
Returns:
the actual number of rows scrolled. A negative number indicates that the scroll was scrolled upward.

setCurrentRowAtRangeIndex

public boolean setCurrentRowAtRangeIndex(int index)
Designates a given index as the current row.

Specified by:
setCurrentRowAtRangeIndex in interface RowIterator
Parameters:
index - the index of the new current row.
Returns:
true if the operation succeeded.

insertRowAtRangeIndex

public void insertRowAtRangeIndex(int index,
                                  Row row)
Adds a row to the row set at the given index. The index is relative to the range, i.e., index of 0 would mean to insert before the first row of the range. Allowed values for index is 0 to range size. If index equals range size, the row is inserted right after the last row in the range. This method call does not alter the current position of the iterator, nor does it affect the range position.

Specified by:
insertRowAtRangeIndex in interface RowIterator
Parameters:
index - the point where row is to be added.
row - the Row object to be added.

getRangeIndexOf

public int getRangeIndexOf(Row row)
Get the index of the given row relative to the beginning of the range.

Specified by:
getRangeIndexOf in interface RowIterator
Parameters:
row - a Row object. or -1 if the row is not in range.
Returns:
the range index of row (0 based).

getRowCountInRange

public int getRowCountInRange()
Gets the size of the row set range.

Specified by:
getRowCountInRange in interface RowIterator
Returns:
the number of rows in the range.

isRangeAtBottom

public boolean isRangeAtBottom()
Tests if the row set range is at the end of the result set.

Specified by:
isRangeAtBottom in interface RowIterator
Returns:
true if the last row of the range is the last row of the result set.

isRangeAtTop

public boolean isRangeAtTop()
Tests if the row set range is at the beginning of the result set.

Specified by:
isRangeAtTop in interface RowIterator
Returns:
true if the first row of the range is the first row of the result set.

enumerateRowsInRange

public java.util.Enumeration enumerateRowsInRange()
Gets an Enumeration interface for the row set.

Specified by:
enumerateRowsInRange in interface RowIterator
Returns:
an Enumeration interface.

getAllRowsInRange

public Row[] getAllRowsInRange()
Extracts the rows in the range.

Specified by:
getAllRowsInRange in interface RowIterator
Returns:
an array of Row objects. The size if the array is setViewSize().

getRow

public Row getRow(Key key)
Accesses a row through a unique key.

This operation is not supported by ViewCriteria. Calling this method will throw InvalidOperException.

Specified by:
getRow in interface RowIterator
Parameters:
key - a key.
Returns:
none.
Throws:
InvalidOperException - is thrown. ViewCriteria does not support this operation.

findByKey

public Row[] findByKey(Key key,
                       int maxNumOfRows)
Finds and returns View rows that match the specified key.

This operation is not supported by ViewCriteria. Calling this method will throw InvalidOperException.

Specified by:
findByKey in interface RowIterator
Parameters:
key - the key to match.
maxNumOfRows - the maximum size of the array to return, or -1 to return all rows.
Returns:
none.
Throws:
InvalidOperException - is thrown. ViewCriteria does not support this operation.

createKey

public Key createKey(AttributeList nvp)
Given a list of name-value pairs, creates a Key object.

This operation is not supported by ViewCriteria. Calling this method will throw InvalidOperException.

Specified by:
createKey in interface RowIterator
Parameters:
nvp - the name value pair array.
Returns:
none.
Throws:
InvalidOperException - is thrown. ViewCriteria does not support this operation.

findByEntity

public Row[] findByEntity(int eRowHandle,
                          int maxNumOfRows)
Finds and returns View rows that use the entity row, identified by the entity row handle, eRowHandle.

This operation is not supported by ViewCriteria. Calling this method will throw InvalidOperException.

Specified by:
findByEntity in interface RowIterator
Parameters:
eRowHandle - the entity row handle.
maxNumOfRows - the maximum size of the row array to return, or -1 to return all rows.
Returns:
none.
Throws:
InvalidOperException - is thrown. ViewCriteria does not support this operation.

setRowValidation

public void setRowValidation(boolean flag)
Sets the validation flag on this iterator.

This operation is not supported by ViewCriteria. Calling this method will throw InvalidOperException.

Specified by:
setRowValidation in interface RowIterator
Parameters:
flag - whether to turn row validation off or not.
Throws:
InvalidOperException - is thrown. ViewCriteria does not support this operation.

isRowValidation

public boolean isRowValidation()
Description copied from interface: RowIterator
Gets the validation flag on this iterator. By default a RowIterator validates the current row when navigating to another row. This method returns TRUE if this row-validation is turned off.

Specified by:
isRowValidation in interface RowIterator

getIterMode

public int getIterMode()
Gets the iteration mode.

As ViewCriteria always works with full range (range size -1), iteration mode is meaningless.

Specified by:
getIterMode in interface RowIterator
Returns:
the iteration mode. It is always RowIterator.ITER_MODE_LAST_PAGE_FULL.

setIterMode

public void setIterMode(int mode)
Modifies the iteration mode.

This method is a no-op for ViewCriteria. For a ViweCriteria, the range size is always -1, and thus iteration mode is meaningless.

Specified by:
setIterMode in interface RowIterator
Parameters:
mode - this parameter is not used.

getListenersList

protected com.sun.java.util.collections.ArrayList getListenersList()

addListener

public void addListener(java.lang.Object target)
Adds a RowSetListener.

Specified by:
addListener in interface NavigatableRowIterator
Parameters:
target - the subscriber to be added. It should implement RowSetListener.

removeListener

public void removeListener(java.lang.Object target)
Removes a RowSetListener.

Specified by:
removeListener in interface NavigatableRowIterator
Parameters:
target - the subscriber to be removed.

trimNoDataRows

public void trimNoDataRows()
This method walks through ViewCriteriaRow's in this ViewCriteria and removes those rows that have no data.


setUseAttributeFormatHint

public void setUseAttributeFormatHint(boolean flag)
Turn this flag off to get the 904 and earlier behavior where attribute formatters are not consulated for equality critiera.


isUseAttributeFormatHint

public boolean isUseAttributeFormatHint()

Oracle ADF Model and Business Components API Reference 10.1.2 B14022-01

 

Copyright © 1997, 2004, Oracle. All rights reserved.