Business Components

oracle.jbo.server
Class ViewDefImpl

java.lang.Object
  |
  +--oracle.jbo.common.NamedObjectImpl
        |
        +--oracle.jbo.mom.DefinitionObject
              |
              +--oracle.jbo.server.DefObject
                    |
                    +--oracle.jbo.server.RowDef
                          |
                          +--oracle.jbo.server.ViewDefImpl
All Implemented Interfaces:
StructureDef
Direct Known Subclasses:
EJBEntityDefImpl

public class ViewDefImpl
extends oracle.jbo.server.RowDef
implements StructureDef

ViewDefImpl is the meta-object for View Object instances. It describes the View Object's structure.

A View Def can be created either through XML loading or programmatically. For the former, the client is expected to generate the XML file from design-time and make the file accessible from the classpath. When the client asks MetaObjectManager for the View Def, it finds the XML file, opens it, parses it, and builds a View Def from it.

When creating a View Def programmatically, the client is expected to start with

    ViewDefImpl viewDef = new ViewDefImpl("MyViewDef");
 

where "MyViewDef" is the name by which the View Def will identified by MetaObjectManager. This is the name that the client should pass when an API requires a View Def name, e.g., the defName parameter to ApplicationModule.createViewObject(String, String).

After instantiating the View Def, the client adds entity usages, attributes, etc. Then, he must resolve the definition object through resolveDefObject() and regsiter it with MetaObjectManager through registerDefObject(). For a View Def created from an XML file, the client does not need to call these methods, as the framework calls them itself.

Here is an example code snippet:

    ViewDefImpl viewDef = new ViewDefImpl("MyViewDef");

    viewDef.addEntityUsage("MyEmpUsage", "testp.kava.VO3.si03mt.Emp",
                           false);  // false means it's not refOnly

    viewDef.setComponentClass(null);  // take the default ViewObjectImpl
    viewDef.setRowClass(null);  // take the default ViewRowImpl
    viewDef.setSelectClause("EmpUsage.EMPNO, EmpUsage.ENAME, EmpUsage.JOB, EmpUsage.DEPTNO");
    viewDef.setFromClause("EMP EmpUsage");

    viewDef.addEntityAttribute("MyEmpNum", "MyEmpUsage", "EmpNum", true);  // true is for persistent
    viewDef.addEntityAttribute("MyEmpName", "MyEmpUsage", "EmpName", true);
    viewDef.addEntityAttribute("MyEmpJob", "MyEmpUsage", "EmpJob", true);
    viewDef.addEntityAttribute("MyEmpDeptNum", "MyEmpUsage", "EmpDeptNum", true);

    viewDef.resolveDefObject();
    viewDef.registerDefObject();
 


Field Summary
TypeField
protected  java.lang.Class mComponentClass
           
 
Fields inherited from class oracle.jbo.mom.DefinitionObject
mBaseDefObject, mExtendedDefObjects, mObjectResolved
 
Fields inherited from class oracle.jbo.common.NamedObjectImpl
mFullName, mObjName, mParent, mProperties
 
Constructor Summary
ViewDefImpl(java.lang.String name)
          Constructs a ViewDefImpl.
 
Method Summary
TypeMethod
 AttributeDefImpl addEntityAttribute(java.lang.String attrName, java.lang.String entityUsageName, java.lang.String entityAttrName, boolean isPersistent)
           
 void addEntityUsage(java.lang.String usageName, java.lang.String entityDefName, boolean referenceOnly)
          Deprecated. since 9.0.3, use addEntityUsage() that takes readOnly flag as well.
 void addEntityUsage(java.lang.String usageName, java.lang.String entityDefName, boolean referenceOnly, boolean readOnly)
           
 void addEntityUsage(java.lang.String usageName, java.lang.String entityDefName, boolean referenceOnly, boolean readOnly, java.lang.String assocName, java.lang.String assocEndName, java.lang.String srcUsageName)
           
 void addEntityUsage(java.lang.String usageName, java.lang.String entityDefName, boolean referenceOnly, java.lang.String assocName, java.lang.String assocEndName, java.lang.String srcUsageName)
          Deprecated. since 9.0.3, use addEntityUsage() that takes readOnly flag as well.
 AttributeDefImpl addViewAttribute(java.lang.String attrName, java.lang.String expression, java.lang.Class javaType)
           
