Package net.ontopia.topicmaps.impl.rdbms
Class RDBMSTopicMapStore
- java.lang.Object
-
- net.ontopia.topicmaps.impl.utils.AbstractTopicMapStore
-
- net.ontopia.topicmaps.impl.rdbms.RDBMSTopicMapStore
-
- All Implemented Interfaces:
AutoCloseable
,TopicMapStoreIF
public class RDBMSTopicMapStore extends AbstractTopicMapStore
PUBLIC: The rdbms topic map store implementation.
-
-
Field Summary
Fields Modifier and Type Field Description protected Map<String,String>
properties
protected String
propfile
protected RDBMSStorage
storage
protected boolean
storage_local
protected long
topicmap_id
protected RDBMSTopicMapTransaction
transaction
protected static Class[]
types
-
Fields inherited from class net.ontopia.topicmaps.impl.utils.AbstractTopicMapStore
base_address, closed, deleted, open, readonly, readonlySet, reference, topic_listeners
-
Fields inherited from interface net.ontopia.topicmaps.core.TopicMapStoreIF
IN_MEMORY_IMPLEMENTATION, RDBMS_IMPLEMENTATION
-
-
Constructor Summary
Constructors Constructor Description RDBMSTopicMapStore()
PUBLIC: Creates a new topic map store without a specified database property file.RDBMSTopicMapStore(long topicmap_id)
PUBLIC: Creates a new topic map store without a specified database property file.RDBMSTopicMapStore(String propfile)
PUBLIC: Creates a new topic map store with the database property file set.RDBMSTopicMapStore(String propfile, long topicmap_id)
PUBLIC: Creates a new topic map store with the database property file set.RDBMSTopicMapStore(Map<String,String> properties)
PUBLIC: Creates a new topic map store with the specified database properties.RDBMSTopicMapStore(Map<String,String> properties, long topicmap_id)
PUBLIC: Creates a new topic map store with the specified database properties.RDBMSTopicMapStore(StorageIF storage)
INTERNAL:RDBMSTopicMapStore(StorageIF storage, long topicmap_id)
INTERNAL:
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
abort()
PUBLIC: Aborts and deactivates the top-level transaction; all changes made inside the root transaction are lost.void
clear()
void
clearCache()
INTERNAL: Empties the shared RDBMS caches.void
close()
PUBLIC: Closes the store and aborts the transaction if active.void
close(boolean returnStore)
void
commit()
PUBLIC: Commits and deactivates the top-level transaction.void
delete(boolean force)
PUBLIC: Deletes the TopicMapIF from the data store.protected boolean
delete(RDBMSTopicMapReference ref)
void
evictObject(String object_id)
INTERNAL: Evicts the given object from the shared RDBMS caches.protected void
finalize()
void
flush()
LocatorIF
getBaseAddress()
PUBLIC: Gets a locator of the topic map in the store.Connection
getConnection()
ConnectionFactoryIF
getConnectionFactory(boolean readonly)
EventManagerIF
getEventManager()
protected IdentityIF
getIdentityForObjectId(TransactionIF txn, String object_id)
int
getImplementation()
PUBLIC: Returns the topic map implementation identifier.long
getLongId()
long
getLongId(TMObjectIF o)
String
getProperty(String name)
INTERNAL: Gets the value of the specified store property.String
getQueryString(String name)
RDBMSStorage
getStorage()
INTERNAL: Returns the proxy storage implementation used by the topic map store.TopicMapIF
getTopicMap()
PUBLIC: Gets the topic map that is accessible through the root transaction of the store.TopicMapTransactionIF
getTransaction()
TransactionIF
getTransactionIF()
boolean
isTransactional()
PUBLIC: Returns true if the store supports transactions.void
merged(TMObjectIF source, TMObjectIF target)
INTERNAL: Called by MergeUtils to notify transaction of a performed merge.boolean
prefetch(int type, int[] fields, boolean[] traverse, Collection objects)
boolean
prefetch(int type, int field, boolean traverse, Collection objects)
boolean
prefetchFieldsById(Collection<String> object_ids, int field)
boolean
prefetchObjectsById(Collection<String> object_ids)
void
prefetchRolesByType(Collection players, TopicIF rtype, TopicIF atype)
void
setBaseAddress(LocatorIF base_address)
EXPERIMENTAL: Sets the persistent base address of the store.void
setBaseAddressOverride(LocatorIF base_address)
INTERNAL: Sets the apparent base address of the store.boolean
validate()
void
writeIdentityMap(Writer out, boolean dump)
EXPERIMENTAL: Dumps the identity map to the given writer.void
writeReport(Writer out, boolean dumpCaches)
EXPERIMENTAL: Writes a cache statistics report to the given writer.void
writeReport(String filename, boolean dumpCaches)
EXPERIMENTAL: Writes a cache statistics report to the given file.-
Methods inherited from class net.ontopia.topicmaps.impl.utils.AbstractTopicMapStore
getReference, isOpen, isReadOnly, open, setReadOnly, setReference, setTopicListeners
-
-
-
-
Field Detail
-
types
protected static final Class[] types
-
topicmap_id
protected long topicmap_id
-
storage
protected RDBMSStorage storage
-
propfile
protected String propfile
-
transaction
protected RDBMSTopicMapTransaction transaction
-
storage_local
protected boolean storage_local
-
-
Constructor Detail
-
RDBMSTopicMapStore
public RDBMSTopicMapStore() throws IOException
PUBLIC: Creates a new topic map store without a specified database property file. A new topic map is created in the repository with this constructor at the time the topic map is accessed.- Throws:
IOException
-
RDBMSTopicMapStore
public RDBMSTopicMapStore(long topicmap_id) throws IOException
PUBLIC: Creates a new topic map store without a specified database property file. The store references an existing topic map with the specified id.- Throws:
IOException
-
RDBMSTopicMapStore
public RDBMSTopicMapStore(String propfile) throws IOException
PUBLIC: Creates a new topic map store with the database property file set. A new topic map is created in the repository with this constructor at the time the topic map is accessed.- Parameters:
propfile
- Path reference to a Java properties file.- Throws:
IOException
-
RDBMSTopicMapStore
public RDBMSTopicMapStore(String propfile, long topicmap_id) throws IOException
PUBLIC: Creates a new topic map store with the database property file set. The store references an existing topic map with the specified id.- Parameters:
propfile
- Path reference to a Java properties file.topicmap_id
- The ID of the topic map in the database.- Throws:
IOException
-
RDBMSTopicMapStore
public RDBMSTopicMapStore(Map<String,String> properties) throws IOException
PUBLIC: Creates a new topic map store with the specified database properties. A new topic map is created in the repository with this constructor at the time the topic map is accessed.- Throws:
IOException
- Since:
- 1.2.4
-
RDBMSTopicMapStore
public RDBMSTopicMapStore(Map<String,String> properties, long topicmap_id) throws IOException
PUBLIC: Creates a new topic map store with the specified database properties. The store references an existing topic map with the specified id.- Throws:
IOException
- Since:
- 1.2.4
-
RDBMSTopicMapStore
public RDBMSTopicMapStore(StorageIF storage)
INTERNAL:
-
RDBMSTopicMapStore
public RDBMSTopicMapStore(StorageIF storage, long topicmap_id)
INTERNAL:
-
-
Method Detail
-
getStorage
public RDBMSStorage getStorage()
INTERNAL: Returns the proxy storage implementation used by the topic map store.
-
getImplementation
public int getImplementation()
Description copied from interface:TopicMapStoreIF
PUBLIC: Returns the topic map implementation identifier.- Returns:
TopicMapStoreIF.IN_MEMORY_IMPLEMENTATION
orTopicMapStoreIF.RDBMS_IMPLEMENTATION
flags.
-
isTransactional
public boolean isTransactional()
Description copied from interface:TopicMapStoreIF
PUBLIC: Returns true if the store supports transactions.- Returns:
- Boolean: true if transactional, false if not.
-
getBaseAddress
public LocatorIF getBaseAddress()
Description copied from interface:TopicMapStoreIF
PUBLIC: Gets a locator of the topic map in the store. This can be used as a locator for the topic map as a whole. The locator can be resolved to a store that holds the topic map.- Specified by:
getBaseAddress
in interfaceTopicMapStoreIF
- Overrides:
getBaseAddress
in classAbstractTopicMapStore
- Returns:
- A locator to the topic map in the store; an object implementing LocatorIF.
-
setBaseAddress
public void setBaseAddress(LocatorIF base_address)
Description copied from interface:TopicMapStoreIF
EXPERIMENTAL: Sets the persistent base address of the store.
-
setBaseAddressOverride
public void setBaseAddressOverride(LocatorIF base_address)
INTERNAL: Sets the apparent base address of the store. The value of this field is not considered persistent and may for that reason be transaction specific.
-
getTransactionIF
public TransactionIF getTransactionIF()
-
getTransaction
public TopicMapTransactionIF getTransaction()
- Specified by:
getTransaction
in classAbstractTopicMapStore
-
getTopicMap
public TopicMapIF getTopicMap()
Description copied from interface:TopicMapStoreIF
PUBLIC: Gets the topic map that is accessible through the root transaction of the store.- Specified by:
getTopicMap
in interfaceTopicMapStoreIF
- Overrides:
getTopicMap
in classAbstractTopicMapStore
- Returns:
- The topic map in the root transaction; an object implementing TopicMapIF. This method is a shorthand for getTransaction().getTopicMap(). If the store is not open when this method is called it will be opened automatically.
-
commit
public void commit()
Description copied from interface:TopicMapStoreIF
PUBLIC: Commits and deactivates the top-level transaction. This method is a shorthand for getTransaction().commit().- Specified by:
commit
in interfaceTopicMapStoreIF
- Overrides:
commit
in classAbstractTopicMapStore
-
abort
public void abort()
Description copied from interface:TopicMapStoreIF
PUBLIC: Aborts and deactivates the top-level transaction; all changes made inside the root transaction are lost. This method is a shorthand for getTransaction().abort().- Specified by:
abort
in interfaceTopicMapStoreIF
- Overrides:
abort
in classAbstractTopicMapStore
-
clear
public void clear()
-
delete
protected boolean delete(RDBMSTopicMapReference ref)
-
delete
public void delete(boolean force) throws NotRemovableException
Description copied from interface:TopicMapStoreIF
PUBLIC: Deletes the TopicMapIF from the data store. The store is closed after the topic map has been deleted. A deleted store cannot be reopened.If the force flag is false and the topic map contains any objects, i.e. topics and associations, a NotRemovableException will be thrown. The topic map will not be modified or closed if this is so.
If the force flag is true, the topic map will be deleted even if it contains any objects.
Note: if you're retrieved the store via a TopicMapReferenceIF then call delete(boolean) on the reference instead.
- Specified by:
delete
in interfaceTopicMapStoreIF
- Overrides:
delete
in classAbstractTopicMapStore
- Throws:
NotRemovableException
-
getProperty
public String getProperty(String name)
INTERNAL: Gets the value of the specified store property.
-
close
public void close()
Description copied from interface:TopicMapStoreIF
PUBLIC: Closes the store and aborts the transaction if active.
-
close
public void close(boolean returnStore)
- Specified by:
close
in classAbstractTopicMapStore
-
validate
public boolean validate()
- Overrides:
validate
in classAbstractTopicMapStore
-
evictObject
public void evictObject(String object_id)
INTERNAL: Evicts the given object from the shared RDBMS caches.- Since:
- 3.3.0
-
clearCache
public void clearCache()
INTERNAL: Empties the shared RDBMS caches.- Since:
- 2.2.1
-
writeReport
public void writeReport(String filename, boolean dumpCaches) throws IOException
EXPERIMENTAL: Writes a cache statistics report to the given file.- Parameters:
filename
- the name of the file to write the report todumpCaches
- whether to include detailed cache dumps- Throws:
IOException
- Since:
- 2.2.1
-
writeReport
public void writeReport(Writer out, boolean dumpCaches) throws IOException
EXPERIMENTAL: Writes a cache statistics report to the given writer.- Parameters:
out
- the writer to write the report todumpCaches
- whether to include detailed cache dumps- Throws:
IOException
- Since:
- 2.2.1
-
writeIdentityMap
public void writeIdentityMap(Writer out, boolean dump) throws IOException
EXPERIMENTAL: Dumps the identity map to the given writer.- Parameters:
out
- the writer to write the report to- Throws:
IOException
- Since:
- 3.0
-
prefetchObjectsById
public boolean prefetchObjectsById(Collection<String> object_ids)
-
prefetchFieldsById
public boolean prefetchFieldsById(Collection<String> object_ids, int field)
-
getIdentityForObjectId
protected IdentityIF getIdentityForObjectId(TransactionIF txn, String object_id)
-
prefetch
public boolean prefetch(int type, int field, boolean traverse, Collection objects)
-
prefetch
public boolean prefetch(int type, int[] fields, boolean[] traverse, Collection objects)
-
prefetchRolesByType
public void prefetchRolesByType(Collection players, TopicIF rtype, TopicIF atype)
-
getLongId
public long getLongId()
-
getLongId
public long getLongId(TMObjectIF o)
-
flush
public void flush()
-
getConnection
public Connection getConnection()
-
getConnectionFactory
public ConnectionFactoryIF getConnectionFactory(boolean readonly)
-
merged
public void merged(TMObjectIF source, TMObjectIF target)
INTERNAL: Called by MergeUtils to notify transaction of a performed merge.- Parameters:
source
-target
-
-
getEventManager
public EventManagerIF getEventManager()
- Specified by:
getEventManager
in classAbstractTopicMapStore
-
-