public int stopAll() {
   Collection<JobExecution> result = jobExecutionDao.getRunningJobExecutions();
   for (JobExecution jobExecution : result) {
     jobExecution.stop();
     jobRepository.update(jobExecution);
   }
   return result.size();
 }
 public Collection<JobExecution> listJobExecutionsForJob(String jobName, int start, int count)
     throws NoSuchJobException {
   checkJobExists(jobName);
   List<JobExecution> jobExecutions = jobExecutionDao.getJobExecutions(jobName, start, count);
   for (JobExecution jobExecution : jobExecutions) {
     stepExecutionDao.addStepExecutions(jobExecution);
   }
   return jobExecutions;
 }
 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 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<StepExecution> getStepExecutions(Long jobExecutionId)
      throws NoSuchJobExecutionException {

    JobExecution jobExecution = jobExecutionDao.getJobExecution(jobExecutionId);
    if (jobExecution == null) {
      throw new NoSuchJobExecutionException("No JobExecution with id=" + jobExecutionId);
    }

    stepExecutionDao.addStepExecutions(jobExecution);

    String jobName =
        jobExecution.getJobInstance() == null ? null : jobExecution.getJobInstance().getJobName();
    Collection<String> missingStepNames = new LinkedHashSet<String>();

    if (jobName != null) {
      missingStepNames.addAll(
          stepExecutionDao.findStepNamesForJobExecution(jobName, "*:partition*"));
      logger.debug("Found step executions in repository: " + missingStepNames);
    }

    Job job = null;
    try {
      job = jobLocator.getJob(jobName);
    } catch (NoSuchJobException e) {
      // expected
    }
    if (job instanceof StepLocator) {
      Collection<String> stepNames = ((StepLocator) job).getStepNames();
      missingStepNames.addAll(stepNames);
      logger.debug("Added step executions from job: " + missingStepNames);
    }

    for (StepExecution stepExecution : jobExecution.getStepExecutions()) {
      String stepName = stepExecution.getStepName();
      if (missingStepNames.contains(stepName)) {
        missingStepNames.remove(stepName);
      }
      logger.debug("Removed step executions from job execution: " + missingStepNames);
    }

    for (String stepName : missingStepNames) {
      StepExecution stepExecution = jobExecution.createStepExecution(stepName);
      stepExecution.setStatus(BatchStatus.UNKNOWN);
    }

    return jobExecution.getStepExecutions();
  }
 public int countJobExecutionsForJob(String name) throws NoSuchJobException {
   checkJobExists(name);
   return jobExecutionDao.countJobExecutions(name);
 }
 public int countJobExecutions() {
   return jobExecutionDao.countJobExecutions();
 }
 public Collection<JobExecution> listJobExecutions(int start, int count) {
   return jobExecutionDao.getJobExecutions(start, count);
 }