org.springframework.batch.core.repository.dao

## Class JdbcJobInstanceDao

- java.lang.Object
- - org.springframework.batch.core.repository.dao.AbstractJdbcBatchMetadataDao
  - - org.springframework.batch.core.repository.dao.JdbcJobInstanceDao

- All Implemented Interfaces:
    JobInstanceDao, org.springframework.beans.factory.InitializingBean

      public class JdbcJobInstanceDao
      extends AbstractJdbcBatchMetadataDao
      implements JobInstanceDao, org.springframework.beans.factory.InitializingBean

  JDBC implementation of `JobInstanceDao`. 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, Michael Minella, Will Schipp

- - ### Field Summary

    - ### Fields inherited from class org.springframework.batch.core.repository.dao.AbstractJdbcBatchMetadataDao

      `DEFAULT_EXIT_MESSAGE_LENGTH, DEFAULT_TABLE_PREFIX`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `JdbcJobInstanceDao()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `afterPropertiesSet()`
    `JobInstance` | `createJobInstance(java.lang.String jobName, JobParameters jobParameters)` In this JDBC implementation a job id is obtained by asking the jobIncrementer (which is likely a sequence) for the next long value, and then passing the Id and parameter values into an INSERT statement.
    `java.util.List<JobInstance>` | `findJobInstancesByName(java.lang.String jobName, int start, int count)` Fetch the last job instances with the provided name, sorted backwards by primary key, using a 'like' criteria
    `JobInstance` | `getJobInstance(JobExecution jobExecution)` Fetch the JobInstance for the provided JobExecution.
    `JobInstance` | `getJobInstance(java.lang.Long instanceId)` Fetch the job instance with the provided identifier.
    `JobInstance` | `getJobInstance(java.lang.String jobName, JobParameters jobParameters)` The job table is queried for any jobs that match the given identifier, adding them to a list via the RowMapper callback.
    `int` | `getJobInstanceCount(java.lang.String jobName)` Query the repository for the number of unique `JobInstance`s associated with the supplied job name.
    `java.util.List<JobInstance>` | `getJobInstances(java.lang.String jobName, int start, int count)` Fetch the last job instances with the provided name, sorted backwards by primary key.
    `java.util.List<java.lang.String>` | `getJobNames()` Retrieve the names of all job instances sorted alphabetically - i.e.
    `void` | `setJobIncrementer(org.springframework.jdbc.support.incrementer.DataFieldMaxValueIncrementer jobIncrementer)` Setter for `DataFieldMaxValueIncrementer` to be used when generating primary keys for `JobInstance` instances.

    - ### 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

    - #### JdbcJobInstanceDao

          public JdbcJobInstanceDao()

  - ### Method Detail

    - #### createJobInstance

          public JobInstance createJobInstance(java.lang.String jobName,
                                               JobParameters jobParameters)

      In this JDBC implementation a job id is obtained by asking the jobIncrementer (which is likely a sequence) for the next long value, and then passing the Id and parameter values into an INSERT statement.
      Specified by:
        `createJobInstance` in interface `JobInstanceDao`
      Returns:
        JobInstance
      Throws:
        `java.lang.IllegalArgumentException` - if any `JobParameters` fields are null.
      See Also:
        `JobInstanceDao.createJobInstance(String, JobParameters)`

    - #### getJobInstance

          public JobInstance getJobInstance(java.lang.String jobName,
                                            JobParameters jobParameters)

      The job table is queried for any jobs that match the given identifier, adding them to a list via the RowMapper callback.
      Specified by:
        `getJobInstance` in interface `JobInstanceDao`
      Parameters:
        `jobName` - the name of the job
        `jobParameters` - the parameters with which the job was executed
      Returns:
        `JobInstance` object matching the job name and `JobParameters` or null
      Throws:
        `java.lang.IllegalArgumentException` - if any `JobParameters` fields are null.
      See Also:
        `JobInstanceDao.getJobInstance(String, JobParameters)`

    - #### getJobInstance

          public JobInstance getJobInstance(java.lang.Long instanceId)

      Description copied from interface: `JobInstanceDao`
      Fetch the job instance with the provided identifier.
      Specified by:
        `getJobInstance` in interface `JobInstanceDao`
      Parameters:
        `instanceId` - the job identifier
      Returns:
        the job instance with this identifier or null if it doesn't exist

    - #### getJobNames

          public java.util.List<java.lang.String> getJobNames()

      Description copied from interface: `JobInstanceDao`
      Retrieve the names of all job instances sorted alphabetically - i.e. jobs that have ever been executed.
      Specified by:
        `getJobNames` in interface `JobInstanceDao`
      Returns:
        the names of all job instances

    - #### getJobInstances

          public java.util.List<JobInstance> getJobInstances(java.lang.String jobName,
                                                             int start,
                                                             int count)

      Description copied from interface: `JobInstanceDao`
      Fetch the last job instances with the provided name, sorted backwards by primary key. if using the JdbcJobInstance, you can provide the jobName with a wildcard (e.g. *Job) to return 'like' job names. (e.g. *Job will return 'someJob' and 'otherJob')
      Specified by:
        `getJobInstances` in interface `JobInstanceDao`
      Parameters:
        `jobName` - the job name
        `start` - the start index of the instances to return
        `count` - the maximum number of objects to return
      Returns:
        the job instances with this name or empty if none

    - #### getJobInstance

          public JobInstance getJobInstance(JobExecution jobExecution)

      Description copied from interface: `JobInstanceDao`
      Fetch the JobInstance for the provided JobExecution.
      Specified by:
        `getJobInstance` in interface `JobInstanceDao`
      Parameters:
        `jobExecution` - the JobExecution
      Returns:
        the JobInstance for the provided execution or null if it doesn't exist.

    - #### getJobInstanceCount

          public int getJobInstanceCount(java.lang.String jobName)
                                  throws NoSuchJobException

      Description copied from interface: `JobInstanceDao`
      Query the repository for the number of unique `JobInstance`s associated with the supplied job name.
      Specified by:
        `getJobInstanceCount` in interface `JobInstanceDao`
      Parameters:
        `jobName` - the name of the job to query for
      Returns:
        the number of `JobInstance`s that exist within the associated job repository
      Throws:
        `NoSuchJobException`

    - #### setJobIncrementer

          public void setJobIncrementer(org.springframework.jdbc.support.incrementer.DataFieldMaxValueIncrementer jobIncrementer)

      Setter for `DataFieldMaxValueIncrementer` to be used when generating primary keys for `JobInstance` instances.
      Parameters:
        `jobIncrementer` - the `DataFieldMaxValueIncrementer`

    - #### afterPropertiesSet

          public void afterPropertiesSet()
                                  throws java.lang.Exception

      Specified by:
        `afterPropertiesSet` in interface `org.springframework.beans.factory.InitializingBean`
      Overrides:
        `afterPropertiesSet` in class `AbstractJdbcBatchMetadataDao`
      Throws:
        `java.lang.Exception`

    - #### findJobInstancesByName

          public java.util.List<JobInstance> findJobInstancesByName(java.lang.String jobName,
                                                                    int start,
                                                                    int count)

      Description copied from interface: `JobInstanceDao`
      Fetch the last job instances with the provided name, sorted backwards by primary key, using a 'like' criteria
      Specified by:
        `findJobInstancesByName` in interface `JobInstanceDao`
      Returns: