org.springframework.batch.core.repository.dao
Class JdbcJobExecutionDao

java.lang.Object
  extended by org.springframework.batch.core.repository.dao.AbstractJdbcBatchMetadataDao
      extended by org.springframework.batch.core.repository.dao.JdbcJobExecutionDao
All Implemented Interfaces:
JobExecutionDao, InitializingBean

public class JdbcJobExecutionDao
extends AbstractJdbcBatchMetadataDao
implements JobExecutionDao, InitializingBean

Jdbc implementation of JobExecutionDao. Uses sequences (via Spring's DataFieldMaxValueIncrementer abstraction) to create all primary keys before inserting a new row. Objects are checked to ensure all mandatory fields to be stored are not null. If any are found to be null, an IllegalArgumentException will be thrown. This could be left to JdbcTemplate, however, the exception will be fairly vague, and fails to highlight which field caused the exception.

Author:
Lucas Ward, Dave Syer, Robert Kasanicky

Field Summary
 
Fields inherited from class org.springframework.batch.core.repository.dao.AbstractJdbcBatchMetadataDao
DEFAULT_EXIT_MESSAGE_LENGTH, DEFAULT_TABLE_PREFIX
 
Constructor Summary
JdbcJobExecutionDao()
           
 
Method Summary
 void afterPropertiesSet()
           
 List<JobExecution> findJobExecutions(JobInstance job)
          Return all JobExecution for given JobInstance, sorted backwards by creation order (so the first element is the most recent).
 Set<JobExecution> findRunningJobExecutions(String jobName)
           
 JobExecution getJobExecution(Long executionId)
           
 JobExecution getLastJobExecution(JobInstance jobInstance)
          Find the last JobExecution to have been created for a given JobInstance.
 void saveJobExecution(JobExecution jobExecution)
          SQL implementation using Sequences via the Spring incrementer abstraction.
 void setExitMessageLength(int exitMessageLength)
          Public setter for the exit message length in database.
 void setJobExecutionIncrementer(DataFieldMaxValueIncrementer jobExecutionIncrementer)
          Setter for DataFieldMaxValueIncrementer to be used when generating primary keys for JobExecution instances.
 void synchronizeStatus(JobExecution jobExecution)
          Because it may be possible that the status of a JobExecution is updated while running, the following method will synchronize only the status and version fields.
 void updateJobExecution(JobExecution jobExecution)
          Update given JobExecution using a SQL UPDATE statement.
 
Methods inherited from class org.springframework.batch.core.repository.dao.AbstractJdbcBatchMetadataDao
getClobTypeToUse, getJdbcTemplate, getQuery, getTablePrefix, setClobTypeToUse, setJdbcTemplate, setTablePrefix
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JdbcJobExecutionDao

public JdbcJobExecutionDao()
Method Detail

setExitMessageLength

public void setExitMessageLength(int exitMessageLength)
Public setter for the exit message length in database. Do not set this if you haven't modified the schema.

Parameters:
exitMessageLength - the exitMessageLength to set

setJobExecutionIncrementer

public void setJobExecutionIncrementer(DataFieldMaxValueIncrementer jobExecutionIncrementer)
Setter for DataFieldMaxValueIncrementer to be used when generating primary keys for JobExecution instances.

Parameters:
jobExecutionIncrementer - the DataFieldMaxValueIncrementer

afterPropertiesSet

public void afterPropertiesSet()
                        throws Exception
Specified by:
afterPropertiesSet in interface InitializingBean
Overrides:
afterPropertiesSet in class AbstractJdbcBatchMetadataDao
Throws:
Exception

findJobExecutions

public List<JobExecution> findJobExecutions(JobInstance job)
Description copied from interface: JobExecutionDao
Return all JobExecution for given JobInstance, sorted backwards by creation order (so the first element is the most recent).

Specified by:
findJobExecutions in interface JobExecutionDao

saveJobExecution

public void saveJobExecution(JobExecution jobExecution)
SQL implementation using Sequences via the Spring incrementer abstraction. Once a new id has been obtained, the JobExecution is saved via a SQL INSERT statement.

Specified by:
saveJobExecution in interface JobExecutionDao
Throws:
IllegalArgumentException - if jobExecution is null, as well as any of it's fields to be persisted.
See Also:
JobExecutionDao.saveJobExecution(JobExecution)

updateJobExecution

public void updateJobExecution(JobExecution jobExecution)
Update given JobExecution using a SQL UPDATE statement. The JobExecution is first checked to ensure all fields are not null, and that it has an ID. The database is then queried to ensure that the ID exists, which ensures that it is valid.

Specified by:
updateJobExecution in interface JobExecutionDao
See Also:
JobExecutionDao.updateJobExecution(JobExecution)

getLastJobExecution

public JobExecution getLastJobExecution(JobInstance jobInstance)
Description copied from interface: JobExecutionDao
Find the last JobExecution to have been created for a given JobInstance.

Specified by:
getLastJobExecution in interface JobExecutionDao
Parameters:
jobInstance - the JobInstance
Returns:
the last JobExecution to execute for this instance

getJobExecution

public JobExecution getJobExecution(Long executionId)
Specified by:
getJobExecution in interface JobExecutionDao
Returns:
the JobExecution for given identifier.

findRunningJobExecutions

public Set<JobExecution> findRunningJobExecutions(String jobName)
Specified by:
findRunningJobExecutions in interface JobExecutionDao
Returns:
all JobExecution that are still running (or indeterminate state), i.e. having null end date, for the specified job name.

synchronizeStatus

public void synchronizeStatus(JobExecution jobExecution)
Description copied from interface: JobExecutionDao
Because it may be possible that the status of a JobExecution is updated while running, the following method will synchronize only the status and version fields.

Specified by:
synchronizeStatus in interface JobExecutionDao
Parameters:
jobExecution - to be updated.


Copyright © 2013 SpringSource. All Rights Reserved.