Package org.eclipse.emf.cdo.spi.server

# Class Store

java.lang.Object
org.eclipse.net4j.util.event.Notifier
org.eclipse.net4j.util.lifecycle.Lifecycle
org.eclipse.emf.cdo.spi.server.Store

All Implemented Interfaces:
  `IStore`, `InternalStore`, `org.eclipse.net4j.util.collection.Entity.Store.Provider`, `org.eclipse.net4j.util.container.IManagedContainerProvider`, `org.eclipse.net4j.util.event.INotifier`, `org.eclipse.net4j.util.event.INotifier.INotifier2`, `org.eclipse.net4j.util.lifecycle.IDeactivateable`, `org.eclipse.net4j.util.lifecycle.ILifecycle`, `org.eclipse.net4j.util.lifecycle.ILifecycle.DeferrableActivation`

Direct Known Subclasses:
  `LongIDStore`

public abstract class Store extends org.eclipse.net4j.util.lifecycle.Lifecycle implements InternalStore, org.eclipse.net4j.util.collection.Entity.Store.Provider, org.eclipse.net4j.util.container.IManagedContainerProvider
If the meaning of this type isn't clear, there really should be more of a description here...

Since:
  2.0
Author:
  Eike Stepper

## Nested Class Summary

## Nested classes/interfaces inherited from class org.eclipse.net4j.util.event.Notifier

`org.eclipse.net4j.util.event.Notifier.Cancelation`

## Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.ILifecycle

`org.eclipse.net4j.util.lifecycle.ILifecycle.DeferrableActivation`

## Nested classes/interfaces inherited from interface org.eclipse.net4j.util.event.INotifier

`org.eclipse.net4j.util.event.INotifier.INotifier2`

## Nested classes/interfaces inherited from interface org.eclipse.emf.cdo.spi.server.InternalStore

`InternalStore.NoChangeSets, InternalStore.NoCommitInfos, InternalStore.NoDurableLocking, InternalStore.NoExternalReferences, InternalStore.NoFeatureMaps, InternalStore.NoHandleRevisions, InternalStore.NoLargeObjects, InternalStore.NoQueryXRefs, InternalStore.NoRawAccess`

## Nested classes/interfaces inherited from interface org.eclipse.emf.cdo.server.IStore

`IStore.CanHandleClientAssignedIDs, IStore.ChangeFormat, IStore.RevisionParallelism, IStore.RevisionTemporality`

## Field Summary

Fields
Modifier and Type
Field
Description
`static final long`
`UNSPECIFIED_DATE`
Deprecated.
Use CDOBranchPoint.UNSPECIFIED_DATE

### Fields inherited from class org.eclipse.net4j.util.lifecycle.Lifecycle

`USE_LABEL`

## Constructor Summary

Constructors
Constructor
Description
`Store(String type)`
`Store(String type, Set<CDOID.ObjectType> objectIDTypes, Set<IStore.ChangeFormat> supportedChangeFormats, Set<IStore.RevisionTemporality> supportedRevisionTemporalities, Set<IStore.RevisionParallelism> supportedRevisionParallelisms)`

## Method Summary