protected  boolean discrValuesQualify(java.lang.Object[] values)
           
 AttributeDef findAttributeDef(java.lang.String attrName)
          Get an attribute definition by the attribute name.
protected  oracle.jbo.server.RowDef findDefForDiscrValues(java.lang.Object[] values, boolean recurse)
           
static ViewDefImpl findDefObject(java.lang.String viewDefName)
          Finds the ViewDefImpl from the list of Meta Objects.
protected  void finishedLoading()
           
 java.lang.String getAliasName()
          Returns the database alias that was declared for this definition object at Design-Time.
 int getAttributeCount()
          Returns the number of defined attributes.
 AttributeDef getAttributeDef(int index)
          Gets an attribute definition, given its index.
protected  AttributeDefImpl[] getAttributeDefImpls()
          Gets an array of attribute definitions in this View Def.
 AttributeDef[] getAttributeDefs()
          Gets an array of attribute definitions in this View Def.
 oracle.jbo.mom.DefinitionObject getBaseDefObject()
           
 int getBindingStyle()
          Returns the Oracle or JDBC binding style defined for this Entity definition.
 int getCalculatedAttributeCount()
           
 java.lang.Class getComponentClass()
           
protected  AttributeDefImpl[] getDiscrColumns()
          Returns the AttributeDef's of the discriminator columns.
 java.lang.String getEJBAppProviderURL()
           
 java.lang.String getEJBHomeJNDIName()
           
 byte getFetchMode()
          Get the fetch mode for rows from the query.
 short getFetchSize()
          Get the size of the fetch.
protected  java.lang.String getFromClause()
           
 int getIterMode()
           
 int getMaxActiveNodes()
           
static int getMaxAttrConst(java.lang.String viewDefName)
           
 int getMaxFetchSize()
           
 int getMaxRowsPerNode()
           
 java.lang.Class getMessageBundleClass()
          Internal: Applications should not use this method.
protected  java.lang.String getOrderByClause()
           
 oracle.jbo.server.PackageDefImpl getPackageDef()
           
 java.lang.String getPackageName()
           
 java.lang.String getQueryHint()
           
 java.lang.Class getRowClass()
           
protected  java.lang.String getSelectClause()
           
protected  StmtWithBindVars getWhereClause(int noBindVars)
           
 boolean hasQuery()
           
protected  boolean isDynamic()
           
 boolean isFinderView()
           
 boolean isFullSql()
           
 boolean isManageRowsByKey()
           
 boolean isPassivationEnabled()
           
 boolean isUseGlueCode()
           
protected  void loadCustomDef(oracle.jbo.mom.xml.DefElementImpl xmlElement)
           
protected  void loadProperties(oracle.jbo.mom.xml.DefElementImpl xmlElement)
           
 AttributeDef lookupAttributeDef(java.lang.String attrName)
          Gets an attribute definition by name.
 void registerDefObject()
          Registers this View Def with MetaObjectManager.
 void resolveDefObject()
          Resolves this View Def.
protected  void resolveReferences()
          Since this gets called from lazyload
protected  void setBaseDefObject(oracle.jbo.mom.DefinitionObject baseDefObject)
           
 void setBindingStyle(int bindingStyle)
          Sets the Oracle or JDBC binding style defined for this Entity definition.
 void setComponentClass(java.lang.Class componentClass)
           
protected  void setDiscrColumns(AttributeDefImpl[] discrCols)
          Sets the AttributeDef's of the discriminator columns.
 void setFetchMode(byte fetchMode)
          Set the fetch mode for rows from the query.
 void setFetchSize(short size)
          Set the size of the fetch.
 void setFromClause(java.lang.String fromClause)
           
 void setFullSql(boolean b)
           
 void setMaxActiveNodes(int maxActiveNodes)
           
 void setMaxFetchSize(int size)
          Set the maximum number of rows to fetch during query processing.
 void setMaxRowsPerNode(int maxRowsPerNode)
           
protected  void setMessageBundleClass(java.lang.Class collClass)
          Internal: Applications should not use this method.
protected  void setName(java.lang.String name)
          Name this object.
 void setOrderByClause(java.lang.String orderByClause)
           
