public class TimestampLockingPolicy extends VersionLockingPolicy
Purpose: Used to allow a single version timestamp to be used for optimistic locking.
Modifier and Type | Field and Description |
---|---|
static int |
LOCAL_TIME |
protected int |
retrieveTimeFrom |
static int |
SERVER_TIME |
cachedExpression, descriptor, IN_CACHE, IN_OBJECT, lockValueStored, writeLockField
Constructor and Description |
---|
TimestampLockingPolicy()
PUBLIC:
Create a new TimestampLockingPolicy.
|
TimestampLockingPolicy(DatabaseField field)
INTERNAL:
Create a new TimestampLockingPolicy.
|
TimestampLockingPolicy(String fieldName)
PUBLIC:
Create a new TimestampLockingPolicy.
|
Modifier and Type | Method and Description |
---|---|
int |
compareWriteLockValues(Object value1,
Object value2)
INTERNAL:
This method compares two writeLockValues.
|
Object |
getBaseValue()
INTERNAL:
This is the base value that is older than all other values, it is used in the place of
null in some situations.
|
protected Class |
getDefaultLockingFieldType()
INTERNAL:
Return the default timestamp locking filed java type, default is Timestamp.
|
protected Object |
getInitialWriteValue(AbstractSession session)
INTERNAL:
returns the initial locking value
|
Object |
getNewLockValue(ModifyQuery query)
INTERNAL:
Returns the new Timestamp value.
|
Object |
getValueToPutInCache(AbstractRecord row,
AbstractSession session)
INTERNAL:
Return the value that should be stored in the identity map.
|
int |
getVersionDifference(Object currentValue,
Object domainObject,
Vector primaryKeys,
AbstractSession session)
INTERNAL:
Return the number of versions different between these objects.
|
Expression |
getWriteLockUpdateExpression(ExpressionBuilder builder)
INTERNAL:
Retrun an expression that updates the write lock
|
Object |
getWriteLockValue(Object domainObject,
Vector primaryKey,
AbstractSession session)
INTERNAL:
This method will return the optimistic lock value for the object
|
protected Number |
incrementWriteLockValue(Number numberValue)
INTERNAL:
Timestamp versioning should not be able to do this.
|
boolean |
isChildWriteLockValueGreater(AbstractSession session,
Vector primaryKey,
Class original,
ObjectChangeSet changeSet)
INTERNAL:
Update the parent write lock value if the objectChangeSet's is greater.
|
boolean |
isChildWriteLockValueGreater(UnitOfWorkImpl uow,
Vector primaryKey,
Class original)
INTERNAL:
Update the parent write lock value if the unit of works has been incremented.
|
boolean |
isNewerVersion(AbstractRecord databaseRow,
Object domainObject,
Vector primaryKey,
AbstractSession session)
INTERNAL:
Compares the value from the row and from the object (or cache).
|
boolean |
isNewerVersion(Object currentValue,
Object domainObject,
Vector primaryKey,
AbstractSession session)
INTERNAL:
Compares the value with the value from the object (or cache).
|
void |
setUsesServerTime(boolean usesServerTime)
PUBLIC:
Set if policy uses server time.
|
void |
useLocalTime()
PUBLIC:
set this policy to get the time from the local machine.
|
void |
useServerTime()
PUBLIC:
set this policy to get the time from the server.
|
boolean |
usesLocalTime()
PUBLIC:
Return true if policy uses local time.
|
boolean |
usesServerTime()
PUBLIC:
Return true if policy uses server time.
|
addLockFieldsToUpdateRow, addLockValuesToTranslationRow, buildDeleteExpression, buildExpression, buildUpdateExpression, clone, getDescriptor, getUnmappedFields, getWriteLockField, getWriteLockFieldName, initialize, initializeProperties, isStoredInCache, isStoredInObject, lockValueFromObject, mappingFromLockField, mergeIntoParentCache, prepareFetchGroupForReadQuery, setDescriptor, setIsStoredInCache, setupWriteFieldsForInsert, setWriteLockField, setWriteLockFieldName, storeInCache, storeInObject, updateRowAndObjectForUpdate, updateWriteLockValueForWrite, validateDelete, validateUpdate, writeLockValueIntoRow
protected int retrieveTimeFrom
public static final int SERVER_TIME
public static final int LOCAL_TIME
public TimestampLockingPolicy()
public TimestampLockingPolicy(String fieldName)
fieldName
- the field where the write lock value will be stored.public TimestampLockingPolicy(DatabaseField field)
field
- the field where the write lock value will be stored.public int compareWriteLockValues(Object value1, Object value2)
compareWriteLockValues
in interface OptimisticLockingPolicy
compareWriteLockValues
in class VersionLockingPolicy
protected Class getDefaultLockingFieldType()
getDefaultLockingFieldType
in class VersionLockingPolicy
public Object getBaseValue()
getBaseValue
in interface OptimisticLockingPolicy
getBaseValue
in class VersionLockingPolicy
protected Object getInitialWriteValue(AbstractSession session)
getInitialWriteValue
in class VersionLockingPolicy
public Object getNewLockValue(ModifyQuery query)
getNewLockValue
in class VersionLockingPolicy
public Object getValueToPutInCache(AbstractRecord row, AbstractSession session)
getValueToPutInCache
in interface OptimisticLockingPolicy
getValueToPutInCache
in class VersionLockingPolicy
public int getVersionDifference(Object currentValue, Object domainObject, Vector primaryKeys, AbstractSession session)
getVersionDifference
in interface OptimisticLockingPolicy
getVersionDifference
in class VersionLockingPolicy
currentValue
- the new lock valuedomainObject
- the object containing the version to be compared toprimaryKeys
- a vector containing the primary keys of the domainObjectsession
- the session to be used with the comparisonpublic Object getWriteLockValue(Object domainObject, Vector primaryKey, AbstractSession session)
getWriteLockValue
in interface OptimisticLockingPolicy
getWriteLockValue
in class VersionLockingPolicy
public Expression getWriteLockUpdateExpression(ExpressionBuilder builder)
getWriteLockUpdateExpression
in interface OptimisticLockingPolicy
getWriteLockUpdateExpression
in class VersionLockingPolicy
protected Number incrementWriteLockValue(Number numberValue)
incrementWriteLockValue
in class VersionLockingPolicy
public boolean isChildWriteLockValueGreater(AbstractSession session, Vector primaryKey, Class original, ObjectChangeSet changeSet)
isChildWriteLockValueGreater
in interface OptimisticLockingPolicy
isChildWriteLockValueGreater
in class VersionLockingPolicy
public boolean isChildWriteLockValueGreater(UnitOfWorkImpl uow, Vector primaryKey, Class original)
isChildWriteLockValueGreater
in interface OptimisticLockingPolicy
isChildWriteLockValueGreater
in class VersionLockingPolicy
public boolean isNewerVersion(Object currentValue, Object domainObject, Vector primaryKey, AbstractSession session)
isNewerVersion
in interface OptimisticLockingPolicy
isNewerVersion
in class VersionLockingPolicy
public boolean isNewerVersion(AbstractRecord databaseRow, Object domainObject, Vector primaryKey, AbstractSession session)
isNewerVersion
in interface OptimisticLockingPolicy
isNewerVersion
in class VersionLockingPolicy
public void setUsesServerTime(boolean usesServerTime)
public void useLocalTime()
public void useServerTime()
public boolean usesLocalTime()
public boolean usesServerTime()
Copyright © 2022. All rights reserved.