Modifier and Type
Method
Description
`protected org.eclipse.net4j.util.collection.Entity`
`computeEntity(String name)`
`protected void`
`computeEntityNames(Consumer<String> consumer)`
`static IStoreAccessor.QueryResourcesContext.ExactMatch`
`createExactMatchContext(CDOID folderID, String name, CDOBranchPoint branchPoint)`
`protected abstract IStoreAccessor`
`createReader(ISession session)`
Creates and returns a new `IStoreAccessor` instance.
`InternalCDORevision`
`createRevision(EClass eClass, CDOID id)`
`protected abstract IStoreAccessor`
`createWriter(ITransaction transaction)`
Creates and returns a new `IStoreAccessor` instance.
`protected final org.eclipse.net4j.util.collection.Entity.Builder`
`entityBuilder()`
`org.eclipse.net4j.util.container.IManagedContainer`
`getContainer()`
`org.eclipse.net4j.util.collection.Entity.Store`
`getEntityStore()`
`org.eclipse.net4j.util.om.monitor.ProgressDistributor`
`getIndicatingCommitDistributor()`
`int`
`getLastBranchID()`
Returns the id of the last branch that has been created in this store.
`long`
`getLastCommitTime()`
Returns the time stamp of the last successful commit operation.
`int`
`getLastLocalBranchID()`
Returns the id of the last local branch that has been created in this store.
`long`
`getLastNonLocalCommitTime()`
Returns the time stamp of the last successful commit operation to a non-local `branch`.
`int`
`getNextBranchID()`
`int`
`getNextLocalBranchID()`
`Set<CDOID.ObjectType>`
`getObjectIDTypes()`
`IStoreAccessor`
`getReader(ISession session)`
Returns a reader that can be used to read from this store in the context of the given session.
`protected abstract StoreAccessorPool`
`getReaderPool(ISession session, boolean forReleasing)`
Returns a `pool` that may contain `IStoreAccessor` instances that are compatible with the given session.
`InternalRepository`
`getRepository()`
`IStore.RevisionParallelism`
`getRevisionParallelism()`
`IStore.RevisionTemporality`
`getRevisionTemporality()`
`Set<IStore.ChangeFormat>`
`getSupportedChangeFormats()`
`final Set<IStore.RevisionParallelism>`
`getSupportedRevisionParallelisms()`
`Set<IStore.RevisionTemporality>`
`getSupportedRevisionTemporalities()`
`final String`
`getType()`
`IStoreAccessor`
`getWriter(ITransaction transaction)`
Returns a writer that can be used to write to this store in the context of the given view.
`protected abstract StoreAccessorPool`
`getWriterPool(IView view, boolean forReleasing)`
Returns a `pool` that may contain `IStoreAccessor` instances that are compatible with the given session.
`static String`
`idToString(CDOID id)`
`boolean`
`isDropAllDataOnActivate()`
`protected void`
`releaseAccessor(StoreAccessorBase accessor)`
`protected static <T> Set<T>`
`set(T... elements)`
`void`
`setDropAllDataOnActivate(boolean dropAllDataOnActivate)`
`void`
`setLastBranchID(int lastBranchID)`
`void`
`setLastCommitTime(long lastCommitTime)`
`void`
`setLastLocalBranchID(int lastLocalBranchID)`
`void`
`setLastNonLocalCommitTime(long lastNonLocalCommitTime)`
`protected void`
`setObjectIDTypes(Set<CDOID.ObjectType> objectIDTypes)`
`void`
`setRepository(IRepository repository)`
`void`
`setRevisionParallelism(IStore.RevisionParallelism revisionParallelism)`
`void`
`setRevisionTemporality(IStore.RevisionTemporality revisionTemporality)`
`static CDOID`
`stringToID(String string)`

### Methods inherited from class org.eclipse.net4j.util.lifecycle.Lifecycle

`activate, checkActive, checkArg, checkArg, checkInactive, checkNull, checkState, checkState, deactivate, deferredActivate, doActivate, doAfterActivate, doBeforeActivate, doBeforeDeactivate, doDeactivate, dump, getLifecycleState, isActive, isDeferredActivation, toString`

### Methods inherited from class org.eclipse.net4j.util.event.Notifier

`addListener, addUniqueListener, fireEvent, fireEvent, fireEvent, fireThrowable, firstListenerAdded, getListeners, getNotificationService, hasListener, hasListeners, lastListenerRemoved, listenerAdded, listenerRemoved, removeListener`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface org.eclipse.net4j.util.lifecycle.ILifecycle

`activate, deactivate, getLifecycleState, isActive`

### Methods inherited from interface org.eclipse.net4j.util.event.INotifier

`addListener, getListeners, hasListeners, removeListener`

### Methods inherited from interface org.eclipse.emf.cdo.spi.server.InternalStore

`isLocal, setCreationTime`

### Methods inherited from interface org.eclipse.emf.cdo.server.IStore

`createObjectID, getCreationTime, getPersistentProperties, getPersistentProperties, isFirstStart, removePersistentProperties, setPersistentProperties`

## Field Details

### UNSPECIFIED_DATE

@Deprecated public static final long UNSPECIFIED_DATE
Deprecated.
Use CDOBranchPoint.UNSPECIFIED_DATE

Since:
  3.0
See Also:
  - Constant Field Values

## Constructor Details

### Store

public Store(String type, Set<CDOID.ObjectType> objectIDTypes, Set<IStore.ChangeFormat> supportedChangeFormats, Set<IStore.RevisionTemporality> supportedRevisionTemporalities, Set<IStore.RevisionParallelism> supportedRevisionParallelisms)

Since:
  3.0

### Store

public Store(String type)

Since:
  4.2

## Method Details

### getType

public final String getType()

Specified by:
  `getType` in interface `IStore`

### getObjectIDTypes

public Set<CDOID.ObjectType> getObjectIDTypes()

Specified by:
  `getObjectIDTypes` in interface `IStore`
Since:
  3.0

### setObjectIDTypes

protected void setObjectIDTypes(Set<CDOID.ObjectType> objectIDTypes)

Since:
  4.0

