public abstract class AbstractSequentialIdGenerator extends GenericService implements IdGenerator
IdGenerator
services that generate
sequential ids. This class implements a simple counter mechanism
for generating ids.
This class makes use of IdSpace
s. Ids are unique
within an IdSpace
, but not necessarily across
IdSpace
s. This allows a single id generator to
generate ids for a related set of objects.
This class provides the a default IdSpace
, which is
always available. This class does not make use of the
batchSize
or lastSeed
properties of
IdSpace
.
IdSpace
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
CLASS_VERSION
Class version string
|
protected static java.lang.String |
ERR_BAD_SPACE |
protected static java.lang.String |
ERR_ROLLBACK |
protected static java.lang.String |
ERR_UNSUPPORTED |
protected java.util.Map |
mSpaces
currently defined id spaces
|
protected static java.lang.String |
RESOURCE_BUNDLE_NAME
resource bundle name
|
protected static java.util.ResourceBundle |
sResourceBundle
resource bundle
|
SERVICE_INFO_KEY
DEFAULT_LOG_TRACE_STATUS
DEFAULT_LOG_DEBUG_STATUS, DEFAULT_LOG_ERROR_STATUS, DEFAULT_LOG_INFO_STATUS, DEFAULT_LOG_WARNING_STATUS
Constructor and Description |
---|
AbstractSequentialIdGenerator()
Construct a generator
|
Modifier and Type | Method and Description |
---|---|
boolean |
addIdSpace(IdSpace pSpace)
Add an id space to the id generator.
|
void |
doStartService()
Start the service
|
static java.lang.String |
format(java.lang.String pMsgKey)
Utility for formatting messages with no arguments
|
static java.lang.String |
format(java.lang.String pMsgKey,
java.lang.Object pArg)
Utility for formatting messages with a single argument
|
static java.lang.String |
format(java.lang.String pMsgKey,
java.lang.Object[] pArgs)
Utility for formatting predefined messages using the current
resource bundle.
|
static java.lang.String |
format(java.lang.String pMsgKey,
java.lang.Object pArg1,
java.lang.Object pArg2)
Utility for formatting messages with two arguments
|
long |
generateLongId()
Generate a long id in the default name space
|
long |
generateLongId(java.lang.String pIdSpaceName)
Generate a long id in the specified name space.
|
java.lang.String |
generateStringId()
Generate a String id in the default name space.
|
java.lang.String |
generateStringId(java.lang.String pIdSpaceName)
Generate a string id in the specified name space.
|
boolean |
getAutoCreate()
Get property
autoCreate |
protected static java.util.ResourceBundle |
getBundle()
Get the resource bundle for this class to use.
|
IdSpace |
getDefaultIdSpace()
Get property DefaultIdSpace
|
java.lang.String |
getDefaultIdSpaceName()
Get property DefaultIdSpaceName
|
IdSpace |
getIdSpace(java.lang.String pName)
Get a copy of the named id space from the generator.
|
java.util.Map |
getIdSpaces()
Get a copy of all the spaces defined in the generator.
|
static java.lang.String |
getResourceBundleName()
Get name of resource bundle.
|
void |
initialize()
Initialize the generator.
|
boolean |
isAutoCreate()
Test property
autoCreate |
protected long |
postGenerateLongId(java.lang.String pIdSpaceName,
long pCandidateId)
Hook for subclasses to change the generated id if
desired.
|
protected java.lang.String |
postGenerateStringId(java.lang.String pIdSpaceName,
java.lang.String pCandidateId)
Hook for subclasses to change the generated id if
desired.
|
void |
removeAllIdSpaces()
Remove all id spaces from the id generator.
|
boolean |
removeIdSpace(IdSpace pSpace)
Remove an id space from the id generator.
|
void |
setAutoCreate(boolean pAutoCreate)
Set property
autoCreate |
void |
setDefaultIdSpace(IdSpace pDefaultIdSpace)
Set property DefaultIdSpace.
|
void |
setDefaultIdSpaceName(java.lang.String pDefaultIdSpaceName)
Set property DefaultIdSpaceName.
|
void |
setHighWaterMark(java.lang.String pIdSpaceName,
long pHighWaterMark)
Set the high water mark for the specified id space.
|
java.lang.String |
toString()
Get a string representation of this object
|
addLogListener, createAdminServlet, doStopService, getAbsoluteName, getAdminServlet, getAdminServletOutputStreamEncoding, getLoggingForVlogging, getLogListenerCount, getLogListeners, getName, getNameContext, getNucleus, getRoot, getServiceConfiguration, getServiceInfo, isAdminServletUseServletOutputStream, isLoggingDebug, isLoggingError, isLoggingInfo, isLoggingTrace, isLoggingWarning, isRunning, logDebug, logDebug, logDebug, logError, logError, logError, logInfo, logInfo, logInfo, logTrace, logTrace, logTrace, logWarning, logWarning, logWarning, nameContextElementBound, nameContextElementUnbound, removeLogListener, reResolveThis, resolveName, resolveName, resolveName, resolveName, sendLogEvent, setAdminServletOutputStreamEncoding, setAdminServletUseServletOutputStream, setLoggingDebug, setLoggingError, setLoggingInfo, setLoggingTrace, setLoggingWarning, setNucleus, setServiceInfo, startService, stopService
vlogDebug, vlogDebug, vlogDebug, vlogDebug, vlogDebugTrace, vlogError, vlogError, vlogError, vlogError, vlogInfo, vlogInfo, vlogInfo, vlogInfo, vlogTrace, vlogTrace, vlogTrace, vlogTrace, vlogWarning, vlogWarning, vlogWarning, vlogWarning
public static java.lang.String CLASS_VERSION
protected static java.util.ResourceBundle sResourceBundle
protected static java.lang.String RESOURCE_BUNDLE_NAME
protected static java.lang.String ERR_UNSUPPORTED
protected static java.lang.String ERR_BAD_SPACE
protected static java.lang.String ERR_ROLLBACK
protected java.util.Map mSpaces
public AbstractSequentialIdGenerator()
public void setDefaultIdSpaceName(java.lang.String pDefaultIdSpaceName)
DefaultIdSpace
is non-null we use its name instead.pDefaultIdSpaceName
- new value to setpublic java.lang.String getDefaultIdSpaceName()
public void setDefaultIdSpace(IdSpace pDefaultIdSpace)
DefaultIdSpaceName
property to be set as well.pDefaultIdSpace
- new value to setpublic IdSpace getDefaultIdSpace()
getDefaultIdSpace
in interface IdGenerator
public void setAutoCreate(boolean pAutoCreate)
autoCreate
setAutoCreate
in interface IdGenerator
pAutoCreate
- new value to setpublic boolean getAutoCreate()
autoCreate
getAutoCreate
in interface IdGenerator
autoCreate
public boolean isAutoCreate()
autoCreate
isAutoCreate
in interface IdGenerator
autoCreate
public long generateLongId() throws IdGeneratorException
generateLongId
in interface IdGenerator
IdGeneratorException
- if there is an error generating
the idpublic java.lang.String generateStringId() throws IdGeneratorException
generateStringId
in interface IdGenerator
IdGeneratorException
- if there is an error generating
the idpublic long generateLongId(java.lang.String pIdSpaceName) throws IdGeneratorException
generateLongId
in interface IdGenerator
pIdSpaceName
- name of id space to use, null means use
the anonymous, default spaceIdGeneratorException
- if there is an error generating
the idpublic java.lang.String generateStringId(java.lang.String pIdSpaceName) throws IdGeneratorException
generateStringId
in interface IdGenerator
pIdSpaceName
- name of id space to use, null means use
the anonymous, default spaceIdGeneratorException
- if there is an error generating
the idpublic IdSpace getIdSpace(java.lang.String pName)
getIdSpace
in interface IdGenerator
name
- of id space to getpublic java.util.Map getIdSpaces()
getIdSpaces
in interface IdGenerator
Map
of all the id spaces defined in the
generator. The keys of the Map
are the names of the
spaces, and the values are IdSpace
objectspublic boolean addIdSpace(IdSpace pSpace) throws IdGeneratorException
addIdSpace
in interface IdGenerator
pSpace
- space to add, cannot be nulljava.lang.IllegalArgumentException
- if the specified space is
null or otherwise invalidIdGeneratorException
- if there is trouble adding the spacepublic boolean removeIdSpace(IdSpace pSpace) throws IdGeneratorException
removeIdSpace
in interface IdGenerator
pSpace
- space to remove, cannot be nulljava.lang.IllegalArgumentException
- if the specified space is
null or otherwise invalidIdGeneratorException
- if there is trouble removing the spacepublic void removeAllIdSpaces() throws IdGeneratorException
removeAllIdSpaces
in interface IdGenerator
IdGeneratorException
- if there is trouble adding the spacepublic void initialize() throws IdGeneratorException
initialize
in interface IdGenerator
IdGeneratorException
- if there is an error initializingprotected long postGenerateLongId(java.lang.String pIdSpaceName, long pCandidateId) throws IdGeneratorException
pCandidateId
- suggested generated idIdGeneratorException
- if there is an error generating
the idprotected java.lang.String postGenerateStringId(java.lang.String pIdSpaceName, java.lang.String pCandidateId) throws IdGeneratorException
pCandidateId
- suggested generated idIdGeneratorException
- if there is an error generating
the idpublic void doStartService() throws ServiceException
doStartService
in class GenericService
ServiceException
- if there is a problem starting uppublic java.lang.String toString()
toString
in class java.lang.Object
public void setHighWaterMark(java.lang.String pIdSpaceName, long pHighWaterMark) throws IdGeneratorException
pIdSpaceName
- name of id space to usepHighWaterMark
- high water mark to setIdGeneratorException
- if this feature is not supported for
this id generator or if the id generator cannot guarantee that the
specified high water mark can be setpublic static java.lang.String format(java.lang.String pMsgKey, java.lang.Object[] pArgs)
pMsgKey
- message id to formatpArgs
- arguments to fill in in messagepublic static java.lang.String format(java.lang.String pMsgKey)
public static java.lang.String format(java.lang.String pMsgKey, java.lang.Object pArg)
public static java.lang.String format(java.lang.String pMsgKey, java.lang.Object pArg1, java.lang.Object pArg2)
public static java.lang.String getResourceBundleName()
protected static java.util.ResourceBundle getBundle()