Overview | Package | Class | Tree | Deprecated | Index | Help
| Oracle Application Development Framework Model and Business Components Java API Reference 10g Release 3 (10.1.3) B16005-01
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## oracle.jbo.server
Class EntityCacheOverRowSet

`java.lang.Object
oracle.jbo.server.EntityCache
oracle.jbo.server.EntityCacheOverRowSet`

All Implemented Interfaces:
  NavigatableRowIterator, Properties, RowIterator, RowSet, RowSetIterator, StructureDef, VariableManagerOwner, XMLInterface

public class EntityCacheOverRowSet
extends EntityCache
implements RowSet

Field Summary

Fields inherited from interface oracle.jbo.RowSet
`FORWARD_ONLY, RANGE_PAGING, RANGE_PAGING_AUTO_POST, SCROLLABLE`

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`

Fields inherited from interface oracle.jbo.XMLInterface
`XML_IGNORE_DEPTH_COUNT, XML_OPT_ALL_ROWS, XML_OPT_ASSOC_CONSISTENT, XML_OPT_CHANGES_ONLY, XML_OPT_LIMIT_RANGE`

Constructor Summary
`EntityCacheOverRowSet()`

Method Summary
`void` | `addListener(java.lang.Object listener)` Adds a subscriber (listener) to be notified of `RowSetListener` events generated by this row set iterator.
`void` | `addManagementListener(RowSetManagementListener listener)` Adds a subscriber (listener) to be notified of `RowSetManagementListener` events generated by this Row Set Iterator.
`boolean` | `cancelQuery()` Cancels a running query.
`void` | `closeRowSet()` Closes the row set.
`void` | `closeRowSetIterator()` Closes this row set iterator.
`Row` | `createAndInitRow(AttributeList nvp)` Creates and initializes a new Row object, but does not insert it into the Row Set.
`RowSet` | `createDetailRowSet(java.lang.String rsName, java.lang.String viewLinkDefName)` Creates a detail Row Set.
`Key` | `createKey(AttributeList nvp)` Given a list of name-value pairs, creates a Key object that matches the key structure for the ViewObject for this RowItertor.
`Row` | `createRow()` Creates a new Row object, but does not insert it into the Row Set.
`RowSetIterator` | `createRowSetIterator(java.lang.String name)` Creates an iterator for the row set.
`void` | `defineNamedWhereClauseParam(java.lang.String name, java.lang.Object defaultValue, int[] indices)` Defines a named bind variable to use with the view object's where-clause.
`VariableValueManager` | `ensureVariableManager()` Returns this object's Variable Value Manager.
`java.util.Enumeration` | `enumerateRowsInRange()` Gets an `Enumeration` of all rows in the Row Set.
`void` | `executeQuery()` Executes the query.
`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.
`RowIterator` | `findByViewCriteria(ViewCriteria criteria, int maxNumOfRows, int queryMode)` Finds and returns View rows that match the specified View Criteria.
`RowSetIterator` | `findRowSetIterator(java.lang.String rsiName)` Gets the named row set iterator that was created at runtime for this row set.
`Row` | `first()` Gets the first row in the iterator.
`byte` | `getAccessMode()`
`Row[]` | `getAllRowsInRange()` Extracts the rows in the range.
`ApplicationModule` | `getApplicationModule()` Gets the row set's application module that contains this row set.
`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.
`RowSet[]` | `getDetailRowSets()` Gets an array of detail Row Sets for which this Iterator is the master.
`protected EntityDefOverRowSet` | `getEntityDefOverRowSet()`
`int` | `getEstimatedRangePageCount()` Returns getEstimatedRowCount()/rangePageSize, if rangeSize > 0.
`long` | `getEstimatedRowCount()` Counts the number of rows in the collection defined by the view object's query.
`int` | `getFetchedRowCount()` Counts the number of rows fetched from database into the Row Set collection up to this point.
`Row[]` | `getFilteredRows(java.lang.String attrName, java.lang.Object attrValue)` Returns all rows in this collection whose attribute value matches the value being passed in `attrValue`.
`Row[]` | `getFilteredRowsInRange(java.lang.String attrName, java.lang.Object attrValue)` Returns all rows in this range whose attribute value matches the value being passed in `attrValue`.
`int` | `getIterMode()` Gets the current iteration mode.
`RowSetIterator[]` | `getMasterRowSetIterators()` Return all controlling masters of this row set.
`java.lang.Class` | `getMessageBundleClass()`
`Row[]` | `getNextRangeSet()` Gets the next set of rows in the range.
`Row[]` | `getPreviousRangeSet()` Gets the previous set of rows in the range.
`java.util.Hashtable` | `getProperties()` Gets the table of properties.
`java.lang.Object` | `getProperty(java.lang.String hintName)` Retrieves the specified property, if it exists.
`int` | `getRangeIndexOf(Row row)` Get the index of the given row relative to the beginning of the range.
`int` | `getRangeSize()` Gets the size of the Row Set Iterator range.
`int` | `getRangeStart()` Gets the absolute row index of the first row in the Row Set Iterator range.
`Row` | `getRow(Key key)` Locates and returns a row by its unique key.
`Row` | `getRowAtRangeIndex(int index)` Accesses a row through its range index.
`int` | `getRowCount()` Counts the total number of rows in the Row Set.
`int` | `getRowCountInRange()` Gets the size of the Row Set Iterator range.
`RowSet` | `getRowSet()` Gets the Row Set that this Iterator belongs to.
`RowSetIterator[]` | `getRowSetIterators()` Gets all row set iterators that belong to this row set.
`java.lang.Object` | `getSyncLock()` Gets the locking object for this Row Set Iterator.
`VariableValueManager` | `getVariableManager()` Returns this object's current Variable Value Manager.
`ViewObject` | `getViewObject()` Gets the view object that owns this row set.
`java.lang.Object[]` | `getWhereClauseParams()` Gets the bind variable values to be used with the view object's where-clause.
`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.
`boolean` | `hasVariables()` Returns a flag indicating whether this object has Variables or not.
`void` | `insertRow(Row row)` Inserts a row to the Row Set, before the current row.
`void` | `insertRowAtRangeIndex(int index, Row row)` Inserts a row to the Row Set at the given range index.
`boolean` | `isAssociationConsistent()` Returns the flag indicating whether association-consistent mode is on or not.
`boolean` | `isExecuted()` Returns true if the current ViewObject's query has been executed for this row set.
`boolean` | `isFetchComplete()` Tests if the query result set has been fetched to the end.
`boolean` | `isForwardOnly()` Tests if the row set is constrained to sequential access.
`boolean` | `isMaxFetchSizeExceeded()` Tests if the query result has been fetched to the end and the end was reached due to hitting the maxFetchSize limit
`boolean` | `isNameGenerated()` Tests if the Iterator's name was generated by the system.
`boolean` | `isRangeAtBottom()` Tests if the Row Set Iterator range is at the end of the result set.
`boolean` | `isRangeAtTop()` Tests if the Row Set Iterator range is at the beginning of the result set.
`boolean` | `isRowValidation()` Gets the validation flag on this iterator.
`protected com.sun.java.util.collections.Iterator` | `iterator()` Return an Iterator for the EntityCache.
`Row` | `last()` Gets the last row in the iterator.
`Row` | `next()` Gets the next row in the iterator.
`Row` | `previous()` Gets the previous row in the iterator.
`void` | `readXML(Element elem, int depthCount)`
`void` | `readXML(Element elem, int depthCount, XSLStylesheet xslt)`
`java.lang.Object` | `refreshProperty(java.lang.String hintName)` Retrieves the specified property, if it exists.
`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 listener)` Removes a subscriber (listener) for `RowSetListener` events generated by this row set iterator.
`void` | `removeManagementListener(RowSetManagementListener listener)` Removes a subscriber (listener) for `RowSetManagementListener` events generated by this row set iterator.
`boolean` | `removeMasterRowSetIterator(RowSetIterator masterRSI)` Removes a master row set iterator.
`void` | `removeNamedWhereClauseParam(java.lang.String name)` Removes a named where-clause parameter.
`void` | `reset()` Moves the currency to the slot before the first row.
`int` | `scrollRange(int amount)` Moves the Row Set Iterator 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 range index.
`int` | `scrollToRangePage(int pageIndex)` Moves the row set range start to the given page index where every page consists of RangeSize number of rows.
`void` | `setAccessMode(byte mode)` Constrains the row access based on the following settings:
`void` | `setAssociationConsistent(boolean consistent)` Sets the association-consistent flag for this row set.
`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` | `setForwardOnly(boolean forwardOnly)` Constrains the row set to sequential access.
`void` | `setIterMode(int mode)` Sets the iteration mode for this Row Iterator.
`boolean` | `setMasterRowSetIterator(RowSetIterator masterRSI)` Sets the master iterator.
`void` | `setNamedWhereClauseParam(java.lang.String name, java.lang.Object value)` Sets the value of a named where-clause parameter for this row set.
`int` | `setRangeSize(int size)` Modifies the size of the Row Set Iterator range.
`int` | `setRangeStart(int start)` Moves the Row Set Iterator range.
`void` | `setRowValidation(boolean flag)` Sets the validation flag on this iterator.
`void` | `setWhereClauseParam(int index, java.lang.Object value)` Specifies a single bind variable value to use with the view object's where-clause.
`void` | `setWhereClauseParams(java.lang.Object[] values)` Specifies the bind variable values to use with the view object's where-clause.
`void` | `skipNamedWhereClauseParam(java.lang.String name)` Skips the named where-clause parameter for this row set.
`Node` | `writeXML(int depthCount, long options)` Renders data in a canonical XML-format.
`Node` | `writeXML(int depthCount, long options, XSLStylesheet xslt)`
`Node` | `writeXML(long options, com.sun.java.util.collections.HashMap voAttrMap)` Renders data in a canonical XML-format.
`Node` | `writeXML(long options, com.sun.java.util.collections.HashMap voAttrMap, XSLStylesheet xslt)`