### getSupportedChangeFormats

public Set<IStore.ChangeFormat> getSupportedChangeFormats()

Specified by:
  `getSupportedChangeFormats` in interface `IStore`

### getSupportedRevisionTemporalities

public Set<IStore.RevisionTemporality> getSupportedRevisionTemporalities()

Specified by:
  `getSupportedRevisionTemporalities` in interface `IStore`

### getSupportedRevisionParallelisms

public final Set<IStore.RevisionParallelism> getSupportedRevisionParallelisms()

Specified by:
  `getSupportedRevisionParallelisms` in interface `IStore`

### getRevisionTemporality

public IStore.RevisionTemporality getRevisionTemporality()

Specified by:
  `getRevisionTemporality` in interface `IStore`

### setRevisionTemporality

public void setRevisionTemporality(IStore.RevisionTemporality revisionTemporality)

Specified by:
  `setRevisionTemporality` in interface `InternalStore`

### getRevisionParallelism

public IStore.RevisionParallelism getRevisionParallelism()

Specified by:
  `getRevisionParallelism` in interface `IStore`

### setRevisionParallelism

public void setRevisionParallelism(IStore.RevisionParallelism revisionParallelism)

Specified by:
  `setRevisionParallelism` in interface `InternalStore`

### getRepository

public InternalRepository getRepository()

Specified by:
  `getRepository` in interface `InternalStore`
Specified by:
  `getRepository` in interface `IStore`
Since:
  3.0

### setRepository

public void setRepository(IRepository repository)

Specified by:
  `setRepository` in interface `InternalStore`

### isDropAllDataOnActivate

public boolean isDropAllDataOnActivate()

Specified by:
  `isDropAllDataOnActivate` in interface `InternalStore`
Since:
  4.0

### setDropAllDataOnActivate

public void setDropAllDataOnActivate(boolean dropAllDataOnActivate)

Specified by:
  `setDropAllDataOnActivate` in interface `InternalStore`
Since:
  4.0

### getLastBranchID

public int getLastBranchID()
Description copied from interface: `IStore`
Returns the id of the last branch that has been created in this store.

Specified by:
  `getLastBranchID` in interface `IStore`
Since:
  3.0

### setLastBranchID

public void setLastBranchID(int lastBranchID)

Specified by:
  `setLastBranchID` in interface `InternalStore`
Since:
  3.0

### getNextBranchID

public int getNextBranchID()

Specified by:
  `getNextBranchID` in interface `InternalStore`
Since:
  3.0

### getLastLocalBranchID

public int getLastLocalBranchID()
Description copied from interface: `IStore`
Returns the id of the last local branch that has been created in this store.

Specified by:
  `getLastLocalBranchID` in interface `IStore`
Since:
  3.0

### setLastLocalBranchID

public void setLastLocalBranchID(int lastLocalBranchID)

Specified by:
  `setLastLocalBranchID` in interface `InternalStore`
Since:
  3.0

### getNextLocalBranchID

public int getNextLocalBranchID()

Specified by:
  `getNextLocalBranchID` in interface `InternalStore`
Since:
  3.0

### getLastCommitTime

public long getLastCommitTime()
Description copied from interface: `IStore`
Returns the time stamp of the last successful commit operation.

Specified by:
  `getLastCommitTime` in interface `IStore`
Since:
  3.0

### setLastCommitTime

public void setLastCommitTime(long lastCommitTime)

Specified by:
  `setLastCommitTime` in interface `InternalStore`
Since:
  3.0

### getLastNonLocalCommitTime

public long getLastNonLocalCommitTime()
Description copied from interface: `IStore`
Returns the time stamp of the last successful commit operation to a non-local `branch`.

Specified by:
  `getLastNonLocalCommitTime` in interface `IStore`
Since:
  3.0

### setLastNonLocalCommitTime

public void setLastNonLocalCommitTime(long lastNonLocalCommitTime)

Specified by:
  `setLastNonLocalCommitTime` in interface `InternalStore`
Since:
  3.0

### getReader

public IStoreAccessor getReader(ISession session)
Description copied from interface: `IStore`
Returns a reader that can be used to read from this store in the context of the given session.

Specified by:
  `getReader` in interface `IStore`
Parameters:
  `session` - The session that should be used as a context for read access or `null`. The store implementor is free to interpret and use the session in a manner suitable for him or ignore it at all. It is meant only as a hint. Implementor can use it as a key into a cache and/or register a `LifecycleEventAdapter` with it to intercept cleanup on session close. Note however that the session can be `null`, for example during startup of the server while the repositories are initialized but before any user session has been opened.
