org.jpox.store.rdbms.scostore
Class AbstractArrayStore

java.lang.Object
  extended byorg.jpox.store.rdbms.scostore.BaseContainerStore
      extended byorg.jpox.store.rdbms.scostore.ElementContainerStore
          extended byorg.jpox.store.rdbms.scostore.AbstractArrayStore
All Implemented Interfaces:
ArrayStore, Store
Direct Known Subclasses:
FKArrayStore, JoinArrayStore

public abstract class AbstractArrayStore
extends ElementContainerStore
implements ArrayStore

Abstract representation of the backing store for an array.

Version:
$Revision: 1.9 $

Nested Class Summary
 
Nested classes inherited from class org.jpox.store.rdbms.scostore.ElementContainerStore
ElementContainerStore.ElementInfo
 
Field Summary
protected  java.lang.String addStmt
          Statement for adding an element to an array.
 
Fields inherited from class org.jpox.store.rdbms.scostore.ElementContainerStore
clearStmt, clr, containerTable, dba, elementInfo, elementMapping, elementsAreEmbedded, elementsAreSerialised, elementType, elmIdentifier, emd, iterateUsingDiscriminator, LOCALISER, orderMapping, ownerFieldMetaData, ownerMapping, relationDiscriminatorMapping, relationDiscriminatorValue, sizeStmt, storeMgr, thisIdentifier
 
Constructor Summary
protected AbstractArrayStore(StoreManager storeMgr, ClassLoaderResolver clr)
          Constructor.
 
Method Summary
 boolean add(StateManager sm, java.lang.Object element, int position)
          Adds one element to the association owner vs elements
 void clear(StateManager ownerSM)
          Clear the association from owner to all elements.
 java.util.List getArray(StateManager ownerSM)
          Method to retrieve the elements of the array.
 QueryExpression getExistsSubquery(QueryExpression qs, JavaTypeMapping mapping, LogicSetExpression ownerTe, DatastoreIdentifier collectionRangeVar)
          JDOQL utility to generate an exists() statement for an element.
protected abstract  QueryExpression getIteratorStatement(StateManager ownerSM)
          Accessor for the statement for the iterator.
 QueryExpression getSizeSubquery(QueryExpression qs, JavaTypeMapping mapping, LogicSetExpression ownerTe, DatastoreIdentifier collectionRangeVar)
          JDOQL utility to generate a subquery for the size() of the collection.
 java.util.Iterator iterator(StateManager ownerSM)
          Accessor for an iterator through the array elements.
 boolean set(StateManager ownerSM, java.lang.Object array)
          Method to set the array for the specified owner to the passed value.
 
Methods inherited from class org.jpox.store.rdbms.scostore.ElementContainerStore
executeQuery, executeUpdate, getAddStmt, getClearStmt, getElementInformationForClass, getElementType, getOwnerMapping, getSizeStmt, getStateManagerForEmbeddedPCObject, getStoreManager, hasOrderMapping, initialiseStatements, isEmbeddedMapping, newResultObjectFactory, populateElementDiscriminatorInStatement, populateElementInStatement, populateEmbeddedElementFieldsInStatement, populateOrderInStatement, populateOwnerInStatement, populateRelationDiscriminatorInStatement, size, validateElementForReading, validateElementForWriting, validateElementType
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.jpox.store.scostore.ArrayStore
getElementType, joinElementsTo, size
 
Methods inherited from interface org.jpox.store.scostore.Store
getOwnerMapping, getStoreManager
 

Field Detail

addStmt

protected java.lang.String addStmt
Statement for adding an element to an array.

Constructor Detail

AbstractArrayStore

protected AbstractArrayStore(StoreManager storeMgr,
                             ClassLoaderResolver clr)
Constructor.

Parameters:
storeMgr - Manager for the store
clr - ClassLoader resolver
Method Detail

getArray

public java.util.List getArray(StateManager ownerSM)
Description copied from interface: ArrayStore
Method to retrieve the elements of the array.

Specified by:
getArray in interface ArrayStore
Parameters:
ownerSM - State Manager of the owner
Returns:
The List of elements in the array (in the same order)

clear

public void clear(StateManager ownerSM)
Clear the association from owner to all elements. Observes the necessary dependent field settings with respect to whether it should delete the element when doing so.

Specified by:
clear in interface ArrayStore
Overrides:
clear in class ElementContainerStore
Parameters:
ownerSM - State Manager for the container.

set

public boolean set(StateManager ownerSM,
                   java.lang.Object array)
Method to set the array for the specified owner to the passed value.

Specified by:
set in interface ArrayStore
Parameters:
ownerSM - State Manager for the owner
array - the array
Returns:
Whether the array was updated successfully

add

public boolean add(StateManager sm,
                   java.lang.Object element,
                   int position)
Adds one element to the association owner vs elements

Parameters:
sm - State Manager for the container
element - The element to add
position - The position to add this element at
Returns:
Whether it was successful

getIteratorStatement

protected abstract QueryExpression getIteratorStatement(StateManager ownerSM)
Accessor for the statement for the iterator.

Parameters:
ownerSM - the owner StateManager
Returns:
The iterator Query Statement.

iterator

public java.util.Iterator iterator(StateManager ownerSM)
Accessor for an iterator through the array elements.

Specified by:
iterator in interface ArrayStore
Specified by:
iterator in class ElementContainerStore
Parameters:
ownerSM - State Manager for the container.
Returns:
The Iterator

getExistsSubquery

public QueryExpression getExistsSubquery(QueryExpression qs,
                                         JavaTypeMapping mapping,
                                         LogicSetExpression ownerTe,
                                         DatastoreIdentifier collectionRangeVar)
JDOQL utility to generate an exists() statement for an element. The generated query will be of the form
 SELECT 1 FROM JOINTABLE THIS_JOIN WHERE THIS_JOIN.OWNER_ID_OID = THIS.OWNER_ID
 

Specified by:
getExistsSubquery in interface ArrayStore
Parameters:
qs - The JDOQL query statement
mapping - mapping of the field
ownerTe - Expression for the table
collectionRangeVar - range variable for the collection
Returns:
The JDOQL query statement

getSizeSubquery

public QueryExpression getSizeSubquery(QueryExpression qs,
                                       JavaTypeMapping mapping,
                                       LogicSetExpression ownerTe,
                                       DatastoreIdentifier collectionRangeVar)
JDOQL utility to generate a subquery for the size() of the collection. The generated query will be of the form
 SELECT COUNT(*) FROM JOINTABLE THIS_JOIN WHERE THIS_JOIN.OWNER_ID_OID = THIS.OWNER_ID
 

Specified by:
getSizeSubquery in interface ArrayStore
Parameters:
qs - The JDOQL query statement
mapping - mapping of the field
ownerTe - Expression for the table
collectionRangeVar - range variable for the collection
Returns:
The JDOQL query statement


Copyright © -2007 . All Rights Reserved.