Methods inherited from class oracle.jbo.server.EntityCache
`add, addDynamicAttribute, addEntityListener, addRowByDeletedPK, clearCache, closeStatements, createPreparedStatement, deliverEntityEvent, findAttributeDef, get, getAttributeCount, getAttributeDef, getAttributeDefs, getAttributeIndexOf, getCurrentDbTime, getDBTransactionImpl, getDefFullName, getDefName, getEntityDef, getFullName, getName, getPreparedSelectStatement, hasRows, init, isAssociationAccessorRetained, isBatchable, lookupAttributeDef, pin, removeEntityListener, removeRow, removeRowByDeletedPK, removeRowByOldPK, replace, setAssociationAccessorRetained, unpin`

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

Methods inherited from interface oracle.jbo.RowSet
`getName`

Constructor Detail

### EntityCacheOverRowSet

    public EntityCacheOverRowSet()

Method Detail

### iterator

    protected com.sun.java.util.collections.Iterator iterator()

  Description copied from class: `EntityCache`
  Return an Iterator for the EntityCache. The naming of this method is consistent with the JDK 1.2 Collection classes. The behaviour of the Iterator isn't defined if the underlying values in the cache change as it is executing.
  Overrides:
    `iterator` in class `EntityCache`
  Returns:
    an Interator over the cache values.

### getEntityDefOverRowSet

    protected EntityDefOverRowSet getEntityDefOverRowSet()

### setMasterRowSetIterator

    public boolean setMasterRowSetIterator(RowSetIterator masterRSI)

  Description copied from interface: `RowSet`
  Sets the master iterator.
  Specified by:
    `setMasterRowSetIterator` in interface `RowSet`
  Parameters:
    `masterRSI` - the new master row set iterator for this row set.
  Returns:
    `true` if the operation succeeded.

### getViewObject

    public ViewObject getViewObject()

  Description copied from interface: `RowSet`
  Gets the view object that owns this row set.

  If this row set is the result of calling a view link accessor, the returned view object is an internal view object. ``ViewObject.isInternal()`` indicates whether the view object is internal or not. Even if a view link is defined between the master and detail view object, and even if an instance of them are included in the application module's data model, calling the view link by default uses a separate view object instance from the one in the AM's data model. To access the view link accessor's ViewObject, use the following code snippet (assuming that the detail side is called "MyDetail"):

          RowSet detailRS = (RowSet) masterViewRow.getMyDetail();
          ViewObject detailVO = detailRS.getViewObject();

  Specified by:
    `getViewObject` in interface `RowSet`
  Returns:
    the parent view object.

### setWhereClauseParams

    public void setWhereClauseParams(java.lang.Object[] values)

  Description copied from interface: `RowSet`
  Specifies the bind variable values to use with the view object's where-clause.

  Setting the where-clause bind values through this method does not automatically execute the query. You must call ``RowSet.executeQuery()`` to apply the new bind values.

  Specified by:
    `setWhereClauseParams` in interface `RowSet`
  Parameters:
    `values` - an array of bind values. If the view object is using the JDBC style bindings (`"?"` for bind variable), `values[n]` is bound to the bind variable that appears in the n-th order (0 based indexing). If the view object is using the Oracle style bindings (`":1", ":2",` etc. for bind variable), `values[n]` is bound to the bind variable `:(n+1)`, i.e., `values[0]` is bound to `:1`, `values[1]` is bound to `:2`, etc.

### setWhereClauseParam

    public void setWhereClauseParam(int index,
                                    java.lang.Object value)

  Description copied from interface: `RowSet`
  Specifies a single bind variable value to use with the view object's where-clause.

  Setting the where-clause bind values through this method does not automatically execute the query. You must call ``RowSet.executeQuery()`` to apply the new bind values.

  Specified by:
    `setWhereClauseParam` in interface `RowSet`
  Parameters:
    `index` - the index identifying the bind variable. If the view object is using the JDBC style bindings (`"?"` for bind variable), `value` is bound to the bind variable that appears in the `index-th` order (0 based indexing). If the view object is using the Oracle style bindings (`":1", ":2",` etc. for bind variable), `value` is bound to the bind variable `:(index+1)`. If `index` is 0, `value` is bound to `:1`. If `index` is 1, `value` is bound to `:2`.
    `value` - the bind variable value.

### defineNamedWhereClauseParam

    public void defineNamedWhereClauseParam(java.lang.String name,
                                            java.lang.Object defaultValue,
                                            int[] indices)

  Description copied from interface: `RowSet`
  Defines a named bind variable to use with the view object's where-clause.

  This named where-clause parameter will be defined as a variable on the view object. That is, if a named where-clause parameter is defined through one row set, all other row sets that belongs to the same parent view object will "see" that parameter.

  Through the `defaultValue`, one can specify the default value for this where-clause parameter. If no default value is supplied, `null` will be used as the parameter value.

  The `indices` parameter specifies where-clause parameter indices into which this named parameter will be bound. The same value can be bound into multiple indices. For example, if `{ 1, 2 }` is specified for `indices`, the value will be bound for where-clause parameter indices of 1 and 2. I.e., this parameter will produce `setWhereClauseParam(1, value)` and `setWhereClauseParam(2, value)`.

  This method can be invoked to redefine an existing named where-clause paramter (to change the default value and the indices) only if the named parameter is found on the view object. If the named parameter/variable is found on one of the parent objects, a new where-clause parameter definition is still added to the view object.

  When redefining, a check is made to ensure that the existing variable has no kind specification (`null`) or is of the `"where"` kind (which means that the existing variable is a where-clause parameter). If not, an `InvalidParamException` is thrown.

  Defining a named where-clause parameter does not automatically execute the query. You must call ``RowSet.executeQuery()`` to apply the new bind value.

  Specified by:
    `defineNamedWhereClauseParam` in interface `RowSet`
  Parameters:
    `name` - the name of the where-clause parameter.
    `defaultValue` - specifies the default value for this where-clause parameter. This default value can be overridden through a call to `setNamedWhereClauseParam()`.
    `indices` - where-clause indices into which this parameter value should be bound. See above.

### removeNamedWhereClauseParam

    public void removeNamedWhereClauseParam(java.lang.String name)

  Description copied from interface: `RowSet`
  Removes a named where-clause parameter.

  This method removes previously defined named where-clause parameter. A check is made to ensure that the variable being removed is a where-clause parameter (variable kind = `"where"`). If not, an `InvalidParamException` is thrown.

  If the named where-clause parameter is found but it does not belong to the view object that owns this row set, an `InvalidOperException` is thrown. This means one is disallowed from removing a named where-clause parameter that belongs to the View definition, for example.

  Removing a named where-clause parameter does not automatically execute the query. You must call ``RowSet.executeQuery()`` for the removal to take effect.

  Specified by:
    `removeNamedWhereClauseParam` in interface `RowSet`
  Parameters:
    `name` - the name of the where-clause parameter to remove.

