Class JdbcJobExecutionDao
- java.lang.Object
- org.springframework.batch.core.repository.dao.AbstractJdbcBatchMetadataDao
- org.springframework.batch.core.repository.dao.JdbcJobExecutionDao
- All Implemented Interfaces:
JobExecutionDao
,org.springframework.beans.factory.InitializingBean
public class JdbcJobExecutionDao extends AbstractJdbcBatchMetadataDao implements JobExecutionDao, org.springframework.beans.factory.InitializingBean
JDBC implementation ofJobExecutionDao
. Uses sequences (via Spring'sDataFieldMaxValueIncrementer
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, Michael Minella, Mahmoud Ben Hassine, Dimitrios Liapis
Field Summary
Fields inherited from class org.springframework.batch.core.repository.dao.AbstractJdbcBatchMetadataDao
DEFAULT_EXIT_MESSAGE_LENGTH, DEFAULT_TABLE_PREFIX
Constructor Summary
Constructors Constructor Description JdbcJobExecutionDao()
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
afterPropertiesSet()
java.util.List<JobExecution>
findJobExecutions(JobInstance job)
Return allJobExecution
s for givenJobInstance
, sorted backwards by creation order (so the first element is the most recent).java.util.Set<JobExecution>
findRunningJobExecutions(java.lang.String jobName)
JobExecution
getJobExecution(java.lang.Long executionId)
protected JobParameters
getJobParameters(java.lang.Long executionId)
JobExecution
getLastJobExecution(JobInstance jobInstance)
Find the lastJobExecution
to have been created for a givenJobInstance
.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(org.springframework.jdbc.support.incrementer.DataFieldMaxValueIncrementer jobExecutionIncrementer)
Setter forDataFieldMaxValueIncrementer
to be used when generating primary keys forJobExecution
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
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(org.springframework.jdbc.support.incrementer.DataFieldMaxValueIncrementer jobExecutionIncrementer)
Setter forDataFieldMaxValueIncrementer
to be used when generating primary keys forJobExecution
instances.- Parameters:
jobExecutionIncrementer
- theDataFieldMaxValueIncrementer
afterPropertiesSet
public void afterPropertiesSet() throws java.lang.Exception
- Specified by:
afterPropertiesSet
in interfaceorg.springframework.beans.factory.InitializingBean
- Overrides:
afterPropertiesSet
in classAbstractJdbcBatchMetadataDao
- Throws:
java.lang.Exception
findJobExecutions
public java.util.List<JobExecution> findJobExecutions(JobInstance job)
Description copied from interface:JobExecutionDao
Return allJobExecution
s for givenJobInstance
, sorted backwards by creation order (so the first element is the most recent).- Specified by:
findJobExecutions
in interfaceJobExecutionDao
- Parameters:
job
- parentJobInstance
of theJobExecution
s to find.- Returns:
List
containing JobExecutions for the jobInstance.
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 interfaceJobExecutionDao
- Parameters:
jobExecution
-JobExecution
instance to be saved.- Throws:
java.lang.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 interfaceJobExecutionDao
- Parameters:
jobExecution
-JobExecution
instance to be updated.- See Also:
JobExecutionDao.updateJobExecution(JobExecution)
getLastJobExecution
public JobExecution getLastJobExecution(JobInstance jobInstance)
Description copied from interface:JobExecutionDao
Find the lastJobExecution
to have been created for a givenJobInstance
.- Specified by:
getLastJobExecution
in interfaceJobExecutionDao
- Parameters:
jobInstance
- theJobInstance
- Returns:
- the last
JobExecution
to execute for this instance ornull
if no job execution is found for the given job instance.
getJobExecution
@Nullable public JobExecution getJobExecution(java.lang.Long executionId)
- Specified by:
getJobExecution
in interfaceJobExecutionDao
- Parameters:
executionId
-Long
containing the id of the execution.- Returns:
- the
JobExecution
for given identifier.
findRunningJobExecutions
public java.util.Set<JobExecution> findRunningJobExecutions(java.lang.String jobName)
- Specified by:
findRunningJobExecutions
in interfaceJobExecutionDao
- Parameters:
jobName
-String
containing the name of the job.- 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 interfaceJobExecutionDao
- Parameters:
jobExecution
- to be updated.
getJobParameters
protected JobParameters getJobParameters(java.lang.Long executionId)
- Parameters:
executionId
-Long
containing the id for the execution.- Returns:
- job parameters for the requested execution id