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

## oracle.jbo.server
Class RowImpl

`java.lang.Object
oracle.jbo.server.RowImpl`

All Implemented Interfaces:
  AttributeList, Row, XMLInterface

Direct Known Subclasses:
  EntityImpl, ViewRowImpl

public abstract class RowImpl
extends java.lang.Object
implements Row

Base class for Entity Rows and View Object Rows. This class defines common methods for Entity Row and View Object Row access. Customer application logic can use this class to access database table rows independently of the implementation of the underlying row. For example, assume that a customer application is written to perform batch style inserts into a database table. This application may reference the `RowImpl` class for row access instead of accessing instances of `ViewRowImpl` or `EntityImpl` directly. This design would allow changes in a row's implementation (Entity Row or View Object Row) without necessitating changes in the application logic.

Unlike the `Row` interface which provides tier-independent access to database table rows, this class can only be referenced by logic that executes on an application's middle tier.

Customers should not develop implementations of this abstract class. Instead, customers who need to extend/override Row behavior should extend one of the concrete Row classes: `EntityImpl` and `ViewRowImpl`.

Since:
  JDeveloper 3.0
See Also:
  `ViewRowImpl`, `EntityImpl`, `Row`

Field Summary

Fields inherited from interface oracle.jbo.Row
`REFRESH_CONTAINEES, REFRESH_FORGET_NEW_ROWS, REFRESH_REMOVE_NEW_ROWS, REFRESH_UNDO_CHANGES, REFRESH_WITH_DB_FORGET_CHANGES, REFRESH_WITH_DB_ONLY_IF_UNCHANGED, STATUS_INITIALIZED, STATUS_NEW`

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
`RowImpl()`