### setNamedWhereClauseParam

    public void setNamedWhereClauseParam(java.lang.String name,
                                         java.lang.Object value)

  Description copied from interface: `RowSet`
  Sets the value of a named where-clause parameter for this row set.

  If the view object owns multiple row sets, each row set may have its own (different) named where-clause parameter value.

  Setting a named where-clause parameter does not automatically execute the query. You must call ``RowSet.executeQuery()`` to apply the new bind value.

  Specified by:
    `setNamedWhereClauseParam` in interface `RowSet`
  Parameters:
    `name` - the name of the where-clause parameter.
    `value` - the where-clause parameter value for this row set.

### skipNamedWhereClauseParam

    public void skipNamedWhereClauseParam(java.lang.String name)

  Description copied from interface: `RowSet`
  Skips the named where-clause parameter for this row set. This method does not remove the named where-clause parameter. However, it "masks out" the named where-clause parameter, so that the parameter is skipped when the query is executed.

  Skipping a named where-clause parameter does not automatically execute the query. You must call ``RowSet.executeQuery()`` for the skip to take effect.

  Specified by:
    `skipNamedWhereClauseParam` in interface `RowSet`
  Parameters:
    `name` - the name of the where-clause parameter.

### getWhereClauseParams

    public java.lang.Object[] getWhereClauseParams()

  Description copied from interface: `RowSet`
  Gets the bind variable values to be used with the view object's where-clause.
  Specified by:
    `getWhereClauseParams` in interface `RowSet`
  Returns:
    an array of bind-variable values.

### executeQuery

    public void executeQuery()

  Description copied from interface: `RowSet`
  Executes the query.
  Specified by:
    `executeQuery` in interface `RowSet`

### cancelQuery

    public boolean cancelQuery()

  Description copied from interface: `RowSet`
  Cancels a running query.
  Specified by:
    `cancelQuery` in interface `RowSet`
  Returns:
    a flag indicating whether the request to cancel was honored or not. It will return `false` if the JDBC statement is not executing a query.

### isExecuted

    public boolean isExecuted()

  Description copied from interface: `RowSet`
  Returns true if the current ViewObject's query has been executed for this row set.
  Specified by:
    `isExecuted` in interface `RowSet`
  Returns:
    `true` if query has been executed.

### createRowSetIterator

    public RowSetIterator createRowSetIterator(java.lang.String name)

  Description copied from interface: `RowSet`
  Creates an iterator for the row set.
  Specified by:
    `createRowSetIterator` in interface `RowSet`
  Parameters:
    `name` - the name to be given to the iterator.
  Returns:
    an iterator for `this`.

### getRowSetIterators

    public RowSetIterator[] getRowSetIterators()

  Description copied from interface: `RowSet`
  Gets all row set iterators that belong to this row set.
  Specified by:
    `getRowSetIterators` in interface `RowSet`
  Returns:
    the array of row set iterators.

### findRowSetIterator

    public RowSetIterator findRowSetIterator(java.lang.String rsiName)

  Description copied from interface: `RowSet`
  Gets the named row set iterator that was created at runtime for this row set.
  Specified by:
    `findRowSetIterator` in interface `RowSet`
  Parameters:
    `rsiName` - a row set iterator name. If `null`, it returns the the row set.
  Returns:
    the row set iterator. `null` if the named row set iterator is not not found.

### removeMasterRowSetIterator

    public boolean removeMasterRowSetIterator(RowSetIterator masterRSI)

  Description copied from interface: `RowSet`
  Removes a master row set iterator.
  Specified by:
    `removeMasterRowSetIterator` in interface `RowSet`
  Parameters:
    `masterRSI` - the iterator to be removed.
  Returns:
    `true` if `masterRS` was found, `false` otherwise.

### getMasterRowSetIterators

    public RowSetIterator[] getMasterRowSetIterators()

  Description copied from interface: `RowSet`
  Return all controlling masters of this row set.
  Specified by:
    `getMasterRowSetIterators` in interface `RowSet`
  Returns:
    An array of master iterators.

### getApplicationModule

    public ApplicationModule getApplicationModule()

  Description copied from interface: `RowSet`
  Gets the row set's application module that contains this row set.

  Strictly speaking, a row set belongs to a view object and the view object to an application module. This method returns the application module that cotains the view object, which contains this row set.

  If this row set is the result of calling a View Link accessor, this row set belongs to an internal view object (see ``ViewObject.isInternal()``). Such an internal view object belongs to the root application module. Put differently, if you call this method on a row set which is the result of calling a View Link accessor, it will return the root application module.

  Specified by:
    `getApplicationModule` in interface `RowSet`
  Returns:
    the `ApplicationModule` to which this row set belongs.

### getEstimatedRowCount

    public long getEstimatedRowCount()

  Description copied from interface: `RowSet`
  Counts the number of rows in the collection defined by the view object's query.

  This method uses a "SELECT COUNT(1) FROM (<query-statement>)" query to obtained the initial count. After that, changes to row count (such as insertion and deletion of rows) is kept up to date.

  However, since the row counting query and the query to retrieve actual rows are issued at two different times, it is possible for the accurate count to change between these two points. This is why this method is named `getEstimatedRowCount()`.

  Specified by:
    `getEstimatedRowCount` in interface `RowSet`
  Returns:
    an estimated number of rows.

### isForwardOnly

    public boolean isForwardOnly()

  Description copied from interface: `RowSet`
  Tests if the row set is constrained to sequential access.
  Specified by:
    `isForwardOnly` in interface `RowSet`
  Returns:
    `true` if the row set is restricted to forward-only processing.
  See Also:
    `RowSet.setForwardOnly(boolean)`

### setForwardOnly

    public void setForwardOnly(boolean forwardOnly)

  Description copied from interface: `RowSet`
  Constrains the row set to sequential access.

  When set to `true`, a row preceeding the current row cannot be designated as the new current row. This restriction allows performance to be optimized.

  Specified by:
    `setForwardOnly` in interface `RowSet`
  Parameters:
    `forwardOnly` - `true` restricts the row set to forward-only processing, `false` otherwise.

### getAccessMode

    public byte getAccessMode()

  Specified by:
    `getAccessMode` in interface `RowSet`
  Returns:
    Returns the current access mode for this row set.
  See Also:
    `RowSet.setAccessMode(byte)`

### setAccessMode

    public void setAccessMode(byte mode)

  Description copied from interface: `RowSet`
  Constrains the row access based on the following settings:

  Switching access modes for a rowset will not take effect until the next explicit call to executeQuery. Switching accessmode back to SCROLLABLE from any other mode is not allowed.

  Specified by:
    `setAccessMode` in interface `RowSet`
  Parameters:
    `mode` - One of the four enumerated values ``RowSet.SCROLLABLE``, ``RowSet.FORWARD_ONLY``, ``RowSet.RANGE_PAGING``, ``RowSet.RANGE_PAGING_AUTO_POST``.

### setAssociationConsistent

    public void setAssociationConsistent(boolean consistent)

  Description copied from interface: `RowSet`
  Sets the association-consistent flag for this row set.

  Association-consistent mode allows the user to see new rows created/inserted through another view object. Note that this mode is effective only for view objects that are entity based. If the view object has no entity base, this mode has no effect.

  Suppose we have an entity named E. Suppose two view objects, V1 and V2 are based on E. (V1 and V2 do not have to come from the same view definition.) Suppose the user creates a new row through V1. This creates an instance of E as well. The new entity row is registered only when its primary key is attribute set. At this time, an event is sent out to all view objects based on E, i.e., V1 and V2.

  When V2 receives this event, it enumerates through all its collections (essentially its row sets--strictly speaking its query collections) looking for those whose `isAssociationConsistent()` value is true. For each row set whose flag value is true (say R2), it checks to see if it has any view row mapped to the new entity row. If not, it create a new view row and maps it to the new entity row. A `rowInserted` event fires.

  Thus, from the user's view point, R2 is "seeing" the new row, although the row has not yet been posted to database. Hence, setting this flag to `true` enables the user to see new rows before the row is posted/queried when the view object is entity based.

  If flag is false or if the view object is not entity based, the user needs to post the new row through ``Transaction.postChanges()`` and requery the row set through ``RowSet.executeQuery()`` to see the new row.

  The default value for this flag can be globally controlled through the `jbo.viewlink.consistent` property. Its value can be `true`, `false`, or `DEFAULT`. If the property is not specified, the default value is `DEFAULT`. A similar property `jbo.assoc.consistent` controls whether the new-row-appearing behavior should be supported for row sets returned from entity association accessor calls. For `jbo.assoc.consistent`, supported values are `true` or `false`.

  If the property value is set to `true`, all row sets will have `true` for its initial `isAssociationConsistent()` value. If the property value is set to `false`, all row sets will have `false` for its initial value. If the property value is set to `DEFAULT` (which is the default), the view object will use the following logic to compute its initial `isAssociationConsistent()` value: if the view object has multiple entity bases that are updateable, then the initial value is `false`. If the view object has a where-clause, then the initial value is `false`. Otherwise, it is true.

  Once this method is called to set the flag value manually, neither the property setting nor the view object's initial flag value has an effect.

  Specified by:
    `setAssociationConsistent` in interface `RowSet`
  Parameters:
    `consistent` - indicates whether association-consistency should be on or not.

### isAssociationConsistent

    public boolean isAssociationConsistent()

  Description copied from interface: `RowSet`
  Returns the flag indicating whether association-consistent mode is on or not.
  Specified by:
    `isAssociationConsistent` in interface `RowSet`
  Returns:
    `true` if un-posted new rows are to appear, `false` otherwise. This flag has no effect if the view object is not entity based.
  See Also:
    `RowSet.setAssociationConsistent(boolean)`

### closeRowSet

    public void closeRowSet()

  Description copied from interface: `RowSet`
  Closes the row set. It closes all row set iterators that belong to this row set. If this row set is a detail row set in a master-detail relationship, `closeRowSet` removes this row set from the master row set iterator.
  Specified by:
    `closeRowSet` in interface `RowSet`

### isFetchComplete

    public boolean isFetchComplete()

  Description copied from interface: `RowSet`
  Tests if the query result set has been fetched to the end.
  Specified by:
    `isFetchComplete` in interface `RowSet`
  Returns:
    `true` if the result set has been fetched to the end.

### isMaxFetchSizeExceeded

    public boolean isMaxFetchSizeExceeded()

  Description copied from interface: `RowSet`
  Tests if the query result has been fetched to the end and the end was reached due to hitting the maxFetchSize limit
  Specified by:
    `isMaxFetchSizeExceeded` in interface `RowSet`
  Returns:
    `true` if the result set has been fetched to the maxFetchSize limit and there are still more rows in the database.

### isNameGenerated

    public boolean isNameGenerated()

  Description copied from interface: `RowSetIterator`
  Tests if the Iterator's name was generated by the system.
  Specified by:
    `isNameGenerated` in interface `RowSetIterator`
  Returns:
    `true` if the name was generated by the system. `false` if the name was given by the user and not generated by the system.

### getNextRangeSet

    public Row[] getNextRangeSet()

  Description copied from interface: `RowSetIterator`
  Gets the next set of rows in the range. This method is good for processing rows in a range-ful fashion. Suppose the Row Set has 20 rows and the Iterator range size is 10. Suppose further that the Iterator is showing rows 0 through 9 (0-based indexing). Calling `getNextRangeSet()` will return rows 10 through 19.

  If the next range set does not have enough rows to fill up the range, `getNextRangeSet()` returns a partially filled range. That is, this method operates as if the iteration mode is ``RowIterator.ITER_MODE_LAST_PAGE_PARTIAL``.

  If there is no more rows, this method returns an empty array (an array of length 0).

  While obtaining the next range set, the range will be scrolled. This causes a ``ScrollEvent`` to be sent to ``RowSetListener.rangeScrolled(oracle.jbo.ScrollEvent)``. To pick up such an event, the listener object must implement the ``RowSetListener`` interface. Further, this listener must be registered through a call to ``NavigatableRowIterator.addListener(Object)`` (the listener object passed in as the parameter to `addListener`).

  After the next range set is obtained, the method sets the first Row of the range as the current row. This may fire a ``NavigationEvent`` and sends it to ``RowSetListener.navigated(oracle.jbo.NavigationEvent)``.

  Specified by:
    `getNextRangeSet` in interface `RowSetIterator`
  Returns:
    an array of Rows in the next range set. An array of length 0 if there are no more rows.

### getPreviousRangeSet

    public Row[] getPreviousRangeSet()

  Description copied from interface: `RowSetIterator`
  Gets the previous set of rows in the range. This method is good for processing rows in a range-ful fashion. Suppose the Row Set has 20 rows and the Iterator range size is 10. Suppose further that the Iterator is showing rows 10 through 19 (0-based indexing). Calling `getPreviousRangeSet()` will return rows 0 through 9.

  If there is no more rows, this method returns an empty array (an array of length 0).

  While obtaining the previous range set, the range will be scrolled. This causes a ``ScrollEvent`` to be sent to ``RowSetListener.rangeScrolled(oracle.jbo.ScrollEvent)``. To pick up such an event, the listener object must implement the ``RowSetListener`` interface. Further, this listener must be registered through a call to ``NavigatableRowIterator.addListener(Object)`` (the listener object passed in as the parameter to `addListener`).

  After the previous range set is obtained, the method sets the first Row of the range as the current row. This may fire a ``NavigationEvent`` and sends it to ``RowSetListener.navigated(oracle.jbo.NavigationEvent)``.

  Specified by:
    `getPreviousRangeSet` in interface `RowSetIterator`
  Returns:
    an array of Rows in the previous range set. An array of length 0 if there are no more rows.

### getRowSet

    public RowSet getRowSet()

  Description copied from interface: `RowSetIterator`
  Gets the Row Set that this Iterator belongs to.
  Specified by:
    `getRowSet` in interface `RowSetIterator`
  Returns:
    the owning Row Set.

### getEstimatedRangePageCount

    public int getEstimatedRangePageCount()

  Description copied from interface: `RowSetIterator`
  Returns getEstimatedRowCount()/rangePageSize, if rangeSize > 0. For rangeSize <= 0, returns 1.

  This number may fluxuate when the View Object is syncronized with its Entity Object.

  Specified by:
    `getEstimatedRangePageCount` in interface `RowSetIterator`
  Returns:
    the number of range-pages that this RowSet collection has.

### scrollToRangePage

    public int scrollToRangePage(int pageIndex)

  Description copied from interface: `RowSetIterator`
  Moves the row set range start to the given page index where every page consists of RangeSize number of rows. PageIndex should start at page number 1. This method calculates the rowIndex that should start at that page and then scrolls the iterator to start at that row by using the following calculation:

  (rangeSize * (pageSize-1)) - getRangeStart();

  Specified by:
    `scrollToRangePage` in interface `RowSetIterator`
  Parameters:
    `pageIndex` - the page number to go to in the result set.
  Returns:
    the number of rows actually scrolled.

### getDetailRowSets

    public RowSet[] getDetailRowSets()

  Description copied from interface: `RowSetIterator`
  Gets an array of detail Row Sets for which this Iterator is the master.

  In a master-detail relationship in an Application Module, the master in reality is a Row Set Iterator. (Though we often speak of master View Object, in reality, it is the Iterator behind the View Object which is playing the role of the master). Whenever the currency of this master Iterator moves, the detail Row Sets are re-executed to show related Rows.

  Calling this method returns an array of Row Sets that are related to this Iterator as detail Row Sets.

  Specified by:
    `getDetailRowSets` in interface `RowSetIterator`
  Returns:
    an array of detail `RowSet`.

### createDetailRowSet

    public RowSet createDetailRowSet(java.lang.String rsName,
                                     java.lang.String viewLinkDefName)

  Description copied from interface: `RowSetIterator`
  Creates a detail Row Set. See ``RowSetIterator.getDetailRowSets()`` for explanation of detail Row Sets.

  This method creates a new detail Row Set for this Iterator.

  Specified by:
    `createDetailRowSet` in interface `RowSetIterator`
  Parameters:
    `rsName` - the name of the new detail Row Set.
    `viewLinkDefName` - the name of a View Link definition. This View Link chooses the relationship in which this Iterator is the master and the new Row Set is the detail. It must be a fully qualified name (including the package name).
  Returns:
    the new detail Row Set.

### addManagementListener

    public void addManagementListener(RowSetManagementListener listener)

  Description copied from interface: `RowSetIterator`
  Adds a subscriber (listener) to be notified of `RowSetManagementListener` events generated by this Row Set Iterator.
  Specified by:
    `addManagementListener` in interface `RowSetIterator`
  Parameters:
    `listener` - the subscriber to be added. It should implement `RowSetManagementListener`.

