RESOLVED - BATCH-756: Upgrade JdbcExecutionContextDao to use enums

Discriminator converted to enum
This commit is contained in:
robokaso
2008-08-12 08:18:45 +00:00
parent ebfe82006d
commit bee3122c1e

View File

@@ -31,10 +31,6 @@ import org.springframework.util.Assert;
*/
public class JdbcExecutionContextDao extends AbstractJdbcBatchMetadataDao implements ExecutionContextDao {
private static final String STEP_DISCRIMINATOR = "S";
private static final String JOB_DISCRIMINATOR = "J";
private static final String FIND_EXECUTION_CONTEXT = "SELECT TYPE_CD, KEY_NAME, STRING_VAL, DOUBLE_VAL, LONG_VAL, OBJECT_VAL "
+ "from %PREFIX%EXECUTION_CONTEXT where EXECUTION_ID = ? and DISCRIMINATOR = ?";
@@ -57,7 +53,7 @@ public class JdbcExecutionContextDao extends AbstractJdbcBatchMetadataDao implem
final ExecutionContext executionContext = new ExecutionContext();
getJdbcTemplate().getJdbcOperations().query(getQuery(FIND_EXECUTION_CONTEXT),
new Object[] { executionId, JOB_DISCRIMINATOR },
new Object[] { executionId, Discriminator.JOB },
new ExecutionContextRowCallbackHandler(executionContext));
return executionContext;
@@ -74,7 +70,7 @@ public class JdbcExecutionContextDao extends AbstractJdbcBatchMetadataDao implem
final ExecutionContext executionContext = new ExecutionContext();
getJdbcTemplate().getJdbcOperations().query(getQuery(FIND_EXECUTION_CONTEXT),
new Object[] { executionId, STEP_DISCRIMINATOR },
new Object[] { executionId, Discriminator.STEP },
new ExecutionContextRowCallbackHandler(executionContext));
return executionContext;
@@ -91,7 +87,7 @@ public class JdbcExecutionContextDao extends AbstractJdbcBatchMetadataDao implem
Assert.notNull(executionId, "ExecutionId must not be null.");
Assert.notNull(executionContext, "The ExecutionContext must not be null.");
saveOrUpdateExecutionContext(executionContext, executionId, JOB_DISCRIMINATOR);
saveOrUpdateExecutionContext(executionContext, executionId, Discriminator.JOB);
}
/**
@@ -106,14 +102,14 @@ public class JdbcExecutionContextDao extends AbstractJdbcBatchMetadataDao implem
Assert.notNull(executionId, "ExecutionId must not be null.");
Assert.notNull(executionContext, "The ExecutionContext must not be null.");
saveOrUpdateExecutionContext(executionContext, executionId, STEP_DISCRIMINATOR);
saveOrUpdateExecutionContext(executionContext, executionId, Discriminator.STEP);
}
/**
* Resolves attribute's class to corresponding {@link AttributeType} and
* persists or updates the attribute.
*/
private void saveOrUpdateExecutionContext(ExecutionContext ctx, Long executionId, String discriminator) {
private void saveOrUpdateExecutionContext(ExecutionContext ctx, Long executionId, Discriminator discriminator) {
for (Entry<String, Object> entry : ctx.entrySet()) {
@@ -140,7 +136,7 @@ public class JdbcExecutionContextDao extends AbstractJdbcBatchMetadataDao implem
* to update the attribute - if the attribute does not exist in the database
* yet it is inserted.
*/
private void updateExecutionAttribute(final Long executionId, final String discriminator, final String key,
private void updateExecutionAttribute(final Long executionId, final Discriminator discriminator, final String key,
final Object value, final AttributeType type) {
PreparedStatementCallback callback = new AbstractLobCreatingPreparedStatementCallback(lobHandler) {
@@ -195,7 +191,7 @@ public class JdbcExecutionContextDao extends AbstractJdbcBatchMetadataDao implem
* Creates {@link PreparedStatement} from provided arguments and inserts new
* row for the attribute.
*/
private void insertExecutionAttribute(final Long executionId, final String discriminator, final String key,
private void insertExecutionAttribute(final Long executionId, final Discriminator discriminator, final String key,
final Object value, final AttributeType type) {
PreparedStatementCallback callback = new AbstractLobCreatingPreparedStatementCallback(lobHandler) {
@@ -203,7 +199,7 @@ public class JdbcExecutionContextDao extends AbstractJdbcBatchMetadataDao implem
DataAccessException {
ps.setLong(1, executionId.longValue());
ps.setString(2, discriminator);
ps.setString(2, discriminator.toString());
ps.setString(4, key);
if (type == AttributeType.STRING) {
ps.setString(3, AttributeType.STRING.toString());
@@ -245,10 +241,30 @@ public class JdbcExecutionContextDao extends AbstractJdbcBatchMetadataDao implem
/**
* Attribute types supported by the {@link ExecutionContext}.
*/
private enum AttributeType {
private static enum AttributeType {
STRING, OBJECT, LONG, DOUBLE
}
/**
* Discriminates whether the execution context belongs to job or step.
*/
private static enum Discriminator {
STEP {
@Override
public String toString() {
return "S";
}
},
JOB {
@Override
public String toString() {
return "J";
}
}
}
/**
* Reads attributes from {@link ResultSet} and puts them into
* {@link ExecutionContext}, resolving the attributes' types using the