Returns:
  a reader that can be used to read from this store in the context of the given session, never `null`.

### getWriter

public IStoreAccessor getWriter(ITransaction transaction)
Description copied from interface: `IStore`
Returns a writer that can be used to write to this store in the context of the given view. The given view is always marked as a transaction.

Specified by:
  `getWriter` in interface `IStore`
Parameters:
  `transaction` - The view that must be used as a context for write access. The store implementor is free to interpret and use the view in a manner suitable for him or ignore it at all. It is meant only as a hint. Implementor can use it as a key into a cache and/or register a `LifecycleEventAdapter` with it to intercept cleanup on view close.
Returns:
  a writer that can be used to write to this store in the context of the given view, never `null`.

### getIndicatingCommitDistributor

public org.eclipse.net4j.util.om.monitor.ProgressDistributor getIndicatingCommitDistributor()

Specified by:
  `getIndicatingCommitDistributor` in interface `IStore`

### createRevision

public InternalCDORevision createRevision(EClass eClass, CDOID id)

Since:
  3.0

### getContainer

public org.eclipse.net4j.util.container.IManagedContainer getContainer()

Specified by:
  `getContainer` in interface `org.eclipse.net4j.util.container.IManagedContainerProvider`
Since:
  4.25

### getEntityStore

public org.eclipse.net4j.util.collection.Entity.Store getEntityStore()

Specified by:
  `getEntityStore` in interface `org.eclipse.net4j.util.collection.Entity.Store.Provider`

### computeEntityNames

protected void computeEntityNames(Consumer<String> consumer)

Since:
  4.22

### computeEntity

protected org.eclipse.net4j.util.collection.Entity computeEntity(String name)

Since:
  4.22

### entityBuilder

protected final org.eclipse.net4j.util.collection.Entity.Builder entityBuilder()

Since:
  4.22

### releaseAccessor

protected void releaseAccessor(StoreAccessorBase accessor)

Since:
  4.0

### getReaderPool

protected abstract StoreAccessorPool getReaderPool(ISession session, boolean forReleasing)
Returns a `pool` that may contain `IStoreAccessor` instances that are compatible with the given session. The implementor may return `null` to indicate that no pooling occurs. It's also left to the implementors choice how to determine the appropriate pool instance to be used for the given session, for example it could always return the same pool instance, regardless of the given session.

If the implementor of this method decides to create pools that are only compatible with certain sessions or views, then it is his responsibility to listen to `REMOVED` events sent by either the `ISessionManager` (indicating that a session is closed) or any of its sessions (indicating that a view is closed). Note: Closing a session implies that all contained views are closed silently without firing respective events!

Parameters:
  `session` - The context which the pool must be compatible with. Must not be `null`.
  `forReleasing` - Enables lazy pool creation. The implementor is not supposed to create a new pool if `false` is passed. If `true` is passed it's up to the implementor whether to create a new pool or not.

### getWriterPool

protected abstract StoreAccessorPool getWriterPool(IView view, boolean forReleasing)
Returns a `pool` that may contain `IStoreAccessor` instances that are compatible with the given session. The implementor may return `null` to indicate that no pooling occurs. It's also left to the implementors choice how to determine the appropriate pool instance to be used for the given session, for example it could always return the same pool instance, regardless of the given session.

If the implementor of this method decides to create pools that are only compatible with certain sessions or views, then it is his responsibility to listen to `REMOVED` events sent by either the `ISessionManager` (indicating that a session is closed) or any of its sessions (indicating that a view is closed). Note: Closing a session implies that all contained views are closed sliently without firing respective events!

Parameters:
  `view` - The context which the pool must be compatible with. Must not be `null`.
  `forReleasing` - Enables lazy pool creation. The implementor is not supposed to create a new pool if `false` is passed. If `true` is passed it's up to the implementor whether to create a new pool or not.

### createReader

protected abstract IStoreAccessor createReader(ISession session)
Creates and returns a new `IStoreAccessor` instance. The caller of this method is responsible for `activating` the new instance.

### createWriter

protected abstract IStoreAccessor createWriter(ITransaction transaction)
Creates and returns a new `IStoreAccessor` instance. The caller of this method is responsible for `activating` the new instance.

### set

@SafeVarargs protected static <T> Set<T> set(T... elements)

### idToString

public static String idToString(CDOID id)

Since:
  4.0

### stringToID

public static CDOID stringToID(String string)

Since:
  4.0

### createExactMatchContext

public static IStoreAccessor.QueryResourcesContext.ExactMatch createExactMatchContext(CDOID folderID, String name, CDOBranchPoint branchPoint)

Since:
  3.0