Method Summary
`protected void` | `clearAllExceptions()`
`protected void` | `clearAttributeException(int index)` Cleans any exception of an attribute of the given name was set earlier and threw an exception which was cached as the transaction is in deferred mode.
`protected void` | `clearAttributeException(java.lang.String name)` Cleans any exception of an attribute of the given name was set earlier and threw an exception which was cached as the transaction is in deferred mode.
`protected void` | `clearRowExceptions()`
`java.lang.String` | `createXMLDefinition(int depthCount)` Creates a StringWriter and calls `printXMLDefinition` to generate proper DTD for this row and all containees (if `depthCount` > 0)
`protected int` | `findAttrAndGetIndex(java.lang.String name)`
`protected com.sun.java.util.collections.ArrayList` | `getAllExceptions()`
`abstract int` | `getAttributeCount()` Counts the attributes in this row.
`abstract int` | `getAttributeIndexOf(java.lang.String name)` Finds the index of a named attribute.
`protected abstract java.lang.Object` | `getAttributeInternal(int index)` Gets the attribute value by index.
`protected java.lang.Object` | `getAttributeInternal(java.lang.String name)` Gets the attribute value by name.
`abstract Key` | `getKey()` Returns the row's key.
`protected com.sun.java.util.collections.ArrayList` | `getRowExceptions()`
`abstract StructureDef` | `getStructureDef()` Returns the structure of the row.
`protected boolean` | `hasAttributeException(int index)` Returns true if an attribute at the given index was set earlier and threw an exception which was cached as the transaction is in deferred mode.
`protected boolean` | `hasAttributeException(java.lang.String name)` Returns true if an attribute of the given name was set earlier and threw an exception which was cached as the transaction is in deferred mode.
`boolean` | `hasDeferredExceptions()`
`abstract boolean` | `isAttributeUpdateable(int index)` Tests if an attribute is updateable.
`abstract boolean` | `isDead()` An attempt to access a dead view row will lead to a DeadViewRowAccessException.
`abstract void` | `lock()` Locks the row(s) in the database table.
`protected abstract void` | `populateAttribute(int index, java.lang.Object value)`
`protected java.lang.String` | `printXMLDefinition(java.util.Hashtable allDefs, java.io.PrintWriter pw, int depthCount)` Prints DTD for this row and all its contents (including contained RowSets if depthCount is non-zero).
`abstract void` | `readXML(Element elem, int depthCount)` Reads the content of the row and updates the attributes, from given XML document.
`void` | `readXML(Element elem, int depthCount, XSLStylesheet xslt)` Given the document interface, finds the rowset Element and invokes `JboXMLUtil.processAndReadXML(XMLInterface, org.w3c.dom.Element, int, oracle.xml.parser.v2.XSLStylesheet)` to read in the data from the XML.
`protected abstract void` | `registerAttributeException(AttributeDef attrDef, java.lang.Object val, JboException ex)`
`protected void` | `registerRowException(JboException e)`
`abstract void` | `remove()` Marks the row as removed and removes it from row iterators.
`protected abstract void` | `setAttributeInternal(int index, java.lang.Object value)` Sets the attribute value by index after performing declarative attribute-level validations.
`protected void` | `setAttributeInternal(java.lang.String name, java.lang.Object value)` Sets the attribute value by name.
`abstract void` | `setNewRowState(byte state)` Sets a new unposted row, created in this transaction, to either STATUS_NEW or STATUS_INITIALIZED mode.
`abstract void` | `validate()` Invokes the `validate` method for the validators attached to this business object.
`Node` | `writeXML(int depthCount, long options)` Writes this row as XML in the given XML document.
`Node` | `writeXML(int depthCount, long options, XSLStylesheet xslt)` Writes this row as XML in the given XML document, according to the specified XSLT stylesheet.
`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 java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Methods inherited from interface oracle.jbo.Row
`refresh, removeAndRetain, removeFromCollection`

Methods inherited from interface oracle.jbo.AttributeList
`getAttribute, getAttribute, getAttributeNames, getAttributeValues, setAttribute, setAttribute`

Constructor Detail

### RowImpl

    public RowImpl()

Method Detail

### getAttributeInternal

    protected abstract java.lang.Object getAttributeInternal(int index)

  Gets the attribute value by index.
  Parameters:
    `index` - attribute index
  Returns:
    attribute value

### findAttrAndGetIndex

    protected int findAttrAndGetIndex(java.lang.String name)

### getAttributeInternal

    protected final java.lang.Object getAttributeInternal(java.lang.String name)

  Gets the attribute value by name. For example:

        Date startDate;
        startDate = (Date)getAttributeInternal(HIREDATE);

  This method throws a `JboException` if an attribute of the given name is not found.

  Parameters:
    `name` - attribute name
  Returns:
    attribute value
  Throws:
    `JboException` - if the attribute is not found.

### setAttributeInternal

    protected abstract void setAttributeInternal(int index,
                                                 java.lang.Object value)

  Sets the attribute value by index after performing declarative attribute-level validations.

  This method is used by code-gen facility in accessors for entity attributes.

  Parameters:
    `index` - attribute index
    `value` - attribute value

### setAttributeInternal

    protected final void setAttributeInternal(java.lang.String name,
                                              java.lang.Object value)

  Sets the attribute value by name. This method invokes `getAttributeIndexOf` as:

       setAttributeInternal(getAttributeIndexOf(name), value);

  to get the name corresponding to the index, then set the value.

  This method is used by the code generation facility in accessors for `ViewRow` attributes.

  Parameters:
    `name` - column name.
    `value` - column data.
  See Also:
    `getAttributeIndexOf(java.lang.String)`

### lock

    public abstract void lock()

  Description copied from interface: `Row`
  Locks the row(s) in the database table.

  For a View row, this method calls `lock()` on each Entity row that makes up the View row.

  Specified by:
    `lock` in interface `Row`

### getAttributeCount

    public abstract int getAttributeCount()

  Counts the attributes in this row.
  Specified by:
    `getAttributeCount` in interface `AttributeList`
  Returns:
    the number of attributes.

### getAttributeIndexOf

    public abstract int getAttributeIndexOf(java.lang.String name)

  Finds the index of a named attribute.
  Specified by:
    `getAttributeIndexOf` in interface `AttributeList`
  Parameters:
    `name` - an attribute name.
  Returns:
    the index of `name`, or `-1` if not found.

### populateAttribute

    protected abstract void populateAttribute(int index,
                                              java.lang.Object value)

### isAttributeUpdateable

    public abstract boolean isAttributeUpdateable(int index)

  Tests if an attribute is updateable.
  Specified by:
    `isAttributeUpdateable` in interface `Row`
  Parameters:
    `index` - the index of the attribute.
  Returns:
    `true` if the row is marked `UPDATEABLE`, or if the row is marked `UPDATEABLE_WHILE_NEW` and the current row is new.

### getKey

    public abstract Key getKey()

  Description copied from interface: `Row`
  Returns the row's key.
  Specified by:
    `getKey` in interface `Row`
  Returns:
    the row's Key.

### validate

    public abstract void validate()

  Invokes the `validate` method for the validators attached to this business object.
  Specified by:
    `validate` in interface `Row`
  See Also:
    `EntityImpl.validate()`, `ViewRowImpl.validate()`

### remove

    public abstract void remove()

  Marks the row as removed and removes it from row iterators.
  Specified by:
    `remove` in interface `Row`

### createXMLDefinition

    public final java.lang.String createXMLDefinition(int depthCount)

  Creates a StringWriter and calls `printXMLDefinition` to generate proper DTD for this row and all containees (if `depthCount` > 0)
  Parameters:
    `depthCount` - the number of child levels deep to include in the definitions.

### writeXML

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

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

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

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

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

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

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

### writeXML

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

  Specified by:
    `writeXML` in interface `XMLInterface`

### writeXML

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

  Writes this row as XML in the given XML document, according to the specified XSLT stylesheet.
  Specified by:
    `writeXML` in interface `XMLInterface`
  Parameters:
    `depthCount` - the number of child levels deep to append the row nodes.
    `options` - a set of bit flags that will control the writeXML behavior.
    `xslt` - name of the XSLT stylesheet.

### writeXML

    public final Node writeXML(int depthCount,
                               long options)

  Writes this row as XML in the given XML document.
  Specified by:
    `writeXML` in interface `XMLInterface`
  Parameters:
    `depthCount` - the number of child levels deep to append the row nodes.
    `options` - a set of bit flags that will control the writeXML behavior.

### readXML

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

  Given the document interface, finds the rowset Element and invokes `JboXMLUtil.processAndReadXML(XMLInterface, org.w3c.dom.Element, int, oracle.xml.parser.v2.XSLStylesheet)` to read in the data from the XML.

  Note that if the XML contains modifications to row-keys, other RowSets for this object may not pick those changes up unless the rows are posted to the database. Call `Transaction.postChanges()` to sync up all RowSets.

  Specified by:
    `readXML` in interface `XMLInterface`
  Parameters:
    `elem` - name of the XML element.
    `depthCount` - the number of child levels deep to which data should be read.
    `xslt` - name of the XSLT stylesheet.

### readXML

    public abstract void readXML(Element elem,
                                 int depthCount)

  Reads the content of the row and updates the attributes, from given XML document. If the xml node for the row has an attribute like bc4j-action="remove" then this method calls `remove()` on this row.
  Specified by:
    `readXML` in interface `XMLInterface`
  Parameters:
    `elem` - name of the XML element.
    `depthCount` - the number of child levels deep to which data should be read.

### printXMLDefinition

    protected java.lang.String printXMLDefinition(java.util.Hashtable allDefs,
                                                  java.io.PrintWriter pw,
                                                  int depthCount)

  Prints DTD for this row and all its contents (including contained RowSets if depthCount is non-zero). Returns the XML-tag for this row to be included in the rowset's declaration. Can be overridden to print a custom DTD.
  Parameters:
    `allDefs` - a hashtable of predefined XML definitions passed from whatever calls this method.
    `pw` - print writer into which the defnition is being printed.
    `depthCount` - the number of child levels for which the DTD definition should be generated.

### clearAttributeException

    protected void clearAttributeException(java.lang.String name)

  Cleans any exception of an attribute of the given name was set earlier and threw an exception which was cached as the transaction is in deferred mode.

### clearAttributeException

    protected void clearAttributeException(int index)

  Cleans any exception of an attribute of the given name was set earlier and threw an exception which was cached as the transaction is in deferred mode.

### hasAttributeException

    protected boolean hasAttributeException(java.lang.String name)

  Returns true if an attribute of the given name was set earlier and threw an exception which was cached as the transaction is in deferred mode.

### hasAttributeException

    protected boolean hasAttributeException(int index)

  Returns true if an attribute at the given index was set earlier and threw an exception which was cached as the transaction is in deferred mode.

### hasDeferredExceptions

    public boolean hasDeferredExceptions()

### isDead

    public abstract boolean isDead()

  Description copied from interface: `Row`
  An attempt to access a dead view row will lead to a DeadViewRowAccessException. Using this API method, client code can test the row state.
  Specified by:
    `isDead` in interface `Row`
  Returns:
    `true` if the row is dead.

### getAllExceptions

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

### clearAllExceptions

    protected void clearAllExceptions()

### registerAttributeException

    protected abstract void registerAttributeException(AttributeDef attrDef,
                                                       java.lang.Object val,
                                                       JboException ex)

### registerRowException

    protected void registerRowException(JboException e)

### clearRowExceptions

    protected void clearRowExceptions()

### getRowExceptions

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

### getStructureDef

    public abstract StructureDef getStructureDef()

  Description copied from interface: `Row`
  Returns the structure of the row.
  Specified by:
    `getStructureDef` in interface `Row`
  Returns:
    `StructureDef` that describes the structure of the row.

### setNewRowState

    public abstract void setNewRowState(byte state)

  Description copied from interface: `Row`
  Sets a new unposted row, created in this transaction, to either STATUS_NEW or STATUS_INITIALIZED mode. Calling this method on a row in any other state will be a no-op.

  This method should be used to create a row and then to mark it temporary (STATUS_INITIALIZED) so that an app can use the created Row to fill UIs like Table UIs with valid default values for rows. Then when the Row values are updated, UIs should once again call this method to turn the Row into new (STATUS_NEW) state before any setAttribute calls on the Row, so that the changes are validated and posted.

  When a created row is in STATUS_NEW (by default) state and this method is called to turn the row in to STATUS_INITIALIZED, all updateable entities that this row comprises of, de=registers themselves from their respective transaction and validation managers. Assocation and ViewLink finders will not find/include these rows. Only the collection into which this row was inserted into will contain a reference to this row and when that collection is re-executed this row cannot be reached via the framework. To include this row again an app should call this method again with STATUS_NEW as the method-argument

  When this row is in STATUS_INITIALIZED state and this method is called with STATUS_NEW state then, this new row is added back into it's relevant transaction and validation manager and will then participate in validation, transaction cycles.

  Note that incase of composition if a master/detail hierarchy is being created with the intention of making them temporary (STATUS_INITIALIZED) then the logic should be: Create Master row, insert Master row into a collection, create Detail row insert detail row into a relevant collection, make detail row initialized, create/insert/change-to-initialized more detail rows and at the end set the master row as initialized.

  Specified by:
    `setNewRowState` in interface `Row`
  Parameters:
    `state` - This could be STATUS_NEW or STATUS_INITIALIZED.

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

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