### removeManagementListener

    public void removeManagementListener(RowSetManagementListener listener)

  Description copied from interface: `RowSetIterator`
  Removes a subscriber (listener) for `RowSetManagementListener` events generated by this row set iterator.
  Specified by:
    `removeManagementListener` in interface `RowSetIterator`
  Parameters:
    `listener` - the subscriber to be removed.

### closeRowSetIterator

    public void closeRowSetIterator()

  Description copied from interface: `RowSetIterator`
  Closes this row set iterator. If this row set iterator is a master in a master-detail relationship, `closeRowSetIterator` closes all detail row sets.

  After that, it fires a `RowSetManagementListener.iteratorClosed()` event to its `RowSetManagementListener's`.

  Then, it deregisters this row set iterator from the owning row set, and deregisters all its listeners.

  Specified by:
    `closeRowSetIterator` in interface `RowSetIterator`

### getSyncLock

    public java.lang.Object getSyncLock()

  Description copied from interface: `RowSetIterator`
  Gets the locking object for this Row Set Iterator. Actually, this method locks the Application Module to which this Row Set Iterator belongs. See `ApplicationModule.getSyncLock()` for details.
  Specified by:
    `getSyncLock` in interface `RowSetIterator`
  Returns:
    the locking object.

### getFilteredRows

    public Row[] getFilteredRows(java.lang.String attrName,
                                 java.lang.Object attrValue)

  Description copied from interface: `RowSetIterator`
  Returns all rows in this collection whose attribute value matches the value being passed in `attrValue`.

  Note that this method does not affect the current `RowSetIterator`.

  Specified by:
    `getFilteredRows` in interface `RowSetIterator`
  Parameters:
    `attrName` - name of the attribute to be used for filtering.
    `attrValue` - attribute value for filtering.
  Returns:
    an array of rows that match.

### getFilteredRowsInRange

    public Row[] getFilteredRowsInRange(java.lang.String attrName,
                                        java.lang.Object attrValue)

  Description copied from interface: `RowSetIterator`
  Returns all rows in this range whose attribute value matches the value being passed in `attrValue`.

  This method uses `getAllRowsInRange()` to retrieve all rows and then match the rows.

  Specified by:
    `getFilteredRowsInRange` in interface `RowSetIterator`
  Parameters:
    `attrName` - name of the attribute to be used for filtering.
    `attrValue` - attribute value for filtering.
  Returns:
    an array of rows in the current range that match.

### addListener

    public void addListener(java.lang.Object listener)

  Description copied from interface: `NavigatableRowIterator`
  Adds a subscriber (listener) to be notified of `RowSetListener` events generated by this row set iterator.
  Specified by:
    `addListener` in interface `NavigatableRowIterator`
  Parameters:
    `listener` - the subscriber to be added. It should implement `RowSetListener`.

### removeListener

    public void removeListener(java.lang.Object listener)

  Description copied from interface: `NavigatableRowIterator`
  Removes a subscriber (listener) for `RowSetListener` events generated by this row set iterator.
  Specified by:
    `removeListener` in interface `NavigatableRowIterator`
  Parameters:
    `listener` - the subscriber to be removed.

### next

    public Row next()

  Description copied from interface: `RowIterator`
  Gets the next row in the iterator. If `next()` is called on an iterator whose Row Set has not yet been ``RowSet.executeQuery()``'ed, the Row Set's query is executed. Thus, the user does not need to call `executeQuery()` himself before calling `next()`. We refer to this as implicit query execution or implicit Row Set execution.

  Before moving to the next row, `next()` validates the current row (if the iterator has a current row) through a call to ``Row.validate()``.

  If the currency is on the last row of the range and `next()` is called, the range is scolled down by one row to bring the next row into the visible range. In particular, if the range size is 1, `next()` scrolls the range down by 1 row.

  When this method is called, the current row of the iterator may be outside the range. (Note that the current row does not have to be within the range.) If so, `next()` will scroll the range, so that the row that will be the current row at the conclusion of this method will be positioned in the middle of the range.

  If the iterator is just opened or reset (see ``RowIterator.reset()``), `next()` will return the first row if one exists. In this situation, `next()` is functionally equivalent to ``RowIterator.first()``.

  If the iterator is at the last row of the Row Set, `next()` push the currency into the imaginary slot after the last row. This will set the current slot status to `SLOT_BEYOND_LAST`.

  When the next row is required, a check is made to see if the row has already been brought into the collection. If not, the row is fetched from database. Note that the View Object's fetch mode affects how rows are fetched from database into the collection. See ``ViewObjectImpl.getFetchMode()`` for details.

  If successful, this method designates the next row as the current row (the currency finally moves).

  This method generates events to notify the changes to the iterator. If scrolling occurs because of conditions described above, a ``ScrollEvent`` will be sent to ``RowSetListener.rangeScrolled(oracle.jbo.ScrollEvent)``. To pick up such an event, the listener object must implement the ``RowSetListener`` interface. Further, this listener must be registered through a call to ``NavigatableRowIterator.addListener(Object)`` (the listener object passed in as the parameter to `addListener`).

  If the currency is changed, it generates a ``NavigationEvent`` and sends it to ``RowSetListener.navigated(oracle.jbo.NavigationEvent)``.

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

### previous

    public Row previous()

  Description copied from interface: `RowIterator`
  Gets the previous row in the iterator. If `previous()` is called on an iterator whose Row Set has not yet been ``RowSet.executeQuery()``'ed, the Row Set's query is executed. Thus, the user does not need to call `executeQuery()` himself before calling `previous()`. We refer to this as implicit query execution or implicit Row Set execution.

  Before moving to the previous row, `previous()` validates the current row (if the iterator has a current row) through a call to ``Row.validate()``.

  If the currency is on the first row of the range and `previous()` is called, the range is scolled up by one row to bring the previous row into the visible range. In particular, if the range size is 1, `previous()` scrolls the range up by 1 row.

  When this method is called, the current row of the iterator may be outside the range. (Note that the current row does not have to be within the range.) If so, `previous()` will scroll the range, so that the row that will be the current row at the conclusion of this method will be positioned in the middle of the range.

  If the iterator is just opened or reset (see ``RowIterator.reset()``), `previous()` will `null` as the currency is already on the imaginary slot before the first row.

  If the iterator is at the first row of the Row Set, `previous()` push the currency into the imaginary slot before the first row. This will set the current slot status to `SLOT_BEFORE_FIRST`.

  If successful, this method designates the previous row as the current row (the currency finally moves).

  This method generates events to notify the changes to the iterator. If scrolling occurs because of conditions described above, a ``ScrollEvent`` will be sent to ``RowSetListener.rangeScrolled(oracle.jbo.ScrollEvent)``. To pick up such an event, the listener object must implement the ``RowSetListener`` interface. Further, this listener must be registered through a call to ``NavigatableRowIterator.addListener(Object)`` (the listener object passed in as the parameter to `addListener`).

  If the currency is changed, it generates a ``NavigationEvent`` and sends it to ``RowSetListener.navigated(oracle.jbo.NavigationEvent)``.

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

### first

    public Row first()

  Description copied from interface: `RowIterator`
  Gets the first row in the iterator. If `first()` is called on an iterator whose Row Set has not yet been ``RowSet.executeQuery()``'ed, the Row Set's query is executed. Thus, the user does not need to call `executeQuery()` himself before calling `first()`. We refer to this as implicit query execution or implicit Row Set execution.

  This method checks to see if the currency is not on the first row. If not, it resets the currency to the imaginary slot before the first row and then calls ``RowIterator.next()``. Note that the act of resetting the currency may cause the range to scroll upward.

  If the currency is on the slot before the first row, it simply calls `next()`. In this case, `first()` is equivalent to `next()`.

  If the currency is already on the first row, nothing happens.

  If `first()` is called on an empty Row Set (a Row Set that has no row), the currency is set to the slot after the last row, and `null` is returned.

  This method generates events to notify the changes to the iterator, e.g., ``ScrollEvent`` and/or ``NavigationEvent``. See ``RowIterator.next()`` for details.

  Specified by:
    `first` in interface `RowIterator`
  Returns:
    the first ``Row`` object, or `null` if there is no first row. In that case (`null` return), the current slot status will be ``RowIterator.SLOT_BEYOND_LAST``.