protected  void setParent(NamedObjectImpl parent)
          Sets this object's parent.
 void setQuery(java.lang.String query)
           
 void setQueryHint(java.lang.String queryHint)
           
 void setRowClass(java.lang.Class rowClass)
           
 void setSelectClause(java.lang.String selectClause)
           
 void setUseGlueCode(boolean b)
           
 void setWhereClause(java.lang.String whereClause)
           
 
Methods inherited from class oracle.jbo.mom.DefinitionObject
addExtendedDefObject, getContainerDef, getContainerName, getExtendedDefObjects, isBaseDefFor, isDynamicDefinitionObject, isObjectResolved, setObjectResolved
 
Methods inherited from class oracle.jbo.common.NamedObjectImpl
getFullName, getName, getParent, getProperties, getPropertiesAsStrings, getPropertiesMap, getProperty, refreshProperty, setFullName, setPropertiesMap, setProperty
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

mComponentClass

protected java.lang.Class mComponentClass
Constructor Detail

ViewDefImpl

public ViewDefImpl(java.lang.String name)
Constructs a ViewDefImpl. This constructor should be used when creating a View Def programmatically. See above for further discussion.

Parameters:
name - name by which this View Def will be registered in MetaObjectManager.
Method Detail

findDefObject

public static ViewDefImpl findDefObject(java.lang.String viewDefName)
Finds the ViewDefImpl from the list of Meta Objects.
Parameters:
viewObjectName - The fully qualified Name of the ViewDefImpl.
Returns:
The View definition object corresponding to the specified name.
See Also:
MetaObjectManager

registerDefObject

public void registerDefObject()
Registers this View Def with MetaObjectManager. This method should be called for a View Def which is created a View Def programmatically. It is not for a View Def created from an XML file. See above for further discussion.

This method should be called after the View Def is all set up and after resolveDefObject() is called.


getMaxAttrConst

public static int getMaxAttrConst(java.lang.String viewDefName)

getAttributeDefImpls

protected AttributeDefImpl[] getAttributeDefImpls()
Gets an array of attribute definitions in this View Def.

Overrides:
getAttributeDefImpls in class oracle.jbo.server.RowDef
Returns:
an array of attribute definitions.

getAttributeDefs

public AttributeDef[] getAttributeDefs()
Gets an array of attribute definitions in this View Def.

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

findAttributeDef

public AttributeDef findAttributeDef(java.lang.String attrName)
Get an attribute definition by the attribute name.

Specified by:
findAttributeDef in interface StructureDef
Parameters:
attrName - name of the attribute.
Returns:
the attribute definition.
Throws:
NoDefException - thrown if the named atribute is not found.

lookupAttributeDef

public AttributeDef lookupAttributeDef(java.lang.String attrName)
Gets an attribute definition by name.

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

isManageRowsByKey

public boolean isManageRowsByKey()

setQuery

public void setQuery(java.lang.String query)
Parameters:
The - sql statement of the query.

setQueryHint

public void setQueryHint(java.lang.String queryHint)

getQueryHint

public java.lang.String getQueryHint()

getCalculatedAttributeCount

public int getCalculatedAttributeCount()
Returns:
Count of calculated attributes

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.

getAttributeDef

public AttributeDef getAttributeDef(int index)
Description copied from interface: StructureDef
Gets an attribute definition, given its index.
Specified by:
getAttributeDef in interface StructureDef
Following copied from interface: oracle.jbo.StructureDef
Parameters:
index - the index of an AttributeDef, where the leftmost attribute has index zero.
Returns:
an attribute definition.

setRowClass

public void setRowClass(java.lang.Class rowClass)
Parameters:
rowClass - The Class of the instance.

getRowClass

public java.lang.Class getRowClass()
Overrides:
getRowClass in class oracle.jbo.server.RowDef
Returns:
The Class of the instance.

setComponentClass

public void setComponentClass(java.lang.Class componentClass)
Parameters:
componentClass - The Class of the instance.

getComponentClass

public java.lang.Class getComponentClass()
Returns:
the Class of the reference object.

setSelectClause

public void setSelectClause(java.lang.String selectClause)
Parameters:
selectClause - The SELECT list

getSelectClause

