public JobInstance getJobInstance(long jobInstanceId) throws NoSuchJobInstanceException {
   JobInstance jobInstance = jobInstanceDao.getJobInstance(jobInstanceId);
   if (jobInstance == null) {
     throw new NoSuchJobInstanceException(
         "JobInstance with id=" + jobInstanceId + " does not exist");
   }
   return jobInstance;
 }
 /** @param name */
 private void checkJobExists(String jobName) throws NoSuchJobException {
   if (jobLocator.getJobNames().contains(jobName)) {
     return;
   }
   if (jobInstanceDao.countJobInstances(jobName) > 0) {
     return;
   }
   throw new NoSuchJobException(
       "No Job with that name either current or historic: [" + jobName + "]");
 }
 public Collection<JobExecution> getJobExecutionsForJobInstance(String name, Long jobInstanceId)
     throws NoSuchJobException {
   checkJobExists(name);
   List<JobExecution> jobExecutions =
       jobExecutionDao.findJobExecutions(jobInstanceDao.getJobInstance(jobInstanceId));
   for (JobExecution jobExecution : jobExecutions) {
     stepExecutionDao.addStepExecutions(jobExecution);
   }
   return jobExecutions;
 }
 public Collection<String> listJobs(int start, int count) {
   Collection<String> jobNames = new LinkedHashSet<String>(jobLocator.getJobNames());
   if (start + count > jobNames.size()) {
     jobNames.addAll(jobInstanceDao.getJobNames());
   }
   if (start >= jobNames.size()) {
     start = jobNames.size();
   }
   if (start + count >= jobNames.size()) {
     count = jobNames.size() - start;
   }
   return new ArrayList<String>(jobNames).subList(start, start + count);
 }
 public JobExecution getJobExecution(Long jobExecutionId) throws NoSuchJobExecutionException {
   JobExecution jobExecution = jobExecutionDao.getJobExecution(jobExecutionId);
   if (jobExecution == null) {
     throw new NoSuchJobExecutionException("There is no JobExecution with id=" + jobExecutionId);
   }
   jobExecution.setJobInstance(jobInstanceDao.getJobInstance(jobExecution));
   try {
     jobExecution.setExecutionContext(executionContextDao.getExecutionContext(jobExecution));
   } catch (Exception e) {
     logger.info("Cannot load execution context for job execution: " + jobExecution);
   }
   stepExecutionDao.addStepExecutions(jobExecution);
   return jobExecution;
 }
 public Collection<JobInstance> listJobInstances(String jobName, int start, int count)
     throws NoSuchJobException {
   checkJobExists(jobName);
   return jobInstanceDao.getJobInstances(jobName, start, count);
 }
 public int countJobInstances(String name) throws NoSuchJobException {
   return jobInstanceDao.countJobInstances(name);
 }
 public int countJobs() {
   Collection<String> names = new HashSet<String>(jobLocator.getJobNames());
   names.addAll(jobInstanceDao.getJobNames());
   return names.size();
 }