@Override public void refreshListenerForJob(final JobConfiguration jobConfiguration) { this.unregisterListenerForJob(jobConfiguration.getJobListenerConfiguration().getBeanName()); final String beanName = this.registerListenerForJob(jobConfiguration); final Listener listener = this.applicationContext.getBean(beanName, Listener.class); if (ListenerStatus.ACTIVE.equals(listener.getListenerStatus())) { listener.start(); } }
@Override public void refreshListenerForJob(final JobConfiguration jobConfiguration) { this.unregisterListenerForJob(jobConfiguration.getJobListenerConfiguration().getBeanName()); final String beanName = this.registerListenerForJob(jobConfiguration); final Listener listener = this.applicationContext.getBean(beanName, Listener.class); if (ListenerStatus.ACTIVE.equals(listener.getListenerStatus())) { listener.start(); } }
public static List<ValueRecord> map(final JobListenerConfiguration jobListenerConfiguration, final Long jobConfigurationId) { final List<ValueRecord> valueRecords = new ArrayList<>(); final ValueRecord beanName = new ValueRecord(jobConfigurationId, JobListenerConfigurationKey.BEAN_NAME, jobListenerConfiguration.getBeanName()); final ValueRecord filePattern = new ValueRecord(jobConfigurationId, JobListenerConfigurationKey.FILE_PATTERN, jobListenerConfiguration.getFilePattern()); final ValueRecord pollerPeriod = new ValueRecord(jobConfigurationId, JobListenerConfigurationKey.POLLER_PERIOD, jobListenerConfiguration.getPollerPeriod()); final ValueRecord sourceFolder = new ValueRecord(jobConfigurationId, JobListenerConfigurationKey.SOURCE_FOLDER, jobListenerConfiguration.getSourceFolder()); final ValueRecord listenerStatus = new ValueRecord(jobConfigurationId, JobListenerConfigurationKey.STATUS, jobListenerConfiguration.getListenerStatus().getValue()); final ValueRecord listenerType = new ValueRecord(jobConfigurationId, JobListenerConfigurationKey.LISTENER_TYPE, jobListenerConfiguration.getJobListenerType().getId()); final ValueRecord executorType = new ValueRecord(jobConfigurationId, JobListenerConfigurationKey.TASK_EXECUTOR_TYPE, jobListenerConfiguration.getTaskExecutorType().getId()); valueRecords.add(beanName); valueRecords.add(filePattern); valueRecords.add(pollerPeriod); valueRecords.add(sourceFolder); valueRecords.add(listenerStatus); valueRecords.add(listenerType); valueRecords.add(executorType); return valueRecords; } }
private String registerFolderListener(final JobConfiguration jobConfiguration) { final String beanName; try { final ListenerConstructorWrapper listenerConstructorWrapper = new ListenerConstructorWrapper(); final JobListenerConfiguration jobListenerConfiguration = jobConfiguration.getJobListenerConfiguration(); final JobLauncher jobLauncher = this.createLobLauncher(jobListenerConfiguration.getTaskExecutorType(), this.jobRepository); final JobParameters jobParameters = ServiceUtil.mapToJobParameters(jobConfiguration.getJobParameters()); final Job job = this.jobRegistry.getJob(jobConfiguration.getJobName()); listenerConstructorWrapper.setJob(job); listenerConstructorWrapper.setJobParameters(jobParameters); listenerConstructorWrapper.setJobLauncher(jobLauncher); listenerConstructorWrapper.setJobConfiguration(jobConfiguration); listenerConstructorWrapper.setJobIncrementer(jobConfiguration.getJobIncrementer()); if (!StringUtils.hasText(jobListenerConfiguration.getBeanName())) { beanName = this.generateSchedulerBeanName(jobConfiguration.getJobName(), jobConfiguration.getJobConfigurationId(), jobListenerConfiguration.getJobListenerType()); } else { beanName = jobListenerConfiguration.getBeanName(); } final Set<Object> constructorValues = new HashSet<>(); constructorValues.add(listenerConstructorWrapper); this.beanRegistrar.registerBean(FolderListener.class, beanName, constructorValues, null, null, null, null); } catch (final Exception e) { throw new SpringBatchLightminConfigurationException(e, e.getMessage()); } return beanName; }
private String registerFolderListener(final JobConfiguration jobConfiguration) { final String beanName; try { final ListenerConstructorWrapper listenerConstructorWrapper = new ListenerConstructorWrapper(); final JobListenerConfiguration jobListenerConfiguration = jobConfiguration.getJobListenerConfiguration(); final JobLauncher jobLauncher = this.createLobLauncher(jobListenerConfiguration.getTaskExecutorType(), this.jobRepository); final JobParameters jobParameters = ServiceUtil.mapToJobParameters(jobConfiguration.getJobParameters()); final Job job = this.jobRegistry.getJob(jobConfiguration.getJobName()); listenerConstructorWrapper.setJob(job); listenerConstructorWrapper.setJobParameters(jobParameters); listenerConstructorWrapper.setJobLauncher(jobLauncher); listenerConstructorWrapper.setJobConfiguration(jobConfiguration); listenerConstructorWrapper.setJobIncrementer(jobConfiguration.getJobIncrementer()); if (!StringUtils.hasText(jobListenerConfiguration.getBeanName())) { beanName = this.generateSchedulerBeanName(jobConfiguration.getJobName(), jobConfiguration.getJobConfigurationId(), jobListenerConfiguration.getJobListenerType()); } else { beanName = jobListenerConfiguration.getBeanName(); } final Set<Object> constructorValues = new HashSet<>(); constructorValues.add(listenerConstructorWrapper); this.beanRegistrar.registerBean(FolderListener.class, beanName, constructorValues, null, null, null, null); } catch (final Exception e) { throw new SpringBatchLightminConfigurationException(e, e.getMessage()); } return beanName; }
@Override public void deleteJobConfiguration(final Long jobConfigurationId) { try { final JobConfiguration jobConfiguration = this.jobConfigurationRepository.getJobConfiguration(jobConfigurationId, this.springBatchLightminCoreConfigurationProperties.getApplicationName()); final JobSchedulerConfiguration jobSchedulerConfiguration = jobConfiguration.getJobSchedulerConfiguration(); final JobListenerConfiguration jobListenerConfiguration = jobConfiguration.getJobListenerConfiguration(); if (jobSchedulerConfiguration != null) { final String beanName = jobSchedulerConfiguration.getBeanName(); this.schedulerService.terminate(beanName); this.schedulerService.unregisterSchedulerForJob(beanName); this.jobConfigurationRepository.delete(jobConfiguration, this.springBatchLightminCoreConfigurationProperties.getApplicationName()); } if (jobListenerConfiguration != null) { final String beanName = jobListenerConfiguration.getBeanName(); this.listenerService.terminateListener(beanName); this.jobConfigurationRepository.delete(jobConfiguration, this.springBatchLightminCoreConfigurationProperties.getApplicationName()); } } catch (final NoSuchJobConfigurationException e) { log.error(e.getMessage()); throw new SpringBatchLightminApplicationException(e, e.getMessage()); } }
@Override public void deleteJobConfiguration(final Long jobConfigurationId) { try { final JobConfiguration jobConfiguration = this.jobConfigurationRepository.getJobConfiguration(jobConfigurationId, this.springBatchLightminCoreConfigurationProperties.getApplicationName()); final JobSchedulerConfiguration jobSchedulerConfiguration = jobConfiguration.getJobSchedulerConfiguration(); final JobListenerConfiguration jobListenerConfiguration = jobConfiguration.getJobListenerConfiguration(); if (jobSchedulerConfiguration != null) { final String beanName = jobSchedulerConfiguration.getBeanName(); this.schedulerService.terminate(beanName); this.schedulerService.unregisterSchedulerForJob(beanName); this.jobConfigurationRepository.delete(jobConfiguration, this.springBatchLightminCoreConfigurationProperties.getApplicationName()); } if (jobListenerConfiguration != null) { final String beanName = jobListenerConfiguration.getBeanName(); this.listenerService.terminateListener(beanName); this.jobConfigurationRepository.delete(jobConfiguration, this.springBatchLightminCoreConfigurationProperties.getApplicationName()); } } catch (final NoSuchJobConfigurationException e) { log.error(e.getMessage()); throw new SpringBatchLightminApplicationException(e, e.getMessage()); } }
@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 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 startJobConfiguration(final Long jobConfigurationId) { try { final JobConfiguration jobConfiguration = this.jobConfigurationRepository.getJobConfiguration(jobConfigurationId, this.springBatchLightminCoreConfigurationProperties.getApplicationName()); final JobSchedulerConfiguration jobSchedulerConfiguration = jobConfiguration.getJobSchedulerConfiguration(); final JobListenerConfiguration jobListenerConfiguration = jobConfiguration.getJobListenerConfiguration(); if (jobSchedulerConfiguration != null) { final String beanName = jobSchedulerConfiguration.getBeanName(); this.schedulerService.schedule(beanName, Boolean.FALSE); jobConfiguration.getJobSchedulerConfiguration().setSchedulerStatus(SchedulerStatus.RUNNING); this.jobConfigurationRepository.update(jobConfiguration, this.springBatchLightminCoreConfigurationProperties.getApplicationName()); } else if (jobListenerConfiguration != null) { final String beanName = jobListenerConfiguration.getBeanName(); this.listenerService.activateListener(beanName, Boolean.FALSE); jobConfiguration.getJobListenerConfiguration().setListenerStatus(ListenerStatus.ACTIVE); this.jobConfigurationRepository.update(jobConfiguration, this.springBatchLightminCoreConfigurationProperties.getApplicationName()); } } catch (final NoSuchJobConfigurationException e) { throw new SpringBatchLightminApplicationException(e, e.getMessage()); } }
@Override public void startJobConfiguration(final Long jobConfigurationId) { try { final JobConfiguration jobConfiguration = this.jobConfigurationRepository.getJobConfiguration(jobConfigurationId, this.springBatchLightminCoreConfigurationProperties.getApplicationName()); final JobSchedulerConfiguration jobSchedulerConfiguration = jobConfiguration.getJobSchedulerConfiguration(); final JobListenerConfiguration jobListenerConfiguration = jobConfiguration.getJobListenerConfiguration(); if (jobSchedulerConfiguration != null) { final String beanName = jobSchedulerConfiguration.getBeanName(); this.schedulerService.schedule(beanName, Boolean.FALSE); jobConfiguration.getJobSchedulerConfiguration().setSchedulerStatus(SchedulerStatus.RUNNING); this.jobConfigurationRepository.update(jobConfiguration, this.springBatchLightminCoreConfigurationProperties.getApplicationName()); } else if (jobListenerConfiguration != null) { final String beanName = jobListenerConfiguration.getBeanName(); this.listenerService.activateListener(beanName, Boolean.FALSE); jobConfiguration.getJobListenerConfiguration().setListenerStatus(ListenerStatus.ACTIVE); this.jobConfigurationRepository.update(jobConfiguration, this.springBatchLightminCoreConfigurationProperties.getApplicationName()); } } catch (final NoSuchJobConfigurationException e) { throw new SpringBatchLightminApplicationException(e, e.getMessage()); } }
@Override public void stopJobConfiguration(final Long jobConfigurationId) { try { final JobConfiguration jobConfiguration = this.jobConfigurationRepository.getJobConfiguration(jobConfigurationId, this.springBatchLightminCoreConfigurationProperties.getApplicationName()); final JobSchedulerConfiguration jobSchedulerConfiguration = jobConfiguration.getJobSchedulerConfiguration(); final JobListenerConfiguration jobListenerConfiguration = jobConfiguration.getJobListenerConfiguration(); if (jobSchedulerConfiguration != null) { final String beanName = jobSchedulerConfiguration.getBeanName(); this.schedulerService.terminate(beanName); jobConfiguration.getJobSchedulerConfiguration().setSchedulerStatus(SchedulerStatus.STOPPED); this.jobConfigurationRepository.update(jobConfiguration, this.springBatchLightminCoreConfigurationProperties.getApplicationName()); } else if (jobListenerConfiguration != null) { final String beanName = jobListenerConfiguration.getBeanName(); this.listenerService.terminateListener(beanName); jobConfiguration.getJobListenerConfiguration().setListenerStatus(ListenerStatus.STOPPED); this.jobConfigurationRepository.update(jobConfiguration, this.springBatchLightminCoreConfigurationProperties.getApplicationName()); } } catch (final NoSuchJobConfigurationException e) { throw new SpringBatchLightminApplicationException(e, e.getMessage()); } }
@Override public void stopJobConfiguration(final Long jobConfigurationId) { try { final JobConfiguration jobConfiguration = this.jobConfigurationRepository.getJobConfiguration(jobConfigurationId, this.springBatchLightminCoreConfigurationProperties.getApplicationName()); final JobSchedulerConfiguration jobSchedulerConfiguration = jobConfiguration.getJobSchedulerConfiguration(); final JobListenerConfiguration jobListenerConfiguration = jobConfiguration.getJobListenerConfiguration(); if (jobSchedulerConfiguration != null) { final String beanName = jobSchedulerConfiguration.getBeanName(); this.schedulerService.terminate(beanName); jobConfiguration.getJobSchedulerConfiguration().setSchedulerStatus(SchedulerStatus.STOPPED); this.jobConfigurationRepository.update(jobConfiguration, this.springBatchLightminCoreConfigurationProperties.getApplicationName()); } else if (jobListenerConfiguration != null) { final String beanName = jobListenerConfiguration.getBeanName(); this.listenerService.terminateListener(beanName); jobConfiguration.getJobListenerConfiguration().setListenerStatus(ListenerStatus.STOPPED); this.jobConfigurationRepository.update(jobConfiguration, this.springBatchLightminCoreConfigurationProperties.getApplicationName()); } } catch (final NoSuchJobConfigurationException e) { throw new SpringBatchLightminApplicationException(e, e.getMessage()); } }