### last

    public Row last()

  Description copied from interface: `RowIterator`
  Gets the last row in the iterator. If `last()` is called on an iterator whose Row Set has not yet been ``RowSet.executeQuery()``'ed, the Row Set's query is executed. Thus, the user does not need to call `executeQuery()` himself before calling `last()`. We refer to this as implicit query execution or implicit Row Set execution.

  Before moving to the last row, `last()` validates the current row (if the iterator has a current row) through a call to ``Row.validate()``.

  This method retrieves all rows from the Row Set and scrolls (if necessary) to the last row. If some of these rows have not yet been fetched from database, it fetches them. The View Object's fetch mode affects how rows are fetched from database into the collection. See ``ViewObjectImpl.getFetchMode()`` for details.

  If successful, this method designates the last row as the current row.

  If `last()` is called on an empty Row Set, the currency moves to the slot beyond the last row. The current slot status is set to ``RowIterator.SLOT_BEYOND_LAST``.

  The caller of this method should be aware that it may take a long time to complete as all rows from the Row Set are fetched.

  The number of rows in the range at the completion of this method is affected by the "iteration mode". See Iteration Modes above for details.

  This method generates events to notify the changes to the iterator. If scrolling occurs because of conditions described above, a ``ScrollEvent`` will be sent to ``RowSetListener.rangeScrolled(oracle.jbo.ScrollEvent)``. To pick up such an event, the listener object must implement the ``RowSetListener`` interface. Further, this listener must be registered through a call to ``NavigatableRowIterator.addListener(Object)`` (the listener object passed in as the parameter to `addListener`).

  If the currency is changed, it generates a ``NavigationEvent`` and sends it to ``RowSetListener.navigated(oracle.jbo.NavigationEvent)``.

  Specified by:
    `last` in interface `RowIterator`
  Returns:
    the last ``Row`` object, or `null` if there is no last row.

### reset

    public void reset()

  Description copied from interface: `RowIterator`
  Moves the currency to the slot before the first row.

  After this method, the current slot status will be ``RowIterator.SLOT_BEFORE_FIRST``. A subsequent invocation of ``RowIterator.next()`` will cause the first row to become the current row.

  It sends a ``ScrollEvent`` to ``RowSetListener.rangeScrolled(oracle.jbo.ScrollEvent)`` if the currency was not on the first row or on the slot before the first row. To pick up such an event, the listener object must implement the ``RowSetListener`` interface. Further, this listener must be registered through a call to ``NavigatableRowIterator.addListener(Object)`` (the listener object passed in as the parameter to `addListener`).

  Specified by:
    `reset` in interface `RowIterator`

### hasNext

    public boolean hasNext()

  Description copied from interface: `RowIterator`
  Tests for the existence of a row after the current row.
  Specified by:
    `hasNext` in interface `RowIterator`
  Returns:
    `true` if there is a next row. Specifically, if the Row Set is empty or if the currency is on the last row or the slot after the last row (current slot status == ``RowIterator.SLOT_BEYOND_LAST``), it returns `false`. Otherwise, `true`.

### hasPrevious

    public boolean hasPrevious()

  Description copied from interface: `RowIterator`
  Tests for the existence of a row before the current row.

  If the Row Set is forward-only, it returns `false`.

  Specified by:
    `hasPrevious` in interface `RowIterator`
  Returns:
    `true` if there is a previous row. Specifically, if the Row Set is empty or forward-only or if the currency is on the first row or the slot before the first row (current slot status == ``RowIterator.SLOT_BEFORE_FIRST``), it returns `false`. Otherwise, `true`.

### getFetchedRowCount

    public int getFetchedRowCount()

  Description copied from interface: `RowIterator`
  Counts the number of rows fetched from database into the Row Set collection up to this point.
  Specified by:
    `getFetchedRowCount` in interface `RowIterator`
  Returns:
    the number of rows fetched.

### getRowCount

    public int getRowCount()

  Description copied from interface: `RowIterator`
  Counts the total number of rows in the Row Set.

  Note that this method retrieves all rows from the database then returns the number of rows in the Row Set collection.

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

### getRow

    public Row getRow(Key key)

  Description copied from interface: `RowIterator`
  Locates and returns a row by its unique key.

  If the key being passed in has the row handle, it uses the row handle to locate the row. This is a quick operation. (A key returned from a call to ``Row.getKey()`` contains the row handle.)

  If the key does not have a row handle, or if the handle look up did not find the row in the View row cache, it performs a linear search through the Row Set collection looking for a match. Hence, this method could take quite a long time to complete.

  This method is similar to ``RowIterator.findByKey(Key, int)`` in that both methods return Row(s) that match the given key. However, the user should understand the differences. First, findByKey() performs random search. getKey() only performs random search if the key has the row handle portion and if the row with that handle is currently in the Row Set collection. Otherwise, getKey() does a linear search. Hence, findByKey() is generally faster.

  However, findByKey() may find the matching Row(s) out of sequence. When a row is not found in the View row cache, findByKey() issues a database query. Matching rows are retrieved and appended to the Row Set collection. For example, suppose the Row Set collection has 200 rows that qualify in the database. Suppose the user retrieved only 10 rows (190 not yet retrieved). Suppose, at this time, the user issues findByKey() that locates the 200-th row (the last row in database result set). That row is appended to the Row Set collection at the 11-th spot. Thus, when you use findByKey(), you may see rows out of sequence. In contrast, getRow() always retrieves rows in sequence.

  If the Row Set collection is of any non-trivial size (say over 50), we would recommend findByKey().

  findByKey() allows for partial key (only for View Objects that have multiple Entity bases). When a partial key is specified, multiple rows may return. getKey() returns one and only one row (exact match).

  Specified by:
    `getRow` in interface `RowIterator`
  Parameters:
    `key` - the key.
  Returns:
    the Row object matching the key.

### getRowAtRangeIndex

    public Row getRowAtRangeIndex(int index)

  Description copied from interface: `RowIterator`
  Accesses a row through its range index.
  Specified by:
    `getRowAtRangeIndex` in interface `RowIterator`
  Parameters:
    `index` - an index in the range: `0` to `getRangeSize() - 1`.
  Returns:
    a Row object, or `null` if the index is out of range.

### getCurrentRow

    public Row getCurrentRow()

  Description copied from interface: `RowIterator`
  Accesses the current row.
  Specified by:
    `getCurrentRow` in interface `RowIterator`
  Returns:
    the Row object designated as the current row.

### getCurrentRowIndex

    public int getCurrentRowIndex()

  Description copied from interface: `RowIterator`
  Gets the absolute index (not range index) of the current row.
  Specified by:
    `getCurrentRowIndex` in interface `RowIterator`
  Returns:
    a row index.

### getCurrentRowSlot

    public int getCurrentRowSlot()

  Description copied from interface: `RowIterator`
  Gets the slot status of the current row.
  Specified by:
    `getCurrentRowSlot` in interface `RowIterator`
  Returns:
    one of the class constants prefixed by `SLOT_`.

### setCurrentRow

    public boolean setCurrentRow(Row row)

  Description copied from interface: `RowIterator`
  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)

  Description copied from interface: `RowIterator`
  Creates and initializes a new Row object, but does not insert it into the Row Set. This method differs from `createRow()` mainly in that this method allows the user to pass in a list of name-value pairs with which row attributes are initialized.

  `nvp` is a named value pair. When building an nvp from scratch, use `NameValuePairs` to build a new nvp. Here is an example:

          NameValuePairs nvp = new NameValuePairs();
          nvp.setAttribute("EmpTyp", "C");

          Row row = voEmp.createAndInitRow(nvp);

  This method is particularly useful when creating a subclass View Row or Entity Row. You can include polymorphic discriminator attribute values in `nvp` and correct subclass row object will be created.

  When this method is called, underlying entities are created. After the new entities are created, a new view row is created. After that `ViewRowImpl.create(oracle.jbo.AttributeList)` is called with this `nvp`. `ViewRowImpl.create(AttributeList)` walks thru the list of entities and calls `EntityImpl.create(AttributeList)` with the same `nvp` for each entity in the view row.

  Specified by:
    `createAndInitRow` in interface `RowIterator`
  Parameters:
    `nvp` - a list of name-value pairs.
  Returns:
    a new Row object.

### createRow

    public Row createRow()

  Description copied from interface: `RowIterator`
  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)

  Description copied from interface: `RowIterator`
  Inserts 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()

  Description copied from interface: `RowIterator`
  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 ``RowIterator.removeCurrentRowAndRetain()``, 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)

  Description copied from interface: `RowIterator`
  Modifies the size of the Row Set Iterator range.

  This method takes effect when the next set of data is fetched. For an example usage of `setRangeSize`, see `setRangeStart`.

  Specified by:
    `setRangeSize` in interface `RowIterator`
  Parameters:
    `size` - the new number of rows in the iterator range. Size of 0 is treated same as 1. Size < -1 is treated same as -1.
  Returns:
    the new size of the range.
  See Also:
    `RowIterator.setRangeStart(int)`