protected java.lang.String getSelectClause()
Returns:
The SELECT list

setFromClause

public void setFromClause(java.lang.String fromClause)
Parameters:
fromClause - The FROM clause

getFromClause

protected java.lang.String getFromClause()
Returns:
The FROM clause

setWhereClause

public void setWhereClause(java.lang.String whereClause)
Parameters:
whereClause - The WHERE clause

getWhereClause

protected StmtWithBindVars getWhereClause(int noBindVars)
Returns:
The WHERE clause

setOrderByClause

public void setOrderByClause(java.lang.String orderByClause)
Parameters:
orderByClause - The ORDER BY clause

getOrderByClause

protected java.lang.String getOrderByClause()
Returns:
The ORDER BY clause

setFetchMode

public void setFetchMode(byte fetchMode)
Set the fetch mode for rows from the query. The valid modes are FETCH_AS_NEEDED an FETCH_ALL, or FETCH_DEFAULT. FETCH_AS_NEEDED will only fetch the number of rows requested whilst FETCH_ALL will pull all of the rows from the database and close out the cursor. Currently FETCH_DEFAULT is equivalent to FETCH_AS_NEEDED. At some point this may be changed to default to some system-level default.
Parameters:
fetchMode - is FETCH_AS_NEEDED, FETCH_ALL or FETCH_DEFAULT.

getFetchMode

public byte getFetchMode()
Get the fetch mode for rows from the query. The value returned will be FETCH_AS_NEEDED or FETCH_ALL.
Returns:
FETCH_AS_NEEDED or FETCH_ALL.

setFetchSize

public void setFetchSize(short size)
Set the size of the fetch. ViewRowSets of the query are returned in chunks. This method permits the setting of the size of these chunks.
Parameters:
size - the size, in rows, of the chunk to fetch.

getFetchSize

public short getFetchSize()
Get the size of the fetch.
Returns:
the size, in rows, of the chunk to fetch.

setMaxFetchSize

public void setMaxFetchSize(int size)
Set the maximum number of rows to fetch during query processing. When the maximum number of rows has been fetched, the query is closed and no more rows are returned. Setting a value of 0 means that there is no maximum to the number of rows fetched.
Parameters:
size - the number of rows.

getMaxFetchSize

public int getMaxFetchSize()

isUseGlueCode

public boolean isUseGlueCode()

setUseGlueCode

public void setUseGlueCode(boolean b)

setMaxRowsPerNode

public void setMaxRowsPerNode(int maxRowsPerNode)

getMaxRowsPerNode

public int getMaxRowsPerNode()

setMaxActiveNodes

public void setMaxActiveNodes(int maxActiveNodes)

getMaxActiveNodes

public int getMaxActiveNodes()

finishedLoading

protected void finishedLoading()
Overrides:
finishedLoading in class oracle.jbo.server.DefObject

resolveReferences

protected void resolveReferences()
Since this gets called from lazyload
Overrides:
resolveReferences in class oracle.jbo.server.DefObject

resolveDefObject

public void resolveDefObject()
Resolves this View Def. It resolves attribute definitions with its entity bases.

This method must be called after the View Def is set up and before registerDefObject().


addEntityAttribute

public AttributeDefImpl addEntityAttribute(java.lang.String attrName,
                                           java.lang.String entityUsageName,
                                           java.lang.String entityAttrName,
                                           boolean isPersistent)

addViewAttribute

public AttributeDefImpl addViewAttribute(java.lang.String attrName,
                                         java.lang.String expression,
                                         java.lang.Class javaType)

addEntityUsage

public void addEntityUsage(java.lang.String usageName,
                           java.lang.String entityDefName,
                           boolean referenceOnly,
                           java.lang.String assocName,
                           java.lang.String assocEndName,
                           java.lang.String srcUsageName)
Deprecated. since 9.0.3, use addEntityUsage() that takes readOnly flag as well.


addEntityUsage

public void addEntityUsage(java.lang.String usageName,
                           java.lang.String entityDefName,
                           boolean referenceOnly,
                           boolean readOnly,
                           java.lang.String assocName,
                           java.lang.String assocEndName,
                           java.lang.String srcUsageName)

addEntityUsage

public void addEntityUsage(java.lang.String usageName,
                           java.lang.String entityDefName,
                           boolean referenceOnly)
