public static JobConfiguration map(final org.tuxdevelop.spring.batch.lightmin.domain.JobConfiguration jobConfiguration) { final JobConfiguration response = new JobConfiguration(); response.setJobConfigurationId(jobConfiguration.getJobConfigurationId()); response.setJobName(jobConfiguration.getJobName()); response.setJobIncrementer(map(jobConfiguration.getJobIncrementer())); response.setJobParameters(map(jobConfiguration.getJobParameters())); response.setJobSchedulerConfiguration(map(jobConfiguration.getJobSchedulerConfiguration())); response.setJobListenerConfiguration(map(jobConfiguration.getJobListenerConfiguration())); return response; }
public static JobConfiguration map(final org.tuxdevelop.spring.batch.lightmin.api.resource.admin.JobConfiguration jobConfiguration) { final JobConfiguration response = new JobConfiguration(); response.setJobName(jobConfiguration.getJobName()); response.setJobConfigurationId(jobConfiguration.getJobConfigurationId()); response.setJobParameters(mapToMap(jobConfiguration.getJobParameters())); response.setJobIncrementer(map(jobConfiguration.getJobIncrementer())); response.setJobSchedulerConfiguration(map(jobConfiguration.getJobSchedulerConfiguration())); response.setJobListenerConfiguration(map(jobConfiguration.getJobListenerConfiguration())); return response; }
private static JobConfiguration createJobConfiguration() { final JobConfiguration jobConfiguration = new JobConfiguration(); jobConfiguration.setJobName("sampleJob"); jobConfiguration.setJobIncrementer(JobIncrementer.DATE); final Map<String, Object> jobParameters = new HashMap<>(); jobParameters.put("some_date", new Date()); jobConfiguration.setJobParameters(jobParameters); return jobConfiguration; }
@Override public JobConfiguration mapRow(final ResultSet resultSet, final int rowNum) throws SQLException { final JobConfiguration jobConfiguration = new JobConfiguration(); jobConfiguration.setJobConfigurationId(resultSet.getLong(JobConfigurationDomain.JOB_CONFIGURATION_ID)); jobConfiguration.setJobName(resultSet.getString(JobConfigurationDomain.JOB_NAME)); final JobIncrementer jobIncrementer = JobIncrementer.getByIdentifier(resultSet .getString(JobConfigurationDomain.JOB_INCREMENTER)); jobConfiguration.setJobIncrementer(jobIncrementer); return jobConfiguration; } }
static Integer determineJobConfigurationType(final JobConfiguration jobConfiguration) { final Integer jobConfigurationType; if (jobConfiguration.getJobSchedulerConfiguration() != null) { jobConfigurationType = JobConfigurationType.SCHEDULER; } else if (jobConfiguration.getJobListenerConfiguration() != null) { jobConfigurationType = JobConfigurationType.LISTENER; } else { throw new SpringBatchLightminApplicationException("Could not determine JobConfigurationType"); } return jobConfigurationType; } }
@Test public void updateWithListenerIT() throws NoSuchJobConfigurationException { final JobListenerConfiguration jobListenerConfiguration = DomainTestHelper.createJobListenerConfiguration ("src/test/", "*.txt", JobListenerType.LOCAL_FOLDER_LISTENER); jobListenerConfiguration.setBeanName("testBean"); final JobConfiguration jobConfiguration = DomainTestHelper.createJobConfiguration(jobListenerConfiguration); final JobConfiguration addedJobConfiguration = this.getJobConfigurationRepository().add(jobConfiguration, APPLICATION_NAME); assertThat(addedJobConfiguration).isNotNull(); assertThat(addedJobConfiguration.getJobConfigurationId()).isNotNull(); assertThat(addedJobConfiguration.getJobListenerConfiguration()).isNotNull(); addedJobConfiguration.setJobName("updated"); final JobConfiguration updatedJobConfiguration = this.getJobConfigurationRepository().update(addedJobConfiguration, APPLICATION_NAME); assertThat(updatedJobConfiguration.getJobName()).isEqualTo("updated"); final JobConfiguration fetchedJobConfiguration = this.getJobConfigurationRepository().getJobConfiguration (updatedJobConfiguration.getJobConfigurationId(), APPLICATION_NAME); assertThat(fetchedJobConfiguration.getJobConfigurationId()).isEqualTo(updatedJobConfiguration.getJobConfigurationId()); }
@Test public void updateIT() throws NoSuchJobConfigurationException { final JobSchedulerConfiguration jobSchedulerConfiguration = DomainTestHelper.createJobSchedulerConfiguration(null, 10L, 10L, JobSchedulerType.PERIOD); jobSchedulerConfiguration.setBeanName("testBean"); final JobConfiguration jobConfiguration = DomainTestHelper.createJobConfiguration(jobSchedulerConfiguration); final JobConfiguration addedJobConfiguration = this.getJobConfigurationRepository().add(jobConfiguration, APPLICATION_NAME); assertThat(addedJobConfiguration).isNotNull(); assertThat(addedJobConfiguration.getJobConfigurationId()).isNotNull(); assertThat(addedJobConfiguration.getJobSchedulerConfiguration()).isNotNull(); addedJobConfiguration.setJobName("updated"); final Map<String, Object> jobParameters = new HashMap<>(); jobParameters.put("Double", 20.2); addedJobConfiguration.setJobParameters(jobParameters); final JobConfiguration updatedJobConfiguration = this.getJobConfigurationRepository().update(addedJobConfiguration, APPLICATION_NAME); assertThat(updatedJobConfiguration.getJobName()).isEqualTo("updated"); final JobConfiguration fetchedJobConfiguration = this.getJobConfigurationRepository().getJobConfiguration (updatedJobConfiguration.getJobConfigurationId(), APPLICATION_NAME); assertThat(fetchedJobConfiguration.getJobConfigurationId()).isEqualTo(updatedJobConfiguration.getJobConfigurationId()); }
@Test public void getJobConfigurationIT() throws NoSuchJobConfigurationException { final JobSchedulerConfiguration jobSchedulerConfiguration = DomainTestHelper.createJobSchedulerConfiguration(null, 10L, 10L, JobSchedulerType.PERIOD); jobSchedulerConfiguration.setBeanName("testBean"); final JobConfiguration jobConfiguration = DomainTestHelper.createJobConfiguration(jobSchedulerConfiguration); final JobConfiguration addedJobConfiguration = this.getJobConfigurationRepository().add(jobConfiguration, APPLICATION_NAME); assertThat(addedJobConfiguration).isNotNull(); assertThat(addedJobConfiguration.getJobConfigurationId()).isNotNull(); assertThat(addedJobConfiguration.getJobSchedulerConfiguration()).isNotNull(); final JobConfiguration fetchedJobConfiguration = this.getJobConfigurationRepository().getJobConfiguration (addedJobConfiguration.getJobConfigurationId(), APPLICATION_NAME); assertThat(fetchedJobConfiguration.getJobConfigurationId()).isEqualTo(addedJobConfiguration.getJobConfigurationId()); }
@Test(expected = NoSuchJobConfigurationException.class) public void updateJobConfigurationIdNotExistingIT() throws NoSuchJobConfigurationException { final JobSchedulerConfiguration jobSchedulerConfiguration = DomainTestHelper.createJobSchedulerConfiguration(null, 10L, 10L, JobSchedulerType.PERIOD); jobSchedulerConfiguration.setBeanName("testBean"); final JobConfiguration jobConfiguration = DomainTestHelper.createJobConfiguration(jobSchedulerConfiguration); final JobConfiguration addedJobConfiguration = this.getJobConfigurationRepository().add(jobConfiguration, APPLICATION_NAME); assertThat(addedJobConfiguration).isNotNull(); assertThat(addedJobConfiguration.getJobConfigurationId()).isNotNull(); assertThat(addedJobConfiguration.getJobSchedulerConfiguration()).isNotNull(); addedJobConfiguration.setJobName("updated"); addedJobConfiguration.setJobConfigurationId(-1000L); this.getJobConfigurationRepository().update(addedJobConfiguration, APPLICATION_NAME); }
@Override public void updateJobConfiguration(final JobConfiguration jobConfiguration) { jobConfiguration.validateForUpdate(); try { final JobConfiguration existingJobConfiguration = this.jobConfigurationRepository.getJobConfiguration(jobConfiguration.getJobConfigurationId(), this.springBatchLightminCoreConfigurationProperties.getApplicationName()); if (existingJobConfiguration.getJobSchedulerConfiguration() != null) { final String existingBeanName = existingJobConfiguration.getJobSchedulerConfiguration().getBeanName(); jobConfiguration.getJobSchedulerConfiguration().setBeanName(existingBeanName); this.jobConfigurationRepository.update(jobConfiguration, this.springBatchLightminCoreConfigurationProperties.getApplicationName()); this.schedulerService.refreshSchedulerForJob(jobConfiguration); if (SchedulerStatus.RUNNING.equals(jobConfiguration.getJobSchedulerConfiguration().getSchedulerStatus())) { this.schedulerService.schedule(jobConfiguration.getJobSchedulerConfiguration().getBeanName(), Boolean.TRUE); } else { log.info("Scheduler not started, no scheduling triggered!"); } } else if (existingJobConfiguration.getJobListenerConfiguration() != null) { final String existingBeanName = existingJobConfiguration.getJobListenerConfiguration().getBeanName(); jobConfiguration.getJobListenerConfiguration().setBeanName(existingBeanName); this.jobConfigurationRepository.update(jobConfiguration, this.springBatchLightminCoreConfigurationProperties.getApplicationName()); this.listenerService.refreshListenerForJob(jobConfiguration); } } catch (final NoSuchJobConfigurationException e) { log.error(e.getMessage()); throw new SpringBatchLightminApplicationException(e, e.getMessage()); } }
@Override public void saveJobConfiguration(final JobConfiguration jobConfiguration) { jobConfiguration.validateForSave(); if (jobConfiguration.getJobSchedulerConfiguration() != null) { jobConfiguration.getJobSchedulerConfiguration().setBeanName(TEMP_BEAN_NAME + "_SCHEDULER_" + jobConfiguration.getJobConfigurationId()); } else if (jobConfiguration.getJobListenerConfiguration() != null) { jobConfiguration.getJobListenerConfiguration().setBeanName(TEMP_BEAN_NAME + "_LISTENER_" + jobConfiguration .getJobConfigurationId()); if (addedJobConfiguration.getJobSchedulerConfiguration() != null) { addedJobConfiguration.getJobSchedulerConfiguration().setBeanName(null); final String beanName = this.schedulerService.registerSchedulerForJob(addedJobConfiguration); addedJobConfiguration.getJobSchedulerConfiguration().setBeanName(beanName); try { this.jobConfigurationRepository.update(addedJobConfiguration, this.springBatchLightminCoreConfigurationProperties.getApplicationName()); if (SchedulerStatus.RUNNING.equals(addedJobConfiguration.getJobSchedulerConfiguration().getSchedulerStatus())) { this.schedulerService.schedule(beanName, Boolean.TRUE); } else { throw new SpringBatchLightminApplicationException(e, e.getMessage()); } else if (addedJobConfiguration.getJobListenerConfiguration() != null) { final String beanName = this.listenerService.registerListenerForJob(addedJobConfiguration); addedJobConfiguration.getJobListenerConfiguration().setBeanName(beanName); if (ListenerStatus.ACTIVE.equals(addedJobConfiguration.getJobListenerConfiguration().getListenerStatus())) { this.listenerService.activateListener(beanName, Boolean.TRUE);
if (jobConfigurations != null) { for (final JobConfiguration jobConfiguration : jobConfigurations) { final String jobName = jobConfiguration.getJobName(); if (this.jobRegistry.getJobNames().contains(jobName)) { if (jobConfiguration.getJobSchedulerConfiguration() != null) { this.schedulerService.registerSchedulerForJob(jobConfiguration); } else if (jobConfiguration.getJobListenerConfiguration() != null) { this.listenerService.registerListenerForJob(jobConfiguration);
@Test public void getJobConfigurationWithListenerIT() throws NoSuchJobConfigurationException { final JobListenerConfiguration jobListenerConfiguration = DomainTestHelper.createJobListenerConfiguration ("src/test/", "*.txt", JobListenerType.LOCAL_FOLDER_LISTENER); jobListenerConfiguration.setBeanName("testBean"); final JobConfiguration jobConfiguration = DomainTestHelper.createJobConfiguration(jobListenerConfiguration); final JobConfiguration addedJobConfiguration = this.getJobConfigurationRepository().add(jobConfiguration, APPLICATION_NAME); assertThat(addedJobConfiguration).isNotNull(); assertThat(addedJobConfiguration.getJobConfigurationId()).isNotNull(); assertThat(addedJobConfiguration.getJobListenerConfiguration()).isNotNull(); final JobConfiguration fetchedJobConfiguration = this.getJobConfigurationRepository().getJobConfiguration (addedJobConfiguration.getJobConfigurationId(), APPLICATION_NAME); assertThat(fetchedJobConfiguration.getJobConfigurationId()).isEqualTo(addedJobConfiguration.getJobConfigurationId()); }
@Test(expected = NoSuchJobConfigurationException.class) public void deleteJobConfigurationIdNotExistingIT() throws NoSuchJobConfigurationException { final JobSchedulerConfiguration jobSchedulerConfiguration = DomainTestHelper.createJobSchedulerConfiguration(null, 10L, 10L, JobSchedulerType.PERIOD); jobSchedulerConfiguration.setBeanName("testBean"); final JobConfiguration jobConfiguration = DomainTestHelper.createJobConfiguration(jobSchedulerConfiguration); final JobConfiguration addedJobConfiguration = this.getJobConfigurationRepository().add(jobConfiguration, APPLICATION_NAME); assertThat(addedJobConfiguration).isNotNull(); assertThat(addedJobConfiguration.getJobConfigurationId()).isNotNull(); assertThat(addedJobConfiguration.getJobSchedulerConfiguration()).isNotNull(); addedJobConfiguration.setJobConfigurationId(-100L); this.getJobConfigurationRepository().delete(addedJobConfiguration, APPLICATION_NAME); }
@Test public void getJobConfigurationsByNameIT() throws NoSuchJobException { final JobSchedulerConfiguration jobSchedulerConfiguration = DomainTestHelper.createJobSchedulerConfiguration(null, 10L, 10L, JobSchedulerType.PERIOD); jobSchedulerConfiguration.setBeanName("testBean"); final JobConfiguration jobConfiguration = DomainTestHelper.createJobConfiguration(jobSchedulerConfiguration); final Map<String, Object> jobParameters = new HashMap<>(); jobParameters.put("LONG", 10L); jobParameters.put("DOUBLE", 20.2); jobParameters.put("STRING", "test"); jobParameters.put("DATE", "2015/03/27 23:19:24:120"); jobParameters.put("DATE", "2015/03/27"); jobConfiguration.setJobParameters(jobParameters); final JobConfiguration addedJobConfiguration = this.getJobConfigurationRepository().add(jobConfiguration, APPLICATION_NAME); assertThat(addedJobConfiguration).isNotNull(); assertThat(addedJobConfiguration.getJobConfigurationId()).isNotNull(); assertThat(addedJobConfiguration.getJobSchedulerConfiguration()).isNotNull(); final JobConfiguration secondAddedJobConfiguration = this.getJobConfigurationRepository().add(jobConfiguration, APPLICATION_NAME); assertThat(secondAddedJobConfiguration).isNotNull(); assertThat(secondAddedJobConfiguration.getJobConfigurationId()).isNotNull(); assertThat(secondAddedJobConfiguration.getJobSchedulerConfiguration()).isNotNull(); final Collection<String> jobNames = new LinkedList<>(); jobNames.add("sampleJob"); jobNames.add("sampleJobSecond"); final Collection<JobConfiguration> jobConfigurations = this.getJobConfigurationRepository() .getAllJobConfigurationsByJobNames(jobNames, APPLICATION_NAME); assertThat(jobConfigurations.size()).isEqualTo(2); }
private List<ValueRecord> getValueRecords(final JobConfiguration jobConfiguration) { final Integer jobConfigurationType = JobConfigurationType.determineJobConfigurationType(jobConfiguration); final List<ValueRecord> valueRecords; if (JobConfigurationType.SCHEDULER.equals(jobConfigurationType)) { valueRecords = JobSchedulerConfigurationMapper.map(jobConfiguration.getJobSchedulerConfiguration(), jobConfiguration.getJobConfigurationId()); } else if (JobConfigurationType.LISTENER.equals(jobConfigurationType)) { valueRecords = JobListenerConfigurationMapper.map(jobConfiguration.getJobListenerConfiguration(), jobConfiguration.getJobConfigurationId()); } else { throw new SpringBatchLightminApplicationException("Unknown JobConfigurationType : " + jobConfigurationType); } return valueRecords; }
public void update(final JobConfiguration jobConfiguration, final String applicationName) { final String sql = String.format(UPDATE_STATEMENT, this.tableName); this.jdbcTemplate.update( sql, new Object[]{jobConfiguration.getJobName(), jobConfiguration.getJobIncrementer().getIncrementerIdentifier(), jobConfiguration.getJobConfigurationId(), applicationName}, new int[]{Types.VARCHAR, Types.VARCHAR, Types.NUMERIC, Types.VARCHAR}); }
private void attachSchedulerStatus(final JobConfiguration jobConfiguration) { if (jobConfiguration.getJobSchedulerConfiguration() != null) { final String schedulerName = jobConfiguration.getJobSchedulerConfiguration().getBeanName(); final SchedulerStatus schedulerStatus = this.schedulerService.getSchedulerStatus(schedulerName); jobConfiguration.getJobSchedulerConfiguration().setSchedulerStatus(schedulerStatus); } } }
@Override public String registerListenerForJob(final JobConfiguration jobConfiguration) { final JobListenerType jobListenerType = jobConfiguration.getJobListenerConfiguration().getJobListenerType(); final String beanName; switch (jobListenerType) { case LOCAL_FOLDER_LISTENER: beanName = this.registerFolderListener(jobConfiguration); break; default: throw new SpringBatchLightminApplicationException("Unknown ListenerType: " + jobListenerType); } return beanName; }
@Override public synchronized JobConfiguration update(final JobConfiguration jobConfiguration, final String applicationName) throws NoSuchJobConfigurationException { if (this.jobConfigurations.containsKey(applicationName)) { final Map<String, Map<Long, JobConfiguration>> applicationJobConfigurations = this.jobConfigurations.get(applicationName); this.getJobConfiguration(jobConfiguration.getJobConfigurationId(), applicationName); if (applicationJobConfigurations.containsKey(jobConfiguration.getJobName())) { applicationJobConfigurations.get(jobConfiguration.getJobName()).put(jobConfiguration.getJobConfigurationId(), jobConfiguration); } else { this.add(jobConfiguration, applicationName); } } else { this.add(jobConfiguration, applicationName); } return jobConfiguration; }