### getRangeSize

    public int getRangeSize()

  Description copied from interface: `RowIterator`
  Gets the size of the Row Set Iterator range.
  Specified by:
    `getRangeSize` in interface `RowIterator`
  Returns:
    the number of rows in the range.

### getRangeStart

    public int getRangeStart()

  Description copied from interface: `RowIterator`
  Gets the absolute row index of the first row in the Row Set Iterator 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)

  Description copied from interface: `RowIterator`
  Moves the Row Set Iterator 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 Iterator range.

### scrollRange

    public int scrollRange(int amount)

  Description copied from interface: `RowIterator`
  Moves the Row Set Iterator 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.

### scrollRangeTo

    public int scrollRangeTo(Row row,
                             int index)

  Description copied from interface: `RowIterator`
  Scrolls the range to place a given row at a given range index.
  Specified by:
    `scrollRangeTo` in interface `RowIterator`
  Parameters:
    `row` - the row.
    `index` - the range index at which the row is to be found.
  Returns:
    the actual number of rows scrolled. A negative number indicates that the scroll was scrolled upward.

### setCurrentRowAtRangeIndex

    public boolean setCurrentRowAtRangeIndex(int index)

  Description copied from interface: `RowIterator`
  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)

  Description copied from interface: `RowIterator`
  Inserts a row to the Row Set at the given range 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)

  Description copied from interface: `RowIterator`
  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 index of `row`,

### getRowCountInRange

    public int getRowCountInRange()

  Description copied from interface: `RowIterator`
  Gets the size of the Row Set Iterator range.
  Specified by:
    `getRowCountInRange` in interface `RowIterator`
  Returns:
    the number of rows in the range.

### isRangeAtBottom

    public boolean isRangeAtBottom()

  Description copied from interface: `RowIterator`
  Tests if the Row Set Iterator 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()

  Description copied from interface: `RowIterator`
  Tests if the Row Set Iterator 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()

  Description copied from interface: `RowIterator`
  Gets an `Enumeration` of all rows in the Row Set.
  Specified by:
    `enumerateRowsInRange` in interface `RowIterator`
  Returns:
    an `Enumeration` interface.