Deprecated. since 9.0.3, use addEntityUsage() that takes readOnly flag as well.


addEntityUsage

public void addEntityUsage(java.lang.String usageName,
                           java.lang.String entityDefName,
                           boolean referenceOnly,
                           boolean readOnly)

isFullSql

public boolean isFullSql()

setFullSql

public void setFullSql(boolean b)

isDynamic

protected boolean isDynamic()

isPassivationEnabled

public final boolean isPassivationEnabled()

loadCustomDef

protected void loadCustomDef(oracle.jbo.mom.xml.DefElementImpl xmlElement)
                      throws PersistenceException

hasQuery

public boolean hasQuery()

getIterMode

public int getIterMode()

getEJBHomeJNDIName

public java.lang.String getEJBHomeJNDIName()

getEJBAppProviderURL

public java.lang.String getEJBAppProviderURL()

isFinderView

public boolean isFinderView()

getDiscrColumns

protected AttributeDefImpl[] getDiscrColumns()
Returns the AttributeDef's of the discriminator columns.
Returns:
an array attribute definitions of the discriminator columns.

setDiscrColumns

protected void setDiscrColumns(AttributeDefImpl[] discrCols)
Sets the AttributeDef's of the discriminator columns.
Parameters:
discrCols - an array attribute definitions of the discriminator columns.

discrValuesQualify

protected boolean discrValuesQualify(java.lang.Object[] values)

findDefForDiscrValues

protected oracle.jbo.server.RowDef findDefForDiscrValues(java.lang.Object[] values,
                                                         boolean recurse)

getBindingStyle

public int getBindingStyle()
Returns the Oracle or JDBC binding style defined for this Entity definition. The integer values and their meaning are determined by the SQLBuilder interface.
Returns:
an integer representing the Oracle or JDBC binding style. The returns values can be:
  • -1 - unknown
  • 0 - JDBC
  • 1 - Oracle
See Also:
SQLBuilder

setBindingStyle

public void setBindingStyle(int bindingStyle)
Sets the Oracle or JDBC binding style defined for this Entity definition. The integer values and their meaning are determined by the SQLBuilder interface.
Parameters:
bindingStyle - an integer representing the Oracle or JDBC binding style for this Entity definition. The possible values can be:
  • -1 unknown
  • 0 JDBC
  • 1 Oracle
See Also:
SQLBuilder

getAliasName

public java.lang.String getAliasName()
Returns the database alias that was declared for this definition object at Design-Time.
Returns:
the alias for this definition object as a String.

setMessageBundleClass

protected void setMessageBundleClass(java.lang.Class collClass)
Internal: Applications should not use this method.

Sets the implementation class for this Object's Message Bundle class.

Parameters:
collClass - the message bundle implementation class.

getMessageBundleClass

public java.lang.Class getMessageBundleClass()
Internal: Applications should not use this method.

Returns the class of the reference object.

Returns:
the class of the reference object.

getPackageDef

public oracle.jbo.server.PackageDefImpl getPackageDef()

getPackageName

public java.lang.String getPackageName()

setName

protected void setName(java.lang.String name)
Name this object.
Overrides:
setName in class oracle.jbo.mom.DefinitionObject
Parameters:
name - the name to be given to this object.

getBaseDefObject

public oracle.jbo.mom.DefinitionObject getBaseDefObject()
Overrides:
getBaseDefObject in class oracle.jbo.mom.DefinitionObject

setBaseDefObject

protected void setBaseDefObject(oracle.jbo.mom.DefinitionObject baseDefObject)
Overrides:
setBaseDefObject in class oracle.jbo.mom.DefinitionObject

setParent

protected void setParent(NamedObjectImpl parent)
Sets this object's parent.
Overrides:
setParent in class oracle.jbo.mom.DefinitionObject
Parameters:
parent - the named object that is to be the parent of this object.

loadProperties

protected void loadProperties(oracle.jbo.mom.xml.DefElementImpl xmlElement)
Overrides:
loadProperties in class oracle.jbo.mom.DefinitionObject
Following copied from class: oracle.jbo.mom.DefinitionObject
Parameters:
xmlDoc - The XML doc to load from.
name - The name of the Property.

Business Components