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

oracle.jbo.client.remote
Class ViewUsageImpl

java.lang.Object
  extended byoracle.jbo.common.PropertiesHelper
      extended byoracle.jbo.client.remote.ViewUsageImpl
All Implemented Interfaces:
ClientComponentObject, ComponentObject, java.util.EventListener, InternalListenerManager, NavigatableRowIterator, Properties, RowIterator, RowNavigationListener, RowSet, RowSetIterator, RowSetListener, StructureDef, ViewObject, ViewObjectDynAttr, WSRowSetIteratorMarshaller, WSViewObjectMarshaller, XMLInterface

public class ViewUsageImpl
extends PropertiesHelper
implements ClientComponentObject, ViewObject, RowSetListener, InternalListenerManager, WSViewObjectMarshaller, WSRowSetIteratorMarshaller, ViewObjectDynAttr

Version:
INTERNAL

Field Summary
protected  ApplicationModuleImpl mAM
           
protected  ViewCriteria mCriteria
           
protected  boolean mCriteriaGotten
           
protected  RowSet mDefaultRowSet
           
protected  java.lang.String mDefFullName
           
protected  java.lang.String mDefName
           
protected  java.lang.String mFullName
           
protected  int mId
           
protected  java.lang.String mInterfaceName
           
protected  boolean mIsInternal
           
protected  boolean mIsReadOnly
           
protected  java.lang.String mName
           
protected  java.lang.String mRowProxyClassName
           
protected  com.sun.java.util.collections.ArrayList mRowSets
           
protected  StructureDefImpl mStruct
           
protected  com.sun.java.util.collections.ArrayList mViewLinks
           
 
Fields inherited from class oracle.jbo.common.PropertiesHelper
mProperties
 
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
protected ViewUsageImpl()
           
 
Method Summary
 AttributeDef addDynamicAttribute(java.lang.String attrName)
          Adds a dynamic attribute (an AttributeDefImpl) to this View Object's row set.
 void addInternalListener(java.lang.Object target)
           
 void addListener(java.lang.Object target)
          Adds a subscriber (listener) to be notified of RowSetListener events generated by this row set iterator.
 void addManagementListener(RowSetManagementListener target)
          Adds a subscriber (listener) to be notified of RowSetManagementListener events generated by this Row Set Iterator.
protected  void addViewLink(ViewLink viewLink)
           
 AttributeDef addViewLinkAccessor(java.lang.String accrName)
           
 void applyViewCriteria(ViewCriteria criteria)
          Sets the view criteria.
 void clearCache()
          Clears the View Object cache.
 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 voName, java.lang.String linkDefName)
          Create a row set for the view link.
 Key createKey(AttributeList nvp)
          Given a set of attribute values (name-value pairs), creates a key object for this ViewObject.
 Row createRow()
          Creates a new Row object, but does not insert it into the Row Set.
 RowSet createRowSet(java.lang.String name)
          Creates and returns a new (secondary) Row Ret for this View Object.
 RowSetIterator createRowSetIterator(java.lang.String name)
          Creates an iterator for the Row Set.
 ViewCriteria createViewCriteria()
          View Criteria factory
 java.util.Enumeration enumerateRowsInRange()
          Gets an Enumeration of all rows in the Row Set.
 void executeQuery()
          Executes the View Object's query.
protected  void finalize()
          void addRowCount(Object rowHandle) { Integer entry = (Integer) mRowCount.get(rowHandle); if (entry == null) { mRowCount.put(rowHandle, new Integer(1)); } else { mRowCount.put(rowHandle, new Integer(entry.intValue() + 1)); } } boolean releaseRowCount(Object rowHandle) { Integer entry = (Integer) mRowCount.get(rowHandle); int useCount = entry.intValue(); Diagnostic.ASSERT(entry != null, "Cannot find row use entry for handle = " + ((Integer) rowHandle).intValue()); if (useCount == 1) { mRowCount.remove(rowHandle); return true; } else { mRowCount.put(rowHandle, new Integer(useCount - 1)); return false; } }
 void findAndSetCurrentRowByKey(Key k, int rangeIndex)
           
 AttributeDef findAttributeDef(java.lang.String name)
          Gets an attribute definition, given its name.
 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.
 RowSet findRowSet(java.lang.String name)
          Gets the named Row Set that was created at runtime for this View Object.
 RowSetIterator findRowSetIterator(java.lang.String name)
          Gets the named Row Set Iterator that was created at runtime for this Row Set.
 AttributeDef findViewLinkAccessor(ViewLink vl)
          Finds the view link accessor attribute.
 Row first()
          Gets the first row in the iterator.
 byte getAccessMode()
           
 int getActivationMode()
           
 Row[] getAllRowsInRange()
          Extracts the rows in the range.
 ApplicationModule getApplicationModule()
          Gets the Row Set's Application Module that contains this Row Set.
protected  ApplicationModuleImpl getApplicationModuleProxy()
           
 AttributeDef[] getAttrDefsForEntityAttr(java.lang.String eoName, java.lang.String eoAttrName)
          This method performs the same operation as getAttrIndicesForEntityAttr, except that it return an array of attribute definitions, not just indices.
 int getAttributeCount()
          Returns the number of defined attributes.
 AttributeDef getAttributeDef(int index)
          Gets an attribute definition, given its index.
 AttributeDef[] getAttributeDefs()
          Gets the defined attributes.
 int getAttributeIndexOf(java.lang.String name)
          Finds the index (0-based) of the named attribute.
 int[] getAttrIndicesForEntityAttr(java.lang.String eoName, java.lang.String eoAttrName)
          Returns an array of indices of view attributes that are mapped to the entity attribute identified by the entity name (the eoName parameter) and the entity attribute name (the eoAttrName).
 SvcMsgIteratorState getCliIteratorState()
           
 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.
 java.lang.String getDefFullName()
          Returns the fully qualified name of the structure's base definition.
 java.lang.String getDefName()
          Returns the structure's base definition name (short form).
 RowSet[] getDetailRowSets()
          Get all detail Row Sets for this View Object.
 int getDynamicAttributeCount()
           
 int getDynamicAttributeOffset()
           
 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.
 java.lang.String getFullName()
          Returns the structure's fully qualified name.
static oracle.jbo.client.remote.RowSetIteratorImpl getImplObject(java.lang.Object rsi)
           
 int getIterMode()
          Gets the current iteration mode.
 AttributeDef[] getKeyAttributeDefs()
          Returns the attribute definitions that make up the constituents of the Key object for Rows returned from this View Object.
 RowSetIterator[] getMasterRowSetIterators()
          Return all controlling masters of this Row Set.
 int getMaxFetchSize()
          Maximum number of rows to fetch for this View Object.
 java.lang.String getName()
          Returns the structure's name (short form).
 Row[] getNextRangeSet()
          Gets the next set of rows in the range.
protected  ObjectMarshaller getObjectMarshaller()
           
 java.lang.String getOrderByClause()
          Returns the query's ORDER BY clause.
 java.lang.Object getParent()
           
protected  byte[] getPiggyback()
           
 Row[] getPreviousRangeSet()
          Gets the previous set of rows in the range.
 java.util.Hashtable getProperties()
          Gets the table of properties.
 java.lang.String getQuery()
          Returns the query statement.
 java.lang.String getQueryOptimizerHint()
          Returns Query Optimizer Hint set for this ViewObject or for its definition object.
 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.
 int getRemoteId()
           
 byte getROTEntryType()
           
 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.
 java.lang.Object[] getRowFilterValues()
           
 RowSet getRowSet()
          Gets the Row Set that this Iterator belongs to.
 RowSetIterator getRowSetIterator()
           
 RowSetIterator[] getRowSetIterators()
          Gets all Row Set Iterators that belong to this Row Set.
 RowSet[] getRowSets()
          Get all Row Sets that belong to this View Object.
protected  ServiceMessage getServiceMessage()
           
 StructureDef getStructDef()
           
 java.lang.Object getSyncLock()
          Gets the locking object for this Row Set Iterator.
 ViewCriteria getViewCriteria()
          Gets the view criteria.
 java.lang.String[] getViewLinkNames()
          Constructs an array of names of View Links that involve this View Object.
protected  ViewLink[] getViewLinks()
           
 ViewObject getViewObject()
          Gets the View Object that contains this Row Set.
 java.lang.String getWhereClause()
          Gets the query's WHERE clause.
 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.
protected  void init(ApplicationModuleImpl appModule, int voId, java.lang.String name, java.lang.String fullName, java.lang.String defName, java.lang.String defFullName, boolean isRO)
           
 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()
          Tests if association-consistent mode is on.
 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 isInternal()
          Returns whether this View Object was created internally by BC4J or by an explicit user request.
 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 isReadOnly()
          Tests if the View Object is read-only.
 boolean isRowValidation()
          Gets the validation flag on this iterator.
 Row last()
          Gets the last row in the iterator.
 AttributeDef lookupAttributeDef(java.lang.String name)
          Gets an attribute definition, given its name.
 void navigated(NavigationEvent event)
          Invoked when the current-row designation changes.
 Row next()
          Gets the next row in the iterator.
 void prepareForBatchMode(SvcMsgIteratorState iteratorState, boolean setCurrentRow)
           
 Row previous()
          Gets the previous row in the iterator.
protected  void processPiggyback(byte[] pb)
           
protected  com.sun.java.util.collections.ArrayList processServiceMessage(ServiceMessage svcMsg)
           
 void rangeRefreshed(RangeRefreshEvent event)
          Invoked when the range changes.
 void rangeScrolled(ScrollEvent event)
          Invoked when the range is scrolled.
 void readRowXML(Element elem, int depthCount)
          Reads the data in XML form (in the format as generated by writeXML()) by finding a row that matches the key in the given XML and then reading in that row.
 void readRowXML(Element elem, int depthCount, XSLStylesheet xslt)
           
 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 remove()
          Deletes this component.
 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 removeInternalListener(java.lang.Object target)
           
 void removeListener(java.lang.Object target)
          Removes a subscriber (listener) for RowSetListener events generated by this row set iterator.
 void removeManagementListener(RowSetManagementListener target)
          Removes a subscriber (listener) for RowSetManagementListener events generated by this row set iterator.
 boolean removeMasterRowSetIterator(RowSetIterator masterRS)
          Removes a master Row Set Iterator.
protected  void removeViewLink(ViewLinkImpl viewLink)
           
 void reset()
          Moves the currency to the slot before the first row.
 void rowDeleted(DeleteEvent event)
          Invoked when a row has been deleted.
 void rowInserted(InsertEvent event)
          Invoked when a row has been inserted.
 void rowUpdated(UpdateEvent event)
          Invoked when an attribute of the row has been changed.
 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 isConsistent)
          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 isForwardOnly)
          Constrains the Row Set to sequential access.
 void setIterMode(int mode)
          Sets the iteration mode for this Row Iterator.
 boolean setMasterRowSetIterator(RowSetIterator masterRS)
          Sets the master iterator.
 void setMaxFetchSize(int max)
          Maximum number of rows to fetch for this View Object.
 void setOrderByClause(java.lang.String expr)
          Sets the ORDER BY clause of the View Object's query statement.
 void setProperty(java.lang.String hintName, java.lang.Object hintValue)
           
 void setQueryOptimizerHint(java.lang.String hintText)
          If this ViewObject does not have an expert mode query, then this hint is added to the select clause of the SQL for this ViewObject before the columns are listed e.g., SELECT \/*+ *\/ columns...
 int setRangeSize(int size)
          Modifies the size of the Row Set Iterator range.
 int setRangeStart(int start)
          Moves the Row Set Iterator range.
 void setRowFilterValues(java.lang.Object[] rowFilterValues)
           
 void setRowValidation(boolean flag)
          Sets the validation flag on this iterator.
 void setWhereClause(java.lang.String cond)
          Sets a WHERE clause bind value of the View Object's query statement.
 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.
 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.common.PropertiesHelper
getProperty
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface oracle.jbo.Properties
getProperty
 

Field Detail

mName

protected java.lang.String mName

mFullName

protected java.lang.String mFullName

mDefName

protected java.lang.String mDefName

mDefFullName

protected java.lang.String mDefFullName

mId

protected int mId

mAM

protected ApplicationModuleImpl mAM

mStruct

protected StructureDefImpl mStruct

mDefaultRowSet

protected RowSet mDefaultRowSet

mRowSets

protected com.sun.java.util.collections.ArrayList mRowSets

mIsInternal

protected boolean mIsInternal

mIsReadOnly

protected boolean mIsReadOnly

mViewLinks

protected com.sun.java.util.collections.ArrayList mViewLinks

mCriteria

protected ViewCriteria mCriteria

mCriteriaGotten

protected boolean mCriteriaGotten

mRowProxyClassName

protected java.lang.String mRowProxyClassName

mInterfaceName

protected java.lang.String mInterfaceName
Constructor Detail

ViewUsageImpl

protected ViewUsageImpl()
Method Detail

getSyncLock

public final 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.

isNameGenerated

public final 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.

isInternal

public final boolean isInternal()
Description copied from interface: ViewObject
Returns whether this View Object was created internally by BC4J or by an explicit user request.

Specified by:
isInternal in interface ViewObject
Returns:
a flag indicating whether the View Object is internal or not.

init

protected void init(ApplicationModuleImpl appModule,
                    int voId,
                    java.lang.String name,
                    java.lang.String fullName,
                    java.lang.String defName,
                    java.lang.String defFullName,
                    boolean isRO)

getName

public java.lang.String getName()
Description copied from interface: StructureDef
Returns the structure's name (short form).

Specified by:
getName in interface ClientComponentObject

getFullName

public java.lang.String getFullName()
Description copied from interface: StructureDef
Returns the structure's fully qualified name.

Specified by:
getFullName in interface ClientComponentObject

getDefName

public java.lang.String getDefName()
Description copied from interface: StructureDef
Returns the structure's base definition name (short form). Note that, in some cases, a StructureDef may have an instance name and definition name. For example, for a View Object, getName() returns the VO's instance name and getDefName() returns the View definition's name.

Specified by:
getDefName in interface StructureDef
Returns:
name of the structure's base definition.

getDefFullName

public java.lang.String getDefFullName()
Description copied from interface: StructureDef
Returns the fully qualified name of the structure's base definition. Note that, in some cases, a StructureDef may have an instance name and definition name. For example, for a View Object, getFullName() returns the VO's full instance name and getDefFullName() returns the View definition's full name.

Specified by:
getDefFullName in interface StructureDef
Returns:
fully qualified name of the structure's base definition.

getActivationMode

public int getActivationMode()
Specified by:
getActivationMode in interface WSViewObjectMarshaller

remove

public void remove()
Description copied from interface: ComponentObject
Deletes this component.

Specified by:
remove in interface ComponentObject

getRemoteId

public int getRemoteId()
Specified by:
getRemoteId in interface ClientComponentObject

getROTEntryType

public byte getROTEntryType()
Specified by:
getROTEntryType in interface ClientComponentObject

getStructDef

public StructureDef getStructDef()

getAttributeDefs

public AttributeDef[] getAttributeDefs()
Description copied from interface: StructureDef
Gets the defined attributes.

Specified by:
getAttributeDefs in interface StructureDef
Returns:
an array of attribute definitions.

getAttributeCount

public int getAttributeCount()
Description copied from interface: StructureDef
Returns the number of defined attributes.

Specified by:
getAttributeCount in interface StructureDef
Returns:
the number of attributes.

findAttributeDef

public AttributeDef findAttributeDef(java.lang.String name)
Description copied from interface: StructureDef
Gets an attribute definition, given its name.

Specified by:
findAttributeDef in interface StructureDef
Parameters:
name - the name of an AttributeDef.
Returns:
an attribute definition

lookupAttributeDef

public AttributeDef lookupAttributeDef(java.lang.String name)
Description copied from interface: StructureDef
Gets an attribute definition, given its name.

Specified by:
lookupAttributeDef in interface StructureDef
Parameters:
name - the name of an AttributeDef.
Returns:
an attribute definition if found, null otherwise

getAttributeDef

public AttributeDef getAttributeDef(int index)
Description copied from interface: StructureDef
Gets an attribute definition, given its index.

Specified by:
getAttributeDef in interface StructureDef
Parameters:
index - the index of an AttributeDef, where the leftmost attribute has index zero.
Returns:
an attribute definition.

getAttributeIndexOf

public int getAttributeIndexOf(java.lang.String name)
Description copied from interface: StructureDef
Finds the index (0-based) of the named attribute.

Specified by:
getAttributeIndexOf in interface StructureDef
Parameters:
name - the attribute's name.
Returns:
an integer in the range 0 to getAttributeCount() - 1. If the named attribute is not found, it returns -1.

getKeyAttributeDefs

public AttributeDef[] getKeyAttributeDefs()
Description copied from interface: ViewObject
Returns the attribute definitions that make up the constituents of the Key object for Rows returned from this View Object.

This method is used to pass AttributeDef[] to the Key.Key(String, AttributeDef[]) constructor to parse the constituent-bytes and convert them into value-objects that make up the Key.

Use this method to find out how the key is composed for the View row. The View Object's key is a composite key, consisting of view attributes mapped to the primary keys of its Entity Objects.

Specified by:
getKeyAttributeDefs in interface ViewObject
Returns:
the array of attribute definitions.

getAttrDefsForEntityAttr

public AttributeDef[] getAttrDefsForEntityAttr(java.lang.String eoName,
                                               java.lang.String eoAttrName)
This method performs the same operation as getAttrIndicesForEntityAttr, except that it return an array of attribute definitions, not just indices.

Specified by:
getAttrDefsForEntityAttr in interface ViewObject
Parameters:
eoName - fully qualified name of the entity object.
eoAttrName - entity object attribute name.
Returns:
the array of attribute definitions ov VO attrs that are mapped to the entity attribute. If no view attribute is mapped to the entity attribute, an empty array (of length 0) is returned.
See Also:
getAttrIndicesForEntityAttr(String, String)

getAttrIndicesForEntityAttr

public int[] getAttrIndicesForEntityAttr(java.lang.String eoName,
                                         java.lang.String eoAttrName)
Returns an array of indices of view attributes that are mapped to the entity attribute identified by the entity name (the eoName parameter) and the entity attribute name (the eoAttrName).

Note that it returns an array because more than one view object attribute may be mapped to one entity attribute.

This method can be used to identify view attributes that map into a particular entity object attribute. In particular, if a validation error fails on an entity attribute, this method can be used to find view attributes that map into that entity attribute.

Parameters:
eoName - fully qualified name of the entity object.
eoAttrName - entity object attribute name.
Returns:
the array of indices of view attributes that are mapped to the entity attribute. If no view attribute is mapped to the entity attribute, an empty array (of length 0) is returned.

setWhereClause

public void setWhereClause(java.lang.String cond)
Description copied from interface: ViewObject
Sets a WHERE clause bind value of the View Object's query statement.

Bind variables can be specified using '?' as a place-holder for the value.

The new WHERE clause does not take effect until ViewObjectImpl.executeQuery() is called. For an example usage of this method, see ViewObjectImpl.setWhereClauseParam(int, Object).

Note that calling setWhereClause() does not clear the previous settings of WHERE clause parameters. To reset WHERE clause parameters in the middle tier, call ViewObjectImpl.setWhereClauseParams(Object[]) explicitly with a null value. For example:

 vo.setWhereClauseParams(null);
 
This method should not be overridden.

Specified by:
setWhereClause in interface ViewObject
Parameters:
cond - a WHERE clause, but excluding the 'WHERE' keyword.

getWhereClause

public java.lang.String getWhereClause()
Description copied from interface: ViewObject
Gets the query's WHERE clause. If the query does not have a WHERE clause, this method returns null.

This WHERE clause is obtained from the View Object instance. In the middle tier, to get the WHERE clauses built from the View Object instance, the View definition, and the detail View Objects, use ViewObjectImpl.buildWhereClause(java.lang.StringBuffer, int)

Specified by:
getWhereClause in interface ViewObject
Returns:
the WHERE clause, excluding the WHERE keyword; null if no WHERE clause exists.

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.

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.

setOrderByClause

public void setOrderByClause(java.lang.String expr)
Description copied from interface: ViewObject
Sets the ORDER BY clause of the View Object's query statement. Bind variables can be specified using '?' as a place-holder for the value. The new ORDER BY clause does not take effect until ViewObjectImpl.executeQuery() is called.

This method should not be overridden.

Specified by:
setOrderByClause in interface ViewObject

getOrderByClause

public java.lang.String getOrderByClause()
Description copied from interface: ViewObject
Returns the query's ORDER BY clause. If the query does not have an ORDER BY clause, this method returns null.

This method should not be overridden.

Specified by:
getOrderByClause in interface ViewObject
Returns:
a ORDER BY clause, but excluding the 'ORDER BY' keyword. null if the SQL statement has no ORDER BY clause.

getQuery

public java.lang.String getQuery()
Description copied from interface: ViewObject
Returns the query statement. Unlike ViewObjectImpl.getUserDefinedQuery() this method will return a SQL statement regardless of whether the query was created in Expert or non-Expert Mode.

Specified by:
getQuery in interface ViewObject
Returns:
the user-defined SQL query if one exists, otherwise, a query statement is assembled from defined FROM, WHERE, and ORDER BY clauses.

getProperties

public java.util.Hashtable getProperties()
Description copied from interface: Properties
Gets the table of properties.

Specified by:
getProperties in interface Properties
Specified by:
getProperties in class PropertiesHelper

setProperty

public void setProperty(java.lang.String hintName,
                        java.lang.Object hintValue)
Overrides:
setProperty in class PropertiesHelper

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
Overrides:
refreshProperty in class PropertiesHelper

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.

executeQuery

public void executeQuery()
Description copied from interface: RowSet
Executes the View Object's query.

Specified by:
executeQuery in interface RowSet

getViewLinkNames

public java.lang.String[] getViewLinkNames()
Description copied from interface: ViewObject
Constructs an array of names of View Links that involve this View Object.

A View Link may use this View Object as either its source or destination. This method should not be overridden.

Specified by:
getViewLinkNames in interface ViewObject
Returns:
the array of View Link names.

clearCache

public void clearCache()
Description copied from interface: ViewObject
Clears the View Object cache. This method can be called for resource conservation. Calling this method marks the View Object and all its Row Sets as "needing to refresh its data". If another method that requires the result set is called (e.g., executeQuery(), next(), previous()) after this method, the query will be executed and the View Object/Row Set's cache refreshed from the database.

Specified by:
clearCache in interface ViewObject

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.

getRowSetIterator

public RowSetIterator getRowSetIterator()

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 #oracle.jbo.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 #oracle.jbo.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 #oracle.jbo.server.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 #oracle.jbo.ScrollEvent will be sent to #oracle.jbo.RowSetListener.rangeScrolled(oracle.jbo.ScrollEvent). To pick up such an event, the listener object must implement the #oracle.jbo.RowSetListener interface. Further, this listener must be registered through a call to #oracle.jbo.NavigatableRowIterator.addListener(Object) (the listener object passed in as the parameter to addListener).

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

Specified by:
next in interface RowIterator
Returns:
the next #oracle.jbo.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 #oracle.jbo.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 #oracle.jbo.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 #oracle.jbo.ScrollEvent will be sent to #oracle.jbo.RowSetListener.rangeScrolled(oracle.jbo.ScrollEvent). To pick up such an event, the listener object must implement the #oracle.jbo.RowSetListener interface. Further, this listener must be registered through a call to #oracle.jbo.NavigatableRowIterator.addListener(Object) (the listener object passed in as the parameter to addListener).

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

Specified by:
previous in interface RowIterator
Returns:
the previous #oracle.jbo.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 #oracle.jbo.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., #oracle.jbo.ScrollEvent and/or #oracle.jbo.NavigationEvent. See RowIterator.next() for details.

Specified by:
first in interface RowIterator
Returns:
the first #oracle.jbo.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 #oracle.jbo.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 #oracle.jbo.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 #oracle.jbo.server.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 #oracle.jbo.ScrollEvent will be sent to #oracle.jbo.RowSetListener.rangeScrolled(oracle.jbo.ScrollEvent). To pick up such an event, the listener object must implement the #oracle.jbo.RowSetListener interface. Further, this listener must be registered through a call to #oracle.jbo.NavigatableRowIterator.addListener(Object) (the listener object passed in as the parameter to addListener).

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

Specified by:
last in interface RowIterator
Returns:
the last #oracle.jbo.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 #oracle.jbo.ScrollEvent to #oracle.jbo.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 #oracle.jbo.RowSetListener interface. Further, this listener must be registered through a call to #oracle.jbo.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.

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.

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.

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 number may fluxuate when the View Object is syncronized with its Entity Object.

Specified by:
getEstimatedRowCount in interface RowSet
Returns:
the number of rows.

getRowFilterValues

public java.lang.Object[] getRowFilterValues()
Specified by:
getRowFilterValues in interface WSRowSetIteratorMarshaller

setRowFilterValues

public void setRowFilterValues(java.lang.Object[] rowFilterValues)
Specified by:
setRowFilterValues in interface WSRowSetIteratorMarshaller

getCliIteratorState

public SvcMsgIteratorState getCliIteratorState()
Specified by:
getCliIteratorState in interface WSRowSetIteratorMarshaller

prepareForBatchMode

public void prepareForBatchMode(SvcMsgIteratorState iteratorState,
                                boolean setCurrentRow)
Specified by:
prepareForBatchMode in interface WSRowSetIteratorMarshaller

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.

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.

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.

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_.

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".

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

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.

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.

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.

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.

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.

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 #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.

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,

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.

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.

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

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 #oracle.jbo.ScrollEvent to be sent to #oracle.jbo.RowSetListener.rangeScrolled(oracle.jbo.ScrollEvent). To pick up such an event, the listener object must implement the #oracle.jbo.RowSetListener interface. Further, this listener must be registered through a call to #oracle.jbo.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 #oracle.jbo.NavigationEvent and sends it to #oracle.jbo.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 #oracle.jbo.ScrollEvent to be sent to #oracle.jbo.RowSetListener.rangeScrolled(oracle.jbo.ScrollEvent). To pick up such an event, the listener object must implement the #oracle.jbo.RowSetListener interface. Further, this listener must be registered through a call to #oracle.jbo.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 #oracle.jbo.NavigationEvent and sends it to #oracle.jbo.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.

getViewObject

public ViewObject getViewObject()
Description copied from interface: RowSet
Gets the View Object that contains 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. See ViewObject.isInternal().

Specified by:
getViewObject in interface RowSet
Returns:
the parent View Object.

setMasterRowSetIterator

public boolean setMasterRowSetIterator(RowSetIterator masterRS)
Description copied from interface: RowSet
Sets the master iterator.

Specified by:
setMasterRowSetIterator in interface RowSet
Parameters:
masterRS - a master Row Set Iterator.
Returns:
true if the operation succeeded.

removeMasterRowSetIterator

public boolean removeMasterRowSetIterator(RowSetIterator masterRS)
Description copied from interface: RowSet
Removes a master Row Set Iterator.

Specified by:
removeMasterRowSetIterator in interface RowSet
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.

addDynamicAttribute

public AttributeDef addDynamicAttribute(java.lang.String attrName)
Description copied from interface: ViewObject
Adds a dynamic attribute (an AttributeDefImpl) to this View Object's row set.

Dynamic attributes are typeless, in that the application can set the attribute value to any object. You can use a dynamic attribute to store information created at runtime that you want to store with the row data. It is used only by the View Object that created it. Attributes can be any Serializable object.

This method should not be overridden.

Specified by:
addDynamicAttribute in interface ViewObject
Parameters:
attrName - the name of the dynamic attribute.
Returns:
the attribute definition the newly added dynamic attribute.

getParent

public java.lang.Object getParent()
Specified by:
getParent in interface ClientComponentObject

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.

addListener

public void addListener(java.lang.Object target)
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:
target - the subscriber to be added. It should implement RowSetListener.

addInternalListener

public void addInternalListener(java.lang.Object target)
Specified by:
addInternalListener in interface InternalListenerManager

removeInternalListener

public void removeInternalListener(java.lang.Object target)
Specified by:
removeInternalListener in interface InternalListenerManager

removeListener

public void removeListener(java.lang.Object target)
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:
target - the subscriber to be removed.

addManagementListener

public void addManagementListener(RowSetManagementListener target)
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:
target - the subscriber to be added. It should implement RowSetManagementListener.

removeManagementListener

public void removeManagementListener(RowSetManagementListener target)
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:
target - the subscriber to be removed.

rangeRefreshed

public void rangeRefreshed(RangeRefreshEvent event)
Description copied from interface: RowSetListener
Invoked when the range changes.

Specified by:
rangeRefreshed in interface RowSetListener
Parameters:
event - a description of the new ranges.

rangeScrolled

public void rangeScrolled(ScrollEvent event)
Description copied from interface: RowSetListener
Invoked when the range is scrolled.

Specified by:
rangeScrolled in interface RowSetListener
Parameters:
event - a description of the new range.

rowInserted

public void rowInserted(InsertEvent event)
Description copied from interface: RowSetListener
Invoked when a row has been inserted.

Specified by:
rowInserted in interface RowSetListener
Parameters:
event - a description of the new Row object.

rowDeleted

public void rowDeleted(DeleteEvent event)
Description copied from interface: RowSetListener
Invoked when a row has been deleted.

Specified by:
rowDeleted in interface RowSetListener
Parameters:
event - a description of the deleted Row object.

rowUpdated

public void rowUpdated(UpdateEvent event)
Description copied from interface: RowSetListener
Invoked when an attribute of the row has been changed.

Specified by:
rowUpdated in interface RowSetListener
Parameters:
event - a description of the modified Row object.

navigated

public void navigated(NavigationEvent event)
Description copied from interface: RowSetListener
Invoked when the current-row designation changes.

Specified by:
navigated in interface RowSetListener
Parameters:
event - a description of the new and previous current rows.

createRowSet

public RowSet createRowSet(java.lang.String name)
Description copied from interface: ViewObject
Creates and returns a new (secondary) Row Ret for this View Object.

Specified by:
createRowSet in interface ViewObject
Parameters:
name - the name for the new RowSet.
Returns:
the new Row Set.

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

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

getRowSets

public RowSet[] getRowSets()
Get all Row Sets that belong to this View Object.

Specified by:
getRowSets in interface ViewObject
Returns:
the array of Row Sets.

findRowSet

public RowSet findRowSet(java.lang.String name)
Description copied from interface: ViewObject
Gets the named Row Set that was created at runtime for this View Object.

Specified by:
findRowSet in interface ViewObject
Parameters:
name - a Row Set name. If null, it returns the the View Object.
Returns:
the Row Set. null if the named Row Set is not not found.

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 name)
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:
name - 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.

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.

isReadOnly

public boolean isReadOnly()
Description copied from interface: ViewObject
Tests if the View Object is read-only.

A view is read-only if it does not have Primary Keys or if all its entity references are reference-only.

This method should not be overridden.

Specified by:
isReadOnly in interface ViewObject
Returns:
true if this View Object is read-only; false if it is updateable.

addViewLink

protected void addViewLink(ViewLink viewLink)

removeViewLink

protected void removeViewLink(ViewLinkImpl viewLink)

getViewLinks

protected ViewLink[] getViewLinks()
Returns:
List of ViewLinkImpl's

getDetailRowSets

public RowSet[] getDetailRowSets()
Get all detail Row Sets for this View Object.

Specified by:
getDetailRowSets in interface RowSetIterator
Returns:
the array of detail Row Sets.

createDetailRowSet

public RowSet createDetailRowSet(java.lang.String voName,
                                 java.lang.String linkDefName)
Create a row set for the view link.

Specified by:
createDetailRowSet in interface RowSetIterator
Parameters:
voName - the name of the new detail Row Set.
linkDefName - 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 detail RowSet object.

createViewCriteria

public ViewCriteria createViewCriteria()
View Criteria factory

Specified by:
createViewCriteria in interface ViewObject
Returns:
the new view criteria object.
See Also:
ViewCriteria, ViewObject.applyViewCriteria(ViewCriteria)

applyViewCriteria

public void applyViewCriteria(ViewCriteria criteria)
Sets the view criteria.

Specified by:
applyViewCriteria in interface ViewObject
Parameters:
criteria - a view criteria object.

getViewCriteria

public ViewCriteria getViewCriteria()
Gets the view criteria.

Specified by:
getViewCriteria in interface ViewObject
Returns:
the view criteria, or null if none is specified.

createKey

public Key createKey(AttributeList nvp)
Given a set of attribute values (name-value pairs), creates a key object for this ViewObject. This method could be used to create the input for the findByPrimaryKey method. If the key cannot be created, this method returns null.

Specified by:
createKey in interface RowIterator
Returns:
the key with ordered attribute list values according to this definition; null if the key cannot be created.

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 #oracle.jbo.server.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()) 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.

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.

getPiggyback

protected byte[] getPiggyback()

getServiceMessage

protected ServiceMessage getServiceMessage()

processPiggyback

protected void processPiggyback(byte[] pb)

processServiceMessage

protected com.sun.java.util.collections.ArrayList processServiceMessage(ServiceMessage svcMsg)

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 isForwardOnly)
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:
isForwardOnly - 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 RowSet.
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:

  • SCROLLABLE - if this RowSet should fetch rows and cache the ViewRows in a collection. This is the most flexible mode for accessing rows and working with a RowSet.
  • FORWARD_ONLY - if this RowSet should only provide sequential access to Rows in its collection. The iterators on this RowSet will not allow scrolling back.
  • RANGE_PAGING - if this RowSet should fetch rows in ranges (set using setRangeSize() - the default range size is -1 to fetch all rows), such that on scroll to the the next range or to fetch a row that's not in the current range, it's fetched back from the database using ROWNUM query and the row at the desired index is placed as the first row in the current range.

    New rows inserted in this mode will be inserted at the beginning of the rowset to maintain their row indices.

    If an attempt is made to get a row outside of the range when a new row is inserted or a row is removed in the current range, then an InvalidOperException is raised as the current set of changes needs to be posted to recalculate the right ROWNUM.

  • RANGE_PAGING_AUTO_POST - if this rowset should also post any changes in this transaction to access a row out of the current range.

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 SCROLLABLE, FORWARD_ONLY, RANGE_PAGING, RANGE_PAGING_AUTO_POST

isAssociationConsistent

public boolean isAssociationConsistent()
Description copied from interface: RowSet
Tests if association-consistent mode is on.

Specified by:
isAssociationConsistent in interface RowSet
Returns:
true if un-posted changes are visible, false otherwise.
See Also:
RowSet.setAssociationConsistent(boolean)

setAssociationConsistent

public void setAssociationConsistent(boolean isConsistent)
Description copied from interface: RowSet
Sets the association-consistent flag for this Row Set.

Association-consistent mode allows the user to see data that includes changes not yet posted to database, but at the cost of degraded performance.

When association-consistency is on the Row Set will reflect rows with modified foreign keys, newly created rows, and removed (deleted) rows. When association-consistency is off the user must post pending changes to database to make them visible.

This method is relevant only if this Row Set was one returned from a call to an entity association accessor.

Specified by:
setAssociationConsistent in interface RowSet

isMaxFetchSizeExceeded

public final 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.

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.

addViewLinkAccessor

public AttributeDef addViewLinkAccessor(java.lang.String accrName)

finalize

protected void finalize()
void addRowCount(Object rowHandle) { Integer entry = (Integer) mRowCount.get(rowHandle); if (entry == null) { mRowCount.put(rowHandle, new Integer(1)); } else { mRowCount.put(rowHandle, new Integer(entry.intValue() + 1)); } } boolean releaseRowCount(Object rowHandle) { Integer entry = (Integer) mRowCount.get(rowHandle); int useCount = entry.intValue(); Diagnostic.ASSERT(entry != null, "Cannot find row use entry for handle = " + ((Integer) rowHandle).intValue()); if (useCount == 1) { mRowCount.remove(rowHandle); return true; } else { mRowCount.put(rowHandle, new Integer(useCount - 1)); return false; } }


findViewLinkAccessor

public AttributeDef findViewLinkAccessor(ViewLink vl)
Description copied from interface: ViewObject
Finds the view link accessor attribute.

Specified by:
findViewLinkAccessor in interface ViewObject
Parameters:
vl - the view link whose accessor is being sought.
Returns:
the attribute definition if one is found. null if not.

getObjectMarshaller

protected ObjectMarshaller getObjectMarshaller()

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(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.

readXML

public void readXML(Element elem,
                    int depthCount)
Specified by:
readXML in interface XMLInterface

writeXML

public Node writeXML(long options,
                     com.sun.java.util.collections.HashMap voAttrMap,
                     XSLStylesheet xslt)
Specified by:
writeXML in interface XMLInterface

writeXML

public Node writeXML(int depthCount,
                     long options,
                     XSLStylesheet xslt)
Specified by:
writeXML in interface XMLInterface

readXML

public void readXML(Element elem,
                    int depthCount,
                    XSLStylesheet xslt)
Specified by:
readXML in interface XMLInterface

readRowXML

public void readRowXML(Element elem,
                       int depthCount)
Description copied from interface: ViewObject
Reads the data in XML form (in the format as generated by writeXML()) by finding a row that matches the key in the given XML and then reading in that row. If the row is not found, it tries to insert that row into this ViewObject with the attribute values from XML.

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.

Specified by:
readRowXML in interface ViewObject

readRowXML

public void readRowXML(Element elem,
                       int depthCount,
                       XSLStylesheet xslt)
Specified by:
readRowXML in interface ViewObject

getMaxFetchSize

public int getMaxFetchSize()
Description copied from interface: ViewObject
Maximum number of rows to fetch for this View Object. This number takes effect in when the query for this ViewObject is executed the next time.

Specified by:
getMaxFetchSize in interface ViewObject

setMaxFetchSize

public void setMaxFetchSize(int max)
Description copied from interface: ViewObject
Maximum number of rows to fetch for this View Object. This number takes effect the next time the query for this View Object is executed.

Passing -1 to this method will retrieve an unlimited number of rows. This is the default.

Passing 0 to this method will cause the database query not to be executed. The View Object will initially work with an empty row set. If you want to execute query later, call setMaxFetchSize again with a non-zero argument, then call executeQuery().

Specified by:
setMaxFetchSize in interface ViewObject

getImplObject

public static oracle.jbo.client.remote.RowSetIteratorImpl getImplObject(java.lang.Object rsi)

setQueryOptimizerHint

public void setQueryOptimizerHint(java.lang.String hintText)
If this ViewObject does not have an expert mode query, then this hint is added to the select clause of the SQL for this ViewObject before the columns are listed e.g., SELECT \/*+ *\/ columns... For expert mode queries, this hint is appended in the outer Select like: SELECT \/*+ *\/ * FROM ()

Specified by:
setQueryOptimizerHint in interface ViewObject

getQueryOptimizerHint

public java.lang.String getQueryOptimizerHint()
Description copied from interface: ViewObject
Returns Query Optimizer Hint set for this ViewObject or for its definition object.

Specified by:
getQueryOptimizerHint in interface ViewObject

getApplicationModuleProxy

protected ApplicationModuleImpl getApplicationModuleProxy()

findAndSetCurrentRowByKey

public void findAndSetCurrentRowByKey(Key k,
                                      int rangeIndex)
Specified by:
findAndSetCurrentRowByKey in interface WSRowSetIteratorMarshaller

getDynamicAttributeOffset

public int getDynamicAttributeOffset()
Specified by:
getDynamicAttributeOffset in interface ViewObjectDynAttr

getDynamicAttributeCount

public int getDynamicAttributeCount()
Specified by:
getDynamicAttributeCount in interface ViewObjectDynAttr

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

 

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