|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.jpox.store.AbstractStoreManager
public abstract class AbstractStoreManager
An abstract representation of a Store Manager. Manages the persistence of objects to the store. Will be implemented for the type of datastore (RDBMS, ODBMS, OLAP) in question. The store manager's responsibilities include:
A store manager's knowledge of its contents is typically not complete. It knows about the classes that it has encountered in its lifetime. The PersistenceManager can make the StoreManager aware of a class, and can check if the StoreManager knows about a particular class. The Auto-Start mechanism provides a way of inheriting knowledge from the last time the store was used.
| Field Summary | |
|---|---|
protected java.lang.String |
autoStartMechanism
Name of the AutoStart mechanism. |
protected boolean |
fixedDatastore
Whether this datastore is fixed (no mods to datastore classes allowed). |
protected static Localiser |
LOCALISER
Localiser for messages. |
protected java.lang.String |
nontxConnectionFactoryName
Name of non-transactional connection factory (null if not present). |
protected OMFContext |
omfContext
ObjectManagerFactory context. |
protected StorePersistenceHandler |
persistenceHandler
Persistence handler. |
protected PoidManager |
poidManager
Manager for identity generation. |
protected boolean |
readOnlyDatastore
Whether this datastore is read only. |
protected java.lang.String |
readOnlyDatastoreAction
What should happen if read-only and an update is invoked. |
protected StoreSchemaHandler |
schemaHandler
Schema handler. |
protected AutoStartMechanism |
starter
Auto-Start mechanism to use. |
protected boolean |
starterInitialised
Whether the AutoStart mechanism is initialised |
protected StoreDataManager |
storeDataMgr
Manager for the data definition in the datastore. |
protected java.lang.String |
storeManagerKey
Key for this StoreManager e.g "rdbms", "db4o" |
protected StoreManagerRuntime |
storeManagerRuntime
StoreManager Runtime. |
protected java.lang.String |
txConnectionFactoryName
Name of transactional connection factory. |
| Constructor Summary | |
|---|---|
protected |
AbstractStoreManager(java.lang.String key,
ClassLoaderResolver clr,
OMFContext omfContext)
Constructor for a new StoreManager. |
| Method Summary | |
|---|---|
void |
addClass(java.lang.String className,
ClassLoaderResolver clr)
Method to add a class to the managed list for this datastore manager. |
void |
addClasses(java.lang.String[] classNames,
ClassLoaderResolver clr)
Add classes to the persistence model for the datastore. |
abstract void |
addClasses(java.lang.String[] classes,
ClassLoaderResolver clr,
java.io.Writer writer,
boolean completeDdl)
Add classes to the persistence model for the datastore. |
protected void |
clearAutoStarter()
Method to clear the Auto-Starter status. |
void |
close()
Release of resources. |
protected void |
deregisterAllStoreData()
Method to deregister all existing store data so that we are managing nothing. |
ApiAdapter |
getApiAdapter()
Accessor for the API adapter. |
AutoStartMechanism |
getAutoStartMechanism()
Accessor for the AutoStartMechanism |
Store |
getBackingStoreForField(ClassLoaderResolver clr,
AbstractMemberMetaData fmd,
java.lang.Class type)
Accessor for the backing store for the specified field. |
java.lang.String |
getClassNameForObjectID(java.lang.Object id,
ClassLoaderResolver clr,
ObjectManager om)
Returns the class corresponding to the given object identity. |
ManagedConnection |
getConnection(ObjectManager om)
Accessor for a transactional connection for the specified ObjectManager, using its current transaction. |
abstract java.util.Date |
getDatastoreDate()
Get the date/time of the datastore. |
abstract Extent |
getExtent(ObjectManager om,
java.lang.Class c,
boolean subclasses)
Interface to getting an Extent for a class. |
abstract JPOXConnection |
getJPOXConnection(ObjectManager om)
Method to return a JPOX connection for the ObjectManager. |
JPOXSequence |
getJPOXSequence(ObjectManager om,
SequenceMetaData seqmd)
Method to return a datastore sequence for this datastore matching the passed sequence MetaData. |
MetaDataManager |
getMetaDataManager()
|
OMFContext |
getOMFContext()
Accessor for the context in which this RDBMSManager is running |
StorePersistenceHandler |
getPersistenceHandler()
Accessor for the store persistence handler. |
PoidManager |
getPoidManager()
Accessor for the POIDManager for obtaining sequences. |
protected java.util.Properties |
getPropertiesForGenerator(AbstractClassMetaData cmd,
int absoluteFieldNumber,
ObjectManager om,
SequenceMetaData seqmd,
TableGeneratorMetaData tablegenmd)
Method to return the properties to pass to the generator for the specified field. |
StoreManagerRuntime |
getRuntimeManager()
Accessor for the runtime management of this component (if specified as required to the PMF/EMF). |
StoreSchemaHandler |
getSchemaHandler()
Accessor for the store schema handler (if this datastore supports the concept of a schema). |
java.lang.String |
getStoreManagerKey()
Accessor for the key for this store manager. |
protected java.lang.String |
getStrategyForNative(java.lang.String sequence)
Method defining which value-strategy to use when the user specifies "native". |
java.lang.Object |
getStrategyValue(ObjectManager om,
AbstractClassMetaData cmd,
int absoluteFieldNumber)
Method to retrieve the value for a strategy for a particular field. |
protected java.lang.Object |
getStrategyValueForGenerator(PoidGenerator generator,
ObjectManager om)
Accessor for the next value from the specified generator. |
java.util.HashSet |
getSubClassesForClass(java.lang.String className,
boolean includeDescendents,
ClassLoaderResolver clr)
Utility to return the names of the classes that are known subclasses of the provided class. |
java.util.Collection |
getSupportedOptions()
Accessor for the supported options in string form. |
protected void |
initialiseAutoStart(java.lang.String mechanism,
java.lang.String mode,
ClassLoaderResolver clr)
Method to initialise the auto-start mechanism, loading up the classes from its store into memory so that we start from where we got to last time. |
boolean |
isStrategyDatastoreAttributed(IdentityStrategy identityStrategy,
boolean datastoreIdentityField)
Check if the strategy is attributed by the database when the PersistenceCapable object is inserted into the database |
java.lang.String |
manageClassForIdentity(java.lang.Object id,
ClassLoaderResolver clr)
Convenience method to ensure that the class defined by the passed OID/SingleFIeldIdentity is managed by the store. |
boolean |
managesClass(java.lang.String className)
Accessor for whether the specified class is managed currently |
void |
notifyObjectIsOutdated(StateManager sm)
Notifies this store manager that the main memory (RAM, heap) copy of the PC object of the supplied StateManager may not be regarded as valid anymore. |
abstract void |
outputDatastoreInformation(java.io.PrintStream ps)
Method to output the datastore information to the specified PrintStream. |
abstract void |
outputSchemaInformation(java.io.PrintStream ps)
Method to output the schema information to the specified PrintStream. |
void |
performVersionCheck(StateManager sm,
java.lang.Object versionDatastore,
VersionMetaData versionMetaData)
Perform an optimistic version check on the passed object, against the passed version in the datastore. |
protected void |
registerStoreData(StoreData data)
Method to register some data with the store. |
abstract void |
removeAllClasses(ClassLoaderResolver clr)
Drops all tables in the datastore. |
boolean |
supportsQueryLanguage(java.lang.String language)
Accessor for whether this query language is supported. |
boolean |
supportsValueStrategy(java.lang.String strategy)
Accessor for whether this value strategy is supported. |
boolean |
usesDatastoreClass()
|
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
protected static final Localiser LOCALISER
protected final java.lang.String storeManagerKey
protected final boolean readOnlyDatastore
protected final java.lang.String readOnlyDatastoreAction
protected final boolean fixedDatastore
protected AutoStartMechanism starter
protected boolean starterInitialised
protected final OMFContext omfContext
protected final PoidManager poidManager
protected StoreManagerRuntime storeManagerRuntime
protected StoreDataManager storeDataMgr
protected java.lang.String autoStartMechanism
protected StorePersistenceHandler persistenceHandler
protected StoreSchemaHandler schemaHandler
protected java.lang.String txConnectionFactoryName
protected java.lang.String nontxConnectionFactoryName
| Constructor Detail |
|---|
protected AbstractStoreManager(java.lang.String key,
ClassLoaderResolver clr,
OMFContext omfContext)
key - Key for this StoreManagerclr - the ClassLoaderResolveromfContext - The corresponding ObjectManagerFactory context.StoreManagerFactory| Method Detail |
|---|
public void close()
StoreManager
close in interface StoreManagerpublic ManagedConnection getConnection(ObjectManager om)
getConnection in interface StoreManagerom - The ObjectManager
JPOXException - Thrown if an error occurs getting the connectionpublic StoreManagerRuntime getRuntimeManager()
StoreManager
getRuntimeManager in interface StoreManagerpublic StorePersistenceHandler getPersistenceHandler()
StoreManager
getPersistenceHandler in interface StoreManagerpublic StoreSchemaHandler getSchemaHandler()
StoreManager
getSchemaHandler in interface StoreManager
public JPOXSequence getJPOXSequence(ObjectManager om,
SequenceMetaData seqmd)
getJPOXSequence in interface StoreManagerom - The Object Managerseqmd - SequenceMetaData
public abstract JPOXConnection getJPOXConnection(ObjectManager om)
StoreManager
getJPOXConnection in interface StoreManagerom - ObjectManager
public PoidManager getPoidManager()
StoreManager
getPoidManager in interface StoreManagerpublic ApiAdapter getApiAdapter()
StoreManager
getApiAdapter in interface StoreManagerpublic java.lang.String getStoreManagerKey()
StoreManager
getStoreManagerKey in interface StoreManagerpublic OMFContext getOMFContext()
StoreManager
getOMFContext in interface StoreManagerpublic MetaDataManager getMetaDataManager()
public abstract java.util.Date getDatastoreDate()
StoreManager
getDatastoreDate in interface StoreManagerprotected void registerStoreData(StoreData data)
data - The StoreData to addprotected void deregisterAllStoreData()
public abstract void outputDatastoreInformation(java.io.PrintStream ps)
throws java.lang.Exception
StoreManager
outputDatastoreInformation in interface StoreManagerps - PrintStream
java.lang.Exception - If an error occurs obtaining the datastore info
public abstract void outputSchemaInformation(java.io.PrintStream ps)
throws java.lang.Exception
StoreManager
outputSchemaInformation in interface StoreManagerps - PrintStream
java.lang.Exception - If an error occurs obtaining the schema info
protected void initialiseAutoStart(java.lang.String mechanism,
java.lang.String mode,
ClassLoaderResolver clr)
throws DatastoreInitialisationException
mechanism - Auto-Start mechanismmode - Mode of operationclr - The ClassLoaderResolver
DatastoreInitialisationExceptionprotected void clearAutoStarter()
public AutoStartMechanism getAutoStartMechanism()
StoreManagerAutoStartMechanism
getAutoStartMechanism in interface StoreManagerpublic boolean managesClass(java.lang.String className)
StoreManager
managesClass in interface StoreManagerclassName - The name of the class
public void addClass(java.lang.String className,
ClassLoaderResolver clr)
StoreManager
addClass in interface StoreManagerclassName - Name of the classclr - The ClassLoaderResolver
public abstract void addClasses(java.lang.String[] classes,
ClassLoaderResolver clr,
java.io.Writer writer,
boolean completeDdl)
StoreManagerThis method is primarily useful for applications that wish to perform all of their datastore initialization up front, rather than wait for the JPOX runtime to do it on-demand.
addClasses in interface StoreManagerclasses - The class(es) to be added.clr - The ClassLoaderResolverwriter - Optional writer when you just want the DDL for persisting the specified classescompleteDdl - whether complete DDL will be created when writing DDL to a file, or only for missing elements
public void addClasses(java.lang.String[] classNames,
ClassLoaderResolver clr)
StoreManagerThis method is primarily useful for applications that wish to perform all of their datastore initialization up front, rather than wait for the JPOX runtime to do it on-demand.
addClasses in interface StoreManagerclassNames - The class(es) to be added.clr - The ClassLoaderResolverpublic abstract void removeAllClasses(ClassLoaderResolver clr)
StoreManager
removeAllClasses in interface StoreManagerclr - The ClassLoaderResolver
public java.lang.String manageClassForIdentity(java.lang.Object id,
ClassLoaderResolver clr)
StoreManager
manageClassForIdentity in interface StoreManagerid - OIDclr - ClassLoader resolver
public boolean usesDatastoreClass()
public abstract Extent getExtent(ObjectManager om,
java.lang.Class c,
boolean subclasses)
StoreManager
getExtent in interface StoreManagerom - The Object Managerc - The class requiring the Extentsubclasses - Whether to include subclasses of 'c'
public boolean supportsQueryLanguage(java.lang.String language)
StoreManager
supportsQueryLanguage in interface StoreManagerlanguage - The language
public boolean supportsValueStrategy(java.lang.String strategy)
supportsValueStrategy in interface StoreManagerstrategy - The strategy
public java.lang.String getClassNameForObjectID(java.lang.Object id,
ClassLoaderResolver clr,
ObjectManager om)
StoreManager
getClassNameForObjectID in interface StoreManagerid - The identity of some object.clr - ClassLoader resolverom - Object Manager
public boolean isStrategyDatastoreAttributed(IdentityStrategy identityStrategy,
boolean datastoreIdentityField)
StoreManager
isStrategyDatastoreAttributed in interface StoreManageridentityStrategy - the identityStrategydatastoreIdentityField - Whether this is for the surrogate datastore identity field
public java.lang.Object getStrategyValue(ObjectManager om,
AbstractClassMetaData cmd,
int absoluteFieldNumber)
StoreManager
getStrategyValue in interface StoreManagerom - The Object Managercmd - AbstractClassMetaData for the classabsoluteFieldNumber - The field number
protected java.lang.String getStrategyForNative(java.lang.String sequence)
sequence - Sequence name if specified
protected java.lang.Object getStrategyValueForGenerator(PoidGenerator generator,
ObjectManager om)
generator - The generatorom - ObjectManager
protected java.util.Properties getPropertiesForGenerator(AbstractClassMetaData cmd,
int absoluteFieldNumber,
ObjectManager om,
SequenceMetaData seqmd,
TableGeneratorMetaData tablegenmd)
cmd - MetaData for the classabsoluteFieldNumber - Number of the field (-1 = datastore identity)om - Object Managerseqmd - Any sequence metadatatablegenmd - Any table generator metadata
public void performVersionCheck(StateManager sm,
java.lang.Object versionDatastore,
VersionMetaData versionMetaData)
StoreManager
performVersionCheck in interface StoreManagersm - StateManager of the object to checkversionDatastore - Version of the object in the datastoreversionMetaData - VersionMetaData to use for checking
public java.util.HashSet getSubClassesForClass(java.lang.String className,
boolean includeDescendents,
ClassLoaderResolver clr)
StoreManager
getSubClassesForClass in interface StoreManagerclassName - Class for which we search for subclasses.includeDescendents - Whether to include subclasses of subclasses etcclr - The ClassLoaderResolver
public void notifyObjectIsOutdated(StateManager sm)
StoreManager
notifyObjectIsOutdated in interface StoreManager
public Store getBackingStoreForField(ClassLoaderResolver clr,
AbstractMemberMetaData fmd,
java.lang.Class type)
StoreManager
getBackingStoreForField in interface StoreManagerclr - ClassLoader resolverfmd - MetaData for the field/propertytype - Type
public java.util.Collection getSupportedOptions()
getSupportedOptions in interface StoreManager
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||