### getAllRowsInRange

    public Row[] getAllRowsInRange()

  Description copied from interface: `RowIterator`
  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()`.

### findByKey

    public Row[] findByKey(Key key,
                           int maxNumOfRows)

  Description copied from interface: `RowIterator`
  Finds and returns View rows that match the specified key.

  If this View Object has multiple Entity Object bases, the key need not be specified for all. However, if a key is specified for n-th Entity Object, and if this Entity Object's primary key consists of multiple parts, all parts of the key must be specified.

  If not all Entity keys are included, multiple rows may match the partial key. The `maxNumOfRows` parameter is used to specify the maximum number of rows to return.

  For example, suppose the View Object has Emp and DeptLocation as its Entity Object bases. Suppose further that Emp has a one part primary key (employee number) and DeptLocation has a two part primary key (dept name and location).

  The user can make the following call to look for all employees working in ACCOUNTING's NEW YORK office:

  >         // The key will consist of 3 parts.  The first part is
  >         // for the employee number (which is null, meaning not
  >         // specified).  The second part is the department name.
  >         // The third is the location.
  >         Object [] keyValues = new Object[3];

  >         keyValues[0] = null;  // All employees
  >         keyValues[1] = "ACCOUNTING";
  >         keyValues[4] = "NEW YORK"; // third Entity Object, key part 1

  >         Row[] rows = myAM.findViewObject(new Key(keyValues), -1);

  In this example, if you were to include the key for DeptLocation, you must specify both key parts.

  Note that the position of the key must patch the order of the Entity Object bases and their keys. In the above example, keyValues[0] is always the employee number. You cannot specify the employee number in keyValues[1] or keyValues[2].

  This method works even on a View Object which has no Entity Object base. For this to work, however, the ViewObject's key attribute list must have been set up through a call to ``ViewObjectImpl.setKeyAttributeDefs(int[])``. For example, suppose we have a View Object with 5 attributes where attribute 0 and 2 are to be its key attributes.

  Then, the following code block will retrieve all rows whose attribute 0 is "PERM" and attribute 2 is 30.

  >         // First set up the key attributes
  >         myVO.setKeyAttributeDefs(new int[] { 0, 2 });

  >         // The key will consist of 2 parts.  The first part is
  >         // for attribtue 0 and the second is for attribute 2.
  >         Object [] keyValues = new Object[2];

  >         keyValues[0] = "PERM";
  >         keyValues[1] = new Integer(30);

  >         Row[] rows = myAM.findViewObject(new Key(keyValues), -1);

  Internally, `findByKey()` works as follows for a View Object with Entity Object bases: It takes the first `non-null` entity key from `key`. It uses it to find the Entity row in the cache. If it finds it, then it looks at all View rows in the Row Set collection that uses that Entity row and apply the remaining keys to qualify them. It may or may not find as many rows as requested.

  If the requested number of rows have been found, the array returns. Otherwise, a check is made to see if the View Object's fetch size is unlimited (which is -1, see ``ViewObject.setMaxFetchSize(int)``) and the Row Set has fetched all the rows out of database into its collection. If this is the case, we return the array even if the requested number of rows have not been found. This is because these conditions imply that all rows have been brought into Row Set collection and no further search is necessary.

  Otherwise (the requested number of rows not yet found and the Row Set has not yet fetched all rows or the fetch size is not -1), the search continues. We now use the `key` build a where-clause for an internal View Object. That where-clause is applied and qualifying rows are retrieved from it to find the requested number of rows.

  For a View Object which has no Entity Object base, we simply skip the step of looking in the Entity Object cache. Other than that, the logic is applied.

  As new rows are retrieved from database they are added to the Row Set collection. Thus, the user can work with these rows immediately, e.g., call ``RowIterator.setCurrentRow(Row)`` with one of them. Care is applied to make sure the same row is not added to the Row Set collection multiple times.

  This method does not fire any navigation event, nor does it move the range or the current row. Also, as rows are added to the Row Set collection, no insertion event fires (as this is analogous to fetching rows).

  See ``RowIterator.getRow(Key)`` for comparison between this method and `getRow(Key)`.

  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:
    an array of rows matching the key.

### findByViewCriteria

    public RowIterator findByViewCriteria(ViewCriteria criteria,
                                          int maxNumOfRows,
                                          int queryMode)

  Description copied from interface: `RowIterator`
  Finds and returns View rows that match the specified View Criteria. See ``ViewCriteria`` for details on how to build and use a View Criteria.

  The `queryMode` parameter controls the manner in which the qualifying View rows are searched. See the `QUERY_MODE_...` constants in ``ViewObject`` for different contants that can be specified (they can be OR'ed together).

  If `QUERY_MODE_SCAN_VIEW_ROWS` is specified, the existing View rows in the current Row Set are scanned for matching rows.

  If `QUERY_MODE_SCAN_ENTITY_ROWS` is specified, the Entity cache is searched for qualifying rows. If qualifying rows are found, they are added to the current Row Set. I.e., they become part of the current row collection. Internally, a finder View Object is created to search the Entity cache and to produce View rows from the Entity cache.

  If `QUERY_MODE_SCAN_DATABASE_TABLES` is specified, a database query is issued to find matching rows. The View Criteria is converted into a where-clause. ``ViewObject.applyViewCriteria(ViewCriteria)`` on the finder View Object is invoked and the query executed.

  Upon completion of this operation, the finder View Object is closed and removed.

  Specified by:
    `findByViewCriteria` in interface `RowIterator`
  Parameters:
    `criteria` - the View Criteria to be used to qualify View rows.
    `maxNumOfRows` - the maximum size of the array to return, or `-1` to return all rows. If a value other than `-1` is specified and if the specified number of rows is reached, the method returns without performing any further operation.
    `queryMode` - the mode in which qualify View rows are scanned. See above for further info.
  Returns:
    a RowSet (parented by the same View Object as this RowIterator) that contains qualifying rows. For convenience, this RowSet's range size is initialized to -1 (all rows).

### createKey

    public Key createKey(AttributeList nvp)

  Description copied from interface: `RowIterator`
  Given a list of name-value pairs, creates a Key object that matches the key structure for the ViewObject for this RowItertor. This Key object could be used as a valid argument to findByKey. This Key will have null values for attributes expected in the key structure for this ViewObject, but not found in the given set of name-value pairs.
  Specified by:
    `createKey` in interface `RowIterator`

### findByEntity

    public Row[] findByEntity(int eRowHandle,
                              int maxNumOfRows)

  Description copied from interface: `RowIterator`
  Finds and returns View rows that use the Entity row, identified by the Entity row handle, `eRowHandle`.
  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:
    an array of View rows that use the Entity row.

### setRowValidation

    public void setRowValidation(boolean flag)

  Description copied from interface: `RowIterator`
  Sets the validation flag on this iterator. By default a RowIterator validates the current row when navigating to another row. This method can be used to turn this row-validation off by passing 'false' as parameter.
  Specified by:
    `setRowValidation` in interface `RowIterator`
  Parameters:
    `flag` - Whether to turn row validation off or not.

### 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()

  Description copied from interface: `RowIterator`
  Gets the current iteration mode. See Iteration Modes above for details on iteration mode which controls how the range behaves when it reaches the end of the Row Set.
  Specified by:
    `getIterMode` in interface `RowIterator`
  Returns:
    `ITER_MODE_LAST_PAGE_PARTIAL` if the iteration mode is "partial-last-page", `ITER_MODE_LAST_PAGE_FULL` if it is "full-last-page".

### setIterMode

    public void setIterMode(int mode)

  Description copied from interface: `RowIterator`
  Sets the iteration mode for this Row Iterator. See Iteration Modes above for details on iteration mode which controls how the range behaves when it reaches the end of the Row Set.
  Specified by:
    `setIterMode` in interface `RowIterator`
  Parameters:
    `mode` - should be `ITER_MODE_LAST_PAGE_PARTIAL` if the iteration mode is to be "partial-last-page", `ITER_MODE_LAST_PAGE_FULL` if it is to be "full-last-page".

### hasVariables

    public boolean hasVariables()

  Description copied from interface: `VariableManagerOwner`
  Returns a flag indicating whether this object has Variables or not.
  Specified by:
    `hasVariables` in interface `VariableManagerOwner`
  Returns:
    the flag indicating whether this object has Variables.

### getVariableManager

    public VariableValueManager getVariableManager()

  Description copied from interface: `VariableManagerOwner`
  Returns this object's current Variable Value Manager. It will return `null` if Variable Value Manager has been initialized.

  When a framework object is first created, its Variable Value Manager may be null. This method does not initialize (create) the Variable Value Manager.

  ``VariableManagerOwner.ensureVariableManager()`` in contrast, ensures that the Variable Value Manager is initialized (created).

  Specified by:
    `getVariableManager` in interface `VariableManagerOwner`
  Returns:
    this object's current Variable Value Manager. May return `null` if one was not yet initialized.

### ensureVariableManager

    public VariableValueManager ensureVariableManager()

  Description copied from interface: `VariableManagerOwner`
  Returns this object's Variable Value Manager. If this object current has no Variable Value Manager, it will initialize (create) one.
  Specified by:
    `ensureVariableManager` in interface `VariableManagerOwner`
  Returns:
    this object's Variable Value Manager. Will create a Variable Value Manager if this object had no Variable Value Manager.

### getProperty

    public java.lang.Object getProperty(java.lang.String hintName)

  Description copied from interface: `Properties`
  Retrieves the specified property, if it exists.
  Specified by:
    `getProperty` in interface `Properties`
  Parameters:
    `hintName` - Property name.
  Returns:
    the value of the property, if any, otherwise `null`.

### refreshProperty

    public java.lang.Object refreshProperty(java.lang.String hintName)

  Description copied from interface: `Properties`
  Retrieves the specified property, if it exists. If the application running in a 3 tier environment, it retrieves the property from the middle-tier server, refreshing the value on the client side. If the application is running in a 2 tier environment, it is equivalent to `getProperty`.
  Specified by:
    `refreshProperty` in interface `Properties`
  Parameters:
    `hintName` - Property name.
  Returns:
    the value of the property, if any, otherwise `null`.

### getProperties

    public java.util.Hashtable getProperties()

  Description copied from interface: `Properties`
  Gets the table of properties.
  Specified by:
    `getProperties` in interface `Properties`
  Returns:
    a hashtable of properties.

### writeXML

    public Node writeXML(int depthCount,
                         long options)

  Description copied from interface: `XMLInterface`
  Renders data in a canonical XML-format. The classes `ViewObjectImpl` and `ViewRowImpl` implement this method to render data in XML.

  Use this method whenever data is required in XML format, either to present a UI (after converting XML data into some HTTP format using a stylesheet) or to pass the data as payload for messages via JMS.

  The `depthcount` parameter represents to what level the rendering should recurse. A `depthcount` of zero (0) means do not traverse any View Links while rendering. One (1) means traverse the View Links on this object but no View Links thereafter, and so on.

  The `options` parameter represents a set of bit flags that will control the `writeXML` behavior. The following bit flags have been defined:

  - `public static long XML_OPT_LIMIT_RANGE = 0x00000001` - Controls whether `writeXML` will only write rows in the range. If this flag is off, all rows in the row set will be written. If this flag is on, only rows in the current range will be written.
  - `public static long XML_OPT_CHANGES_ONLY = 0x00000002` - Controls whether only changed attribute values of an entity row is written. If this is on, only the attributes whose value has been marked as "changed" will be written. If this is off, all attributes (regardless of whether the attribute value has been changed or not) will be written. This flag is relevant only when writing `EntityImpl`.
  Specified by:
    `writeXML` in interface `XMLInterface`
  Parameters:
    `depthCount` - represents to what level the rendering should recurse.
    `options` - a set of bit flags that will control the `writeXML` behavior.

### writeXML

    public Node writeXML(int depthCount,
                         long options,
                         XSLStylesheet xslt)

  Specified by:
    `writeXML` in interface `XMLInterface`

### readXML

    public void readXML(Element elem,
                        int depthCount)

  Specified by:
    `readXML` in interface `XMLInterface`

### readXML

    public void readXML(Element elem,
                        int depthCount,
                        XSLStylesheet xslt)

  Specified by:
    `readXML` in interface `XMLInterface`

### writeXML

    public Node writeXML(long options,
                         com.sun.java.util.collections.HashMap voAttrMap)

  Description copied from interface: `XMLInterface`
  Renders data in a canonical XML-format. The classes `ViewObjectImpl` and `ViewRowImpl` implement this method to render data in XML.

  Use this method whenever data is required in XML format, either to present a UI (after converting XML data into some HTTP format using a stylesheet) or to pass the data as payload for messages via JMS.

  The `options` parameter represents a set of bit flags that will control the `writeXML` behavior. The following bit flags have been defined:

  - `public static long XML_OPT_LIMIT_RANGE = 0x00000001` - Controls whether `writeXML` will only write rows in the range. If this flag is off, all rows in the row set will be written. If this flag is on, only rows in the current range will be written.
  - `public static long XML_OPT_CHANGES_ONLY = 0x00000002` - Controls whether only changed attribute values of an entity row is written. If this is on, only the attributes whose value has been marked as "changed" will be written. If this is off, all attributes (regardless of whether the attribute value has been changed or not) will be written. This flag is relevant only when writing `EntityImpl`.

  The `voAttrMap` parameter represents in a hashmap, the mapping between a given ViewObject's definition type and the corresponding Attributes/accessors to render. A null entry in the hashmap means, render all attributes and accessors of that viewobject type.

  Specified by:
    `writeXML` in interface `XMLInterface`
  Parameters:
    `options` - a set of bit flags that will control the `writeXML`
    `voAttrMap` - HashMap containing Definition names of ViewObjects and an array of AttributeDef to render for a ViewObject of that definition type.

### writeXML

    public Node writeXML(long options,
                         com.sun.java.util.collections.HashMap voAttrMap,
                         XSLStylesheet xslt)

  Specified by:
    `writeXML` in interface `XMLInterface`

### getMessageBundleClass

    public java.lang.Class getMessageBundleClass()

  Specified by:
    `getMessageBundleClass` in interface `VariableManagerOwner`

Overview | Package | Class | Tree | Deprecated | Index | Help
| Oracle Application Development Framework Model and Business Components Java API Reference 10g Release 3 (10.1.3) B16005-01
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

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