Class StateComparisonVersionStrategy
- java.lang.Object
-
- org.apache.openjpa.jdbc.meta.strats.AbstractStrategy
-
- org.apache.openjpa.jdbc.meta.strats.AbstractVersionStrategy
-
- org.apache.openjpa.jdbc.meta.strats.StateComparisonVersionStrategy
-
- All Implemented Interfaces:
java.io.Serializable
,Strategy
,VersionStrategy
public class StateComparisonVersionStrategy extends AbstractVersionStrategy
Uses a state image to determine whether concurrency violations take place.- Author:
- Abe White
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
StateComparisonVersionStrategy.CustomUpdate
Row implementation we use to pass to versionable mappings so they can set up the where conditions we need to add to update statements.
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
ALIAS
-
Fields inherited from class org.apache.openjpa.jdbc.meta.strats.AbstractVersionStrategy
vers
-
-
Constructor Summary
Constructors Constructor Description StateComparisonVersionStrategy()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
afterLoad(OpenJPAStateManager sm, JDBCStore store)
This method is called after data is loaded into the instance, in case the version indicator works off of a state image.boolean
checkVersion(OpenJPAStateManager sm, JDBCStore store, boolean updateVersion)
Checks the version of the given state manager with the version stored in memory.int
compareVersion(java.lang.Object v1, java.lang.Object v2)
void
customInsert(OpenJPAStateManager sm, JDBCStore store)
This method is for class mappings that take over the insert process, but still want to use this indicator for optimistic locking.StateComparisonVersionStrategy.CustomUpdate
customUpdate(OpenJPAStateManager sm, JDBCStore store, Table table, boolean record)
This method is for class mappings that take over the update process, but still want to use this indicator for optimistic locking.java.lang.String
getAlias()
Return the alias of this strategy.void
insert(OpenJPAStateManager sm, JDBCStore store, RowManager rm)
Set values for the mapping into the proper rows.void
map(boolean adapt)
Map the owning mapping using this strategy.void
update(OpenJPAStateManager sm, JDBCStore store, RowManager rm)
Set values for the mapping into the proper rows.-
Methods inherited from class org.apache.openjpa.jdbc.meta.strats.AbstractVersionStrategy
getBulkUpdateValues, load, load, select, setVersion
-
Methods inherited from class org.apache.openjpa.jdbc.meta.strats.AbstractStrategy
customDelete, customUpdate, delete, initialize, isCustomDelete, isCustomInsert, isCustomUpdate
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.openjpa.jdbc.meta.Strategy
customDelete, customUpdate, delete, initialize, isCustomDelete, isCustomInsert, isCustomUpdate
-
-
-
-
Field Detail
-
ALIAS
public static final java.lang.String ALIAS
- See Also:
- Constant Field Values
-
-
Method Detail
-
getAlias
public java.lang.String getAlias()
Description copied from interface:Strategy
Return the alias of this strategy. For custom strategies, return the full class name.- Specified by:
getAlias
in interfaceStrategy
- Overrides:
getAlias
in classAbstractStrategy
-
map
public void map(boolean adapt)
Description copied from interface:Strategy
Map the owning mapping using this strategy.- Specified by:
map
in interfaceStrategy
- Overrides:
map
in classAbstractStrategy
- Parameters:
adapt
- if true, use the owning mapping's raw mapping info to set its ORM data; if false, ORM data will already be set
-
insert
public void insert(OpenJPAStateManager sm, JDBCStore store, RowManager rm) throws java.sql.SQLException
Description copied from interface:Strategy
Set values for the mapping into the proper rows. For class mappings, this method will be called only after the corresponding method has been called for all fields of this mapping.- Specified by:
insert
in interfaceStrategy
- Overrides:
insert
in classAbstractStrategy
- Throws:
java.sql.SQLException
-
customInsert
public void customInsert(OpenJPAStateManager sm, JDBCStore store) throws java.sql.SQLException
This method is for class mappings that take over the insert process, but still want to use this indicator for optimistic locking.- Specified by:
customInsert
in interfaceStrategy
- Overrides:
customInsert
in classAbstractStrategy
- Throws:
java.sql.SQLException
-
update
public void update(OpenJPAStateManager sm, JDBCStore store, RowManager rm) throws java.sql.SQLException
Description copied from interface:Strategy
Set values for the mapping into the proper rows.- Specified by:
update
in interfaceStrategy
- Overrides:
update
in classAbstractStrategy
- Throws:
java.sql.SQLException
- See Also:
Strategy.insert(org.apache.openjpa.kernel.OpenJPAStateManager, org.apache.openjpa.jdbc.kernel.JDBCStore, org.apache.openjpa.jdbc.sql.RowManager)
-
customUpdate
public StateComparisonVersionStrategy.CustomUpdate customUpdate(OpenJPAStateManager sm, JDBCStore store, Table table, boolean record) throws java.sql.SQLException
This method is for class mappings that take over the update process, but still want to use this indicator for optimistic locking.- Parameters:
sm
- the instance to teststore
- store manager contexttable
- only state image values in this table will be tested; if the custom mapping uses different updates for different tables, this method can be called multiple times for the multiple tablesrecord
- set this parameter to true the last time you call this method, so the indicator can setup the next version of the given state manager- Returns:
- a
StateComparisonVersionStrategy.CustomUpdate
whose getSQL method yields a boolean SQL expression that tests whether the current record is equal to our recorded state image, and whose setParameters method parameterizes the given prepared statement with the values used in the above boolean expression - Throws:
java.sql.SQLException
-
afterLoad
public void afterLoad(OpenJPAStateManager sm, JDBCStore store)
Description copied from interface:VersionStrategy
This method is called after data is loaded into the instance, in case the version indicator works off of a state image.- Specified by:
afterLoad
in interfaceVersionStrategy
- Overrides:
afterLoad
in classAbstractVersionStrategy
-
checkVersion
public boolean checkVersion(OpenJPAStateManager sm, JDBCStore store, boolean updateVersion) throws java.sql.SQLException
Description copied from interface:VersionStrategy
Checks the version of the given state manager with the version stored in memory.- Specified by:
checkVersion
in interfaceVersionStrategy
- Overrides:
checkVersion
in classAbstractVersionStrategy
- Returns:
- true if the in-memory version was up-to-date, false otherwise
- Throws:
java.sql.SQLException
-
compareVersion
public int compareVersion(java.lang.Object v1, java.lang.Object v2)
- Specified by:
compareVersion
in interfaceVersionStrategy
- Overrides:
compareVersion
in classAbstractVersionStrategy
- See Also:
StoreManager.compareVersion(org.apache.openjpa.kernel.OpenJPAStateManager, java.lang.Object, java.lang.Object)
-
-