public class WSRowSetImpl extends WSRowSetIteratorBase implements WSRowSet, java.io.Serializable, RowSetListener
mListeners, mMgmtListeners, mNamemVariableOpersMAP_NULL_VALUECOPY_OPT_ALL_ROWS, COPY_OPT_LIMIT_RANGE, FORWARD_ONLY, RANGE_PAGING, RANGE_PAGING_AUTO_POST, RANGE_PAGING_INCR, SCROLLABLEITER_MODE_LAST_PAGE_FULL, ITER_MODE_LAST_PAGE_PARTIAL, SLOT_BEFORE_FIRST, SLOT_BEYOND_LAST, SLOT_DELETED, SLOT_VALIDXML_IGNORE_DEPTH_COUNT, XML_OPT_ALL_ROWS, XML_OPT_ASSOC_CONSISTENT, XML_OPT_CHANGES_ONLY, XML_OPT_LIMIT_RANGE, XML_PASSIVATION_USE| Modifier and Type | Method and Description |
|---|---|
boolean |
cancelQuery()
Cancels a running query.
|
void |
closeRowSet()
Closes the row set.
|
void |
closeRowSetIterator()
Closes this row set iterator.
|
RowSet |
createDetailRowSet(java.lang.String rsName,
java.lang.String linkDefName)
Creates a detail Row Set.
|
RowSetIterator |
createRowSetIterator(java.lang.String name)
Creates an iterator for the row set.
|
RowSet |
deepCopy(java.util.HashMap voAttrMap,
long options)
This method performs a copy of view rows and the Entity
row references of the view rows that belong
to this
RowSet. |
void |
defineNamedWhereClauseParam(java.lang.String name,
java.lang.Object defaultValue,
int[] indices)
Defines a named bind variable to use with the
view object's where-clause.
|
void |
executeEmptyRowSet()
Executes the row set as an empty row set.
|
void |
executeQuery()
Executes the query.
|
void |
executeQuery2(boolean resetCurrency,
boolean force,
boolean emptyRowSet) |
RowSetIterator |
findOrCreateRowSetIterator(java.lang.String name) |
RowSetIterator |
findRowSetIterator(java.lang.String name)
Gets the named row set iterator that was created at runtime for this row set.
|
WSRowSetIteratorImpl |
findWSRowSetIterator(java.lang.String name) |
byte |
getAccessMode() |
AccTravDef |
getAccessorTraversalDef() |
ApplicationModule |
getApplicationModule()
Gets the row set's application module that contains
this row set.
|
long |
getCappedRowCount(long cap) |
long |
getDeferredEstimatedRowCount()
If this ViewObject is marked to not perform the estimatedRowCount query,
then return -1 until either the estimatedRowCount is called and the
count is known or the RowSet is fetched completely in which case the
actual row count is known.
|
RowSet[] |
getDetailRowSets()
Gets an array of detail Row Sets for which this Iterator is the master.
|
long |
getEstimatedRowCount()
Counts the number of rows in the collection defined by the
view object's query.
|
java.lang.Object |
getImplObject() |
int |
getIterMode()
Gets the current iteration mode.
|
RowSetIterator[] |
getMasterRowSetIterators()
Return all controlling masters of this row set.
|
java.lang.Object |
getNamedWhereClauseParam(java.lang.String name)
Gets the value of a named where-clause parameter for this row set.
|
AttributeList |
getNamedWhereClauseParams()
Gets all the Name, value pairs of a named where-clause parameter of the viewObject.
|
WSObject |
getParent() |
java.util.Hashtable |
getProperties()
Gets the table of properties.
|
java.lang.Object |
getProperty(java.lang.String hintName)
Retrieves the specified property, if it exists.
|
java.lang.Object |
getProperty(java.lang.String hintName,
LocaleContext locale) |
int |
getRangePagingCacheFactor() |
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.
|
RowSet |
getRowSet()
Gets the Row Set that this Iterator belongs to.
|
RowSetIterator[] |
getRowSetIterators()
Gets all row set iterators that belong to this row set.
|
java.lang.Object |
getSyncLock()
Gets the locking object for this Row Set Iterator.
|
ViewObject |
getViewObject()
Gets the view object that owns this row set.
|
java.lang.Object[] |
getWhereClauseParams()
Gets the bind variable values to be used with the
view object's where-clause.
|
boolean |
hasAccessorTraversalDef() |
boolean |
isAssociationConsistent()
Returns the flag indicating whether association-consistent mode is on or not.
|
boolean |
isDefaultRowSet()
Internal: Applications should not use this method.
|
boolean |
isExecuted()
Returns true if the current ViewObject's query has been executed for this
row set.
|
boolean |
isExecutedEmpty()
Returns true if the current ViewObject's query has been executed with empty row set.
|
boolean |
isExecuteQuery() |
boolean |
isFetchComplete()
Tests if the query result set has been fetched to the end.
|
boolean |
isForwardOnly()
Tests if the row set is constrained to sequential access.
|
boolean |
isMaxFetchSizeExceeded()
Tests if the query result has been fetched to the end
and the end was reached due to hitting the maxFetchSize
limit
|
boolean |
isOnLine() |
boolean |
isRefreshDataModel() |
boolean |
isRowValidation()
Gets the validation flag on this iterator.
|
void |
markForError(java.lang.Exception ex,
boolean hasImplObject) |
void |
markForExecuteQuery(boolean resetCurrency,
boolean force,
boolean emptyRowSet) |
void |
navigated(NavigationEvent event)
Invoked when the current-row designation changes.
|
void |
rangeRefreshed(RangeRefreshEvent event)
Invoked when the range changes.
|
void |
rangeScrolled(ScrollEvent event)
Invoked when the range is scrolled.
|
void |
readXML(Element elem,
int depthCount) |
void |
readXML(Element elem,
int depthCount,
XSLStylesheet xslt) |
void |
refreshDataModel() |
void |
refreshDataModel2(boolean resetCurrency,
boolean force) |
java.lang.Object |
refreshProperty(java.lang.String hintName)
Retrieves the specified property, if it exists.
|
boolean |
removeMasterRowSetIterator(RowSetIterator masterRSI)
Removes a master row set iterator.
|
void |
removeNamedWhereClauseParam(java.lang.String name)
Removes a named where-clause parameter.
|
void |
requestEstimatedRowCount() |
void |
resetExecuted()
This methods invalidates all the iterators on this rowset and marks the
rowset as not executed.
|
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.
|
void |
setAccessMode(byte mode)
Constrains the row access based on the following settings:
|
void |
setAccessorTraversalByNamePaths(java.lang.String[] namePaths) |
void |
setAccessorTraversalDef(AccTravDef accTravDef) |
void |
setAssociationConsistent(boolean isAssociationConsistent)
Sets the association-consistent flag for this row set.
|
void |
setForwardOnly(boolean isForwardOnly)
Constrains the row set to sequential access.
|
void |
setImplObject(java.lang.Object o) |
void |
setIterMode(int mode)
Sets the iteration mode for this Row Iterator.
|
boolean |
setMasterRowSetIterator(RowSetIterator masterRSI)
Sets the master iterator.
|
void |
setNamedWhereClauseParam(java.lang.String name,
java.lang.Object value)
Sets the value of a named where-clause parameter for this row set.
|
void |
setNamedWhereClauseParams(AttributeList attrlist)
Sets the value of a named where-clause parameters for the entire viewObject.
|
void |
setRangePagingCacheFactor(int f) |
int |
setRangeSize(int size)
Modifies the size of the Row Set Iterator range.
|
int |
setRangeStart(int start)
Moves the Row Set Iterator range.
|
void |
setRowValidation(boolean flag)
Sets the validation flag on this iterator.
|
void |
setWhereClauseParam(int index,
java.lang.Object value)
Specifies a single bind variable value to use with the
view object's where-clause.
|
void |
setWhereClauseParams(java.lang.Object[] values)
Specifies the bind variable values to use with the
view object's where-clause.
|
void |
skipNamedWhereClauseParam(java.lang.String name)
Skips the named where-clause parameter for this row set.
|
Node |
writeXML(int depthCount,
long options)
Renders data in a canonical XML-format.
|
Node |
writeXML(int depthCount,
long options,
XSLStylesheet xslt) |
Node |
writeXML(long options,
java.util.HashMap voAttrMap)
Renders data in a canonical XML-format.
|
Node |
writeXML(long options,
java.util.HashMap voAttrMap,
XSLStylesheet xslt) |
addListener, addManagementListener, createAndInitRow, createKey, createRow, enumerateRowsInRange, findAndSetCurrentRowByKey, findByAltKey, findByEntity, findByKey, findByViewCriteria, first, getAllRowsInRange, getCurrentRow, getCurrentRowIndex, getCurrentRowSlot, getEstimatedRangePageCount, getFetchedRowCount, getFilteredRows, getFilteredRowsInRange, getName, getNextRangeSet, getPreviousRangeSet, getRangeIndexOf, getRow, getRowAtRangeIndex, getRowCount, getRowCountInRange, hasNext, hasPrevious, insertRow, insertRowAtRangeIndex, isConnected, isNameGenerated, isRangeAtBottom, isRangeAtTop, last, next, previous, registerWSListeners, removeCurrentRow, removeCurrentRowAndRetain, removeCurrentRowFromCollection, removeListener, removeManagementListener, reset, scrollToRangePage, setCurrentRow, setCurrentRowAtRangeIndexgetMessageBundleClass, getResourceBundleDefcloseObject, ensureVariableManager, get, getFullName, getId, getImageLoc, getVariableManager, hasVariables, isReadOnly, setNameentrySet, equals, hashCode, internalGet, internalPut, put, setThrowIfPropertyNotFoundOnGetclear, clone, containsKey, containsValue, isEmpty, keySet, putAll, remove, size, toString, valuesfinalize, getClass, notify, notifyAll, wait, wait, waitaddManagementListener, getEstimatedRangePageCount, getFilteredRows, getFilteredRowsInRange, getNextRangeSet, getPreviousRangeSet, isNameGenerated, removeManagementListener, scrollToRangePageaddListener, removeListenercreateAndInitRow, createKey, createRow, enumerateRowsInRange, findByAltKey, findByEntity, findByKey, findByViewCriteria, first, getAllRowsInRange, getCurrentRow, getCurrentRowIndex, getCurrentRowSlot, getFetchedRowCount, getRangeIndexOf, getRow, getRowAtRangeIndex, getRowCount, getRowCountInRange, hasNext, hasPrevious, insertRow, insertRowAtRangeIndex, isRangeAtBottom, isRangeAtTop, last, next, previous, removeCurrentRow, removeCurrentRowAndRetain, removeCurrentRowFromCollection, reset, setCurrentRow, setCurrentRowAtRangeIndexensureVariableManager, getMessageBundleClass, getResourceBundleDef, getVariableManager, hasVariablespublic boolean isOnLine()
public void setAccessorTraversalByNamePaths(java.lang.String[] namePaths)
setAccessorTraversalByNamePaths in interface WSRowSetpublic AccTravDef getAccessorTraversalDef()
getAccessorTraversalDef in interface WSRowSetpublic void setAccessorTraversalDef(AccTravDef accTravDef)
setAccessorTraversalDef in interface WSRowSetpublic boolean hasAccessorTraversalDef()
hasAccessorTraversalDef in interface WSRowSetpublic java.lang.Object getImplObject()
getImplObject in class WSObjectpublic void setImplObject(java.lang.Object o)
setImplObject in class WSObjectpublic void markForError(java.lang.Exception ex,
boolean hasImplObject)
markForError in class WSObjectpublic boolean isDefaultRowSet()
isDefaultRowSet in interface RowSetpublic boolean setMasterRowSetIterator(RowSetIterator masterRSI)
RowSetsetMasterRowSetIterator in interface RowSetmasterRSI - the new master row set iterator for this row set.true if the operation succeeded.public ViewObject getViewObject()
RowSet
If this row set is the result of calling a view link accessor,
the returned view object is an internal view object.
indicates whether
the view object is internal or not. Even if a view link is
defined between the master and detail view object, and even
if an instance of them are included in the application module's
data model, calling the view link by default uses a separate
view object instance from the one in the AM's data model.
To access the view link accessor's ViewObject, use the following
code snippet (assuming that the detail side is called "MyDetail"):
ViewObject.isInternal()
RowSet detailRS = (RowSet) masterViewRow.getMyDetail();
ViewObject detailVO = detailRS.getViewObject();
getViewObject in interface RowSetpublic void setWhereClauseParams(java.lang.Object[] values)
RowSet
Setting the where-clause bind values through this method
does not automatically execute the query. You must call
to apply the new bind
values.
RowSet.executeQuery()
setWhereClauseParams in interface RowSetvalues - 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.public void setWhereClauseParam(int index,
java.lang.Object value)
RowSet
Setting the where-clause bind values through this method
does not automatically execute the query. You must call
to apply the new bind
values.
RowSet.executeQuery()
setWhereClauseParam in interface RowSetindex - 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.public void defineNamedWhereClauseParam(java.lang.String name,
java.lang.Object defaultValue,
int[] indices)
RowSetThis named where-clause parameter will be defined as a variable on the view object. That is, if a named where-clause parameter is defined through one row set, all other row sets that belongs to the same parent view object will "see" that parameter.
Through the defaultValue, one can specify the
default value for this where-clause parameter. If no
default value is supplied, null will be used
as the parameter value.
The indices parameter specifies where-clause
parameter indices into which this named parameter will be
bound. The same value can be bound into multiple indices.
For example, if { 1, 2 } is specified for
indices, the value will be bound for where-clause
parameter indices of 1 and 2. I.e., this parameter will produce
setWhereClauseParam(1, value) and
setWhereClauseParam(2, value).
This method can be invoked to redefine an existing named where-clause paramter (to change the default value and the indices) only if the named parameter is found on the view object. If the named parameter/variable is found on one of the parent objects, a new where-clause parameter definition is still added to the view object.
When redefining, a check is made to ensure that the existing variable
has no kind specification (null) or is of the
"where" kind (which means that the existing variable
is a where-clause parameter). If not, an InvalidParamException
is thrown.
Defining a named where-clause parameter
does not automatically execute the query. You must call
to apply the new bind
value.
RowSet.executeQuery()
defineNamedWhereClauseParam in interface RowSetname - the name of the where-clause parameter.defaultValue - specifies the default value for this where-clause
parameter. This default value can be overridden
through a call to setNamedWhereClauseParam().indices - where-clause indices into which this parameter value should
be bound. See above.public void removeNamedWhereClauseParam(java.lang.String name)
RowSet
This method removes previously defined named where-clause parameter.
A check is made to ensure that the variable being removed is a
where-clause parameter (variable kind = "where"). If not,
an InvalidParamException is thrown.
If the named where-clause parameter is found but it does not belong to the view object
that owns this row set, an InvalidOperException is thrown.
This means one is disallowed from removing a named where-clause parameter
that belongs to the View definition, for example.
Removing a named where-clause parameter
does not automatically execute the query. You must call
for the removal to take
effect.
RowSet.executeQuery()
removeNamedWhereClauseParam in interface RowSetname - the name of the where-clause parameter to remove.public java.lang.Object getNamedWhereClauseParam(java.lang.String name)
RowSetIf the view object owns multiple row sets, each row set may have its own (different) named where-clause parameter value.
getNamedWhereClauseParam in interface RowSetname - the name of the where-clause parameter.public void setNamedWhereClauseParams(AttributeList attrlist)
RowSet
Setting a named where-clause parameter
does not automatically execute the query. You must call
to apply the new bind
value.
RowSet.executeQuery()
setNamedWhereClauseParams in interface RowSetattrlist - is a Name, value pair of bind variables.public AttributeList getNamedWhereClauseParams()
RowSetIt uses the method getNamedWhereClauseParam to return all the name,value pairs from VariableValueManager.
getNamedWhereClauseParams in interface RowSetpublic void setNamedWhereClauseParam(java.lang.String name,
java.lang.Object value)
RowSetIf the view object owns multiple row sets, each row set may have its own (different) named where-clause parameter value.
Setting a named where-clause parameter
does not automatically execute the query. You must call
to apply the new bind
value.
RowSet.executeQuery()
setNamedWhereClauseParam in interface RowSetname - the name of the where-clause parameter.value - the where-clause parameter value for this row set.public void skipNamedWhereClauseParam(java.lang.String name)
RowSet
Skipping a named where-clause parameter
does not automatically execute the query. You must call
for the skip to take
effect.
RowSet.executeQuery()
skipNamedWhereClauseParam in interface RowSetname - the name of the where-clause parameter.public java.lang.Object[] getWhereClauseParams()
RowSetgetWhereClauseParams in interface RowSetpublic void executeQuery()
RowSet
This method does not necessarily retrieve data. The View Object's
fetch mode determines whether the rows are retrieved immediately
or not. If FETCH_AS_NEEDED is specified, the ResultSet
is left open, and the rows are retrieved as the user navigates through
the row set.
Calling this method will ensure that the user will see the latest data from the database, as well as the data changes that the user has made in the current transaction.
If the user changes the SQL statement, or modifies attributes used by it, view rows that were visible may "disappear" after this method is invoked, and the new WHERE clause takes effect.
When a row set is first instantiated and the application calls a navigational method such as, next(), previous(), first(), or last(), this method is implicitly called.
Upon successful execution of the query, this method fires a
RangeRefreshEvent event to RowSetListener's
registered with this object, by calling
RowSetListener.rangeRefreshed().
executeQuery in interface RowSetpublic void executeEmptyRowSet()
RowSetexecuteEmptyRowSet in interface RowSetpublic void executeQuery2(boolean resetCurrency,
boolean force,
boolean emptyRowSet)
executeQuery2 in interface WSRowSetpublic void markForExecuteQuery(boolean resetCurrency,
boolean force,
boolean emptyRowSet)
public boolean cancelQuery()
RowSetcancelQuery in interface RowSetfalse if the JDBC statement is not executing a query.public boolean isExecuteQuery()
isExecuteQuery in interface WSRowSetpublic boolean isRefreshDataModel()
isRefreshDataModel in interface WSRowSetpublic void refreshDataModel()
refreshDataModel in interface WSRowSetpublic void refreshDataModel2(boolean resetCurrency,
boolean force)
refreshDataModel2 in interface WSRowSetpublic boolean isExecuted()
RowSetisExecuted in interface RowSettrue if query has been executed.public boolean isExecutedEmpty()
RowSetisExecutedEmpty in interface RowSettrue if query has been executed with empty row set.public RowSetIterator createRowSetIterator(java.lang.String name)
RowSetcreateRowSetIterator in interface RowSetname - the name to be given to the iterator.this.public RowSetIterator[] getRowSetIterators()
RowSetgetRowSetIterators in interface RowSetpublic RowSetIterator findRowSetIterator(java.lang.String name)
RowSetfindRowSetIterator in interface RowSetname - a row set iterator name. If null, it returns the
the row set.null if the named row set iterator is not
not found.public RowSetIterator findOrCreateRowSetIterator(java.lang.String name)
findOrCreateRowSetIterator in interface WSRowSetpublic WSRowSetIteratorImpl findWSRowSetIterator(java.lang.String name)
public boolean removeMasterRowSetIterator(RowSetIterator masterRSI)
RowSetremoveMasterRowSetIterator in interface RowSetmasterRSI - the iterator to be removed.true if masterRS was found,
false otherwise.public RowSetIterator[] getMasterRowSetIterators()
RowSetgetMasterRowSetIterators in interface RowSetpublic ApplicationModule getApplicationModule()
RowSetStrictly 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 ).
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.
ViewObject.isInternal()
getApplicationModule in interface RowSetApplicationModule to which this row set belongs.public void requestEstimatedRowCount()
requestEstimatedRowCount in interface WSRowSetpublic long getEstimatedRowCount()
RowSetThis method uses a "SELECT COUNT(1) FROM (<query-statement>)" query to obtained the initial count. After that, changes to row count (such as insertion and deletion of rows) is kept up to date.
However, since the row counting query and the query to retrieve
actual rows are issued at two different times, it is possible for
the accurate count to change between these two points.
This is why this method is named getEstimatedRowCount().
getEstimatedRowCount in interface RowSetpublic long getDeferredEstimatedRowCount()
RowSetgetDeferredEstimatedRowCount in interface RowSetpublic long getCappedRowCount(long cap)
getCappedRowCount in interface RowSetpublic boolean isForwardOnly()
RowSetisForwardOnly in interface RowSettrue if the row set is restricted to forward-only processing.RowSet.setForwardOnly(boolean)public void setForwardOnly(boolean isForwardOnly)
RowSet
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.
setForwardOnly in interface RowSetisForwardOnly - true restricts the row set to forward-only processing,
false otherwise.public byte getAccessMode()
getAccessMode in interface RowSetRowSet.setAccessMode(byte)public void setAccessMode(byte mode)
RowSetSwitching 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.
setAccessMode in interface RowSetmode - One of the four enumerated values RowSet.SCROLLABLE,
RowSet.FORWARD_ONLY, RowSet.RANGE_PAGING,
RowSet.RANGE_PAGING_AUTO_POST.public int getRangePagingCacheFactor()
getRangePagingCacheFactor in interface RowSetpublic void setRangePagingCacheFactor(int f)
setRangePagingCacheFactor in interface RowSetpublic void setAssociationConsistent(boolean isAssociationConsistent)
RowSetAssociation-consistent mode allows the user to see new rows created/inserted through another view object. Note that this mode is effective only for view objects that are entity based. If the view object has no entity base, this mode has no effect.
Suppose we have an entity named E. Suppose two view objects, V1 and V2 are based on E. (V1 and V2 do not have to come from the same view definition.) Suppose the user creates a new row through V1. This creates an instance of E as well. The new entity row is registered only when its primary key is attribute set. At this time, an event is sent out to all view objects based on E, i.e., V1 and V2.
When V2 receives this event, it enumerates through all its
collections (essentially its row sets--strictly speaking its
query collections) looking for those whose
isAssociationConsistent() value is true.
For each row set whose flag value is true (say R2), it checks to see
if it has any view row mapped to the new entity row. If
not, it create a new view row and maps it to the new entity row.
A rowInserted event fires.
Thus, from the user's view point, R2 is "seeing" the new row,
although the row has not yet been posted to database. Hence,
setting this flag to true enables the user to
see new rows before the row is posted/queried when the view
object is entity based.
If flag is false or if the view object is not entity based,
the user needs to post the new row through
and requery
the row set through Transaction.postChanges()
to see the new row.
RowSet.executeQuery()
The default value for this flag can be globally controlled
through the jbo.viewlink.consistent property.
Its value can be true, false, or
DEFAULT. If the property is not specified,
the default value is DEFAULT.
A similar property jbo.assoc.consistent controls
whether the new-row-appearing behavior should be supported
for row sets returned from entity association accessor calls.
For jbo.assoc.consistent, supported values are
true or false.
If the property value is set to true, all
row sets will have true for its initial
isAssociationConsistent() value.
If the property value is set to false, all
row sets will have false for its initial value.
If the property value is set to DEFAULT (which
is the default), the view object will use the following logic
to compute its initial isAssociationConsistent() value:
if the view object has multiple entity bases that are updateable,
then the initial value is false. If the view object
has a where-clause, then the initial value is false.
Otherwise, it is true.
Once this method is called to set the flag value manually, neither the property setting nor the view object's initial flag value has an effect.
setAssociationConsistent in interface RowSetisAssociationConsistent - indicates whether association-consistency
should be on or not.public boolean isAssociationConsistent()
RowSetisAssociationConsistent in interface RowSettrue if un-posted new rows are to appear,
false otherwise. This flag has no effect if
the view object is not entity based.RowSet.setAssociationConsistent(boolean)public void closeRowSet()
RowSetcloseRowSet removes
this row set from the master row set iterator.closeRowSet in interface RowSetpublic boolean isFetchComplete()
RowSetisFetchComplete in interface RowSettrue if the result set has been
fetched to the end.public boolean isMaxFetchSizeExceeded()
RowSetisMaxFetchSizeExceeded in interface RowSettrue if the result set has been
fetched to the maxFetchSize limit and there
are still more rows in the database.public java.lang.Object getProperty(java.lang.String hintName)
PropertiesgetProperty in interface PropertieshintName - Property name.null.public java.lang.Object getProperty(java.lang.String hintName,
LocaleContext locale)
getProperty in interface Propertiespublic java.lang.Object refreshProperty(java.lang.String hintName)
PropertiesgetProperty.refreshProperty in interface PropertieshintName - Property name.null.public java.util.Hashtable getProperties()
PropertiesgetProperties in interface Propertiespublic Node writeXML(int depthCount, long options)
XMLInterfaceViewObjectImpl 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:
EntityImpl. writeXML in interface XMLInterfacedepthCount - represents to what level the rendering should recurse.options - a set of bit flags that will control the writeXML
behavior.public Node writeXML(int depthCount, long options, XSLStylesheet xslt)
writeXML in interface XMLInterfacepublic void readXML(Element elem, int depthCount)
readXML in interface XMLInterfacepublic void readXML(Element elem, int depthCount, XSLStylesheet xslt)
readXML in interface XMLInterfacepublic Node writeXML(long options, java.util.HashMap voAttrMap)
XMLInterfaceViewObjectImpl 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:
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.
writeXML in interface XMLInterfaceoptions - a set of bit flags that will control the writeXMLvoAttrMap - HashMap containing Definition names of ViewObjects and an
array of AttributeDef to render for a ViewObject of that definition type.public Node writeXML(long options, java.util.HashMap voAttrMap, XSLStylesheet xslt)
writeXML in interface XMLInterfacepublic RowSet getRowSet()
RowSetIteratorgetRowSet in interface RowSetIteratorgetRowSet in class WSRowSetIteratorBasepublic RowSet[] getDetailRowSets()
RowSetIteratorIn a master-detail relationship in an Application Module, the master in reality is a Row Set Iterator. (Though we often speak of master View Object, in reality, it is the Iterator behind the View Object which is playing the role of the master). Whenever the currency of this master Iterator moves, the detail Row Sets are re-executed to show related Rows.
Calling this method returns an array of Row Sets that are related to this Iterator as detail Row Sets.
getDetailRowSets in interface RowSetIteratorgetDetailRowSets in class WSRowSetIteratorBaseRowSet.public RowSet createDetailRowSet(java.lang.String rsName, java.lang.String linkDefName)
RowSetIteratorRowSetIterator.getDetailRowSets()
for explanation of detail Row Sets.
This method creates a new detail Row Set for this Iterator.
createDetailRowSet in interface RowSetIteratorcreateDetailRowSet in class WSRowSetIteratorBasersName - 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).public void closeRowSetIterator()
RowSetIteratorcloseRowSetIterator
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.
closeRowSetIterator in interface RowSetIteratorcloseRowSetIterator in class WSRowSetIteratorBasepublic java.lang.Object getSyncLock()
RowSetIteratorApplicationModule.getSyncLock()
for details.getSyncLock in interface RowSetIteratorgetSyncLock in class WSRowSetIteratorBasepublic int setRangeSize(int size)
RowIteratorThis method takes effect when the next set of data is fetched. For an example usage of setRangeSize, see setRangeStart.
setRangeSize in interface RowIteratorsetRangeSize in class WSRowSetIteratorBasesize - the new number of rows in the iterator range. Size of
0 is treated same as 1. Size < -1 is treated same as -1.RowIterator.setRangeStart(int)public int getRangeSize()
RowIteratorgetRangeSize in interface RowIteratorgetRangeSize in class WSRowSetIteratorBasepublic int getRangeStart()
RowIteratorThe absolute index is 0-based, and is the row's index relative to the entire result set.
getRangeStart in interface RowIteratorgetRangeStart in class WSRowSetIteratorBasepublic int setRangeStart(int start)
RowIteratorNote 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).
setRangeStart in interface RowIteratorsetRangeStart in class WSRowSetIteratorBasestart - the absolute index of the new first row in the Row Set Iterator range.public int scrollRange(int amount)
RowIteratorscrollRange in interface RowIteratorscrollRange in class WSRowSetIteratorBaseamount - the number of rows to scroll.
A negative value scrolls upward.public int scrollRangeTo(Row row, int index)
RowIteratorscrollRangeTo in interface RowIteratorscrollRangeTo in class WSRowSetIteratorBaserow - the row.index - the range index at which the row is to be found.public void setRowValidation(boolean flag)
RowIteratorsetRowValidation in interface RowIteratorsetRowValidation in class WSRowSetIteratorBaseflag - Whether to turn row validation off or not.public boolean isRowValidation()
RowIteratorisRowValidation in interface RowIteratorisRowValidation in class WSRowSetIteratorBasepublic int getIterMode()
RowIteratorgetIterMode in interface RowIteratorgetIterMode in class WSRowSetIteratorBasepublic void setIterMode(int mode)
RowIteratorsetIterMode in interface RowIteratorsetIterMode in class WSRowSetIteratorBasemode - 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".public void rangeRefreshed(RangeRefreshEvent event)
RowSetListenerrangeRefreshed in interface RowSetListenerevent - a description of the new ranges.public void rangeScrolled(ScrollEvent event)
RowSetListenerrangeScrolled in interface RowSetListenerevent - a description of the new range.public void rowInserted(InsertEvent event)
RowSetListenerrowInserted in interface RowSetListenerevent - a description of the new Row object.public void rowDeleted(DeleteEvent event)
RowSetListenerrowDeleted in interface RowSetListenerevent - a description of the deleted Row object.public void rowUpdated(UpdateEvent event)
RowSetListenerrowUpdated in interface RowSetListenerevent - a description of the modified Row object.public void navigated(NavigationEvent event)
RowSetListenernavigated in interface RowNavigationListenernavigated in interface RowSetListenerevent - a description of the new and previous current rows.public RowSet deepCopy(java.util.HashMap voAttrMap, long options)
RowSetRowSet. To avoid unique key constraint
violations, the values of the key attributes are not copied.
voAttrMap attribute could be used to
specify a subset of the attributes that need to be copied.
The map consists of name value pairs of the view object name
and its attributes.
By including the name of the Accessor in the voAttrMap
as a key, deep copy could be used to copy rows obtained by
traversing the view links.
Example 1: Deep copy a OrderLine RowSet copying attributes value of Item ID, Order ID and Description of a OrderLine view row.
voOrderLine = myAM.findViewObject("OrderLine");
attrFilter = new HashMap();
filterAttrDefs = new ArrayList();
filterAttrDefs.add("ItemID");
filterAttrDefs.add("OrderID");
filterAttrDefs.add("Description");
attrFilter.put(voOrderLine.getDefFullName(),
(String[]) filterAttrDefs.toArray(new String[filterAttrDefs.size()]));
RowSet rsOrderLinesCopy = rsOrderLines.deepCopy(attrFilter, RowSet.COPY_OPT_ALL_ROWS);
Row API could be used to set the primary keys
on the newly created rows and eventually the transaction commit
would insert the rows in the database.
Example 2: Deep copy a set of Orders and their Lines. Copy the Customer attribute from an Order and Item ID, Description from Order Lines.
voOrder = myAM.findViewObject("Order");
voOrderLine = myAM.findViewObject("OrderLine");
attrFilter = new HashMap();
filterAttrDefs = new ArrayList();
filterAttrDefs.add("Customer");
// The name of the Order Line Accessor
filterAttrDefs.add("Lines");
attrFilter.put(voOrder.getDefFullName(),
(String[]) filterAttrDefs.toArray(new String[filterAttrDefs.size()]));
filterAttrDefs = new ArrayList();
filterAttrDefs.add("ItemID");
filterAttrDefs.add("Description");
attrFilter.put(voOrderLine.getDefFullName(),
(String[]) filterAttrDefs.toArray(new String[filterAttrDefs.size()]));
RowSet rsCopy = rs.deepCopy(attrFilter, RowSet.COPY_OPT_ALL_ROWS);
For each Order row in the copied rowset the accessor could be used to get its
Order Lines. If there is Cascade update set on the association, setting the Order number
on an Order row would update the foreign key in its Order Line rows.deepCopy in interface RowSetvoAttrMap - a name value pair of a View Object name and an array of its
AttributeDef objects or an array of attribute names.
A null value for this parameter results in copying
all the non-key attribute values of this RowSet.
View Links are not traversed for a null value.options - valid values are RowSet.COPY_OPT_ALL_ROWS and RowSet.COPY_OPT_LIMIT_RANGE.RowSetpublic void resetExecuted()
RowSetresetExecuted in interface RowSet