content: package com.xxl.job.admin.core.conf;
  
  import com.xxl.job.admin.core.alarm.JobAlarmer;
  import com.xxl.job.admin.core.scheduler.XxlJobScheduler;
  import com.xxl.job.admin.dao.*;
  import org.springframework.beans.factory.DisposableBean;
  import org.springframework.beans.factory.InitializingBean;
  import org.springframework.beans.factory.annotation.Value;
  import org.springframework.mail.javamail.JavaMailSender;
  import org.springframework.stereotype.Component;
  
  import javax.annotation.Resource;
  import javax.sql.DataSource;
  import java.util.Arrays;
  
  /**
   * xxl-job config
   *
   * @author xuxueli 2017-04-28
   */
  
  @Component
  public class XxlJobAdminConfig implements InitializingBean, DisposableBean {
  
  	private static XxlJobAdminConfig adminConfig = null;
  
  	public static XxlJobAdminConfig getAdminConfig() {
  		return adminConfig;
  	}
  
  	// ---------------------- XxlJobScheduler ----------------------
  
  	private XxlJobScheduler xxlJobScheduler;
  
  	@Override
  	public void afterPropertiesSet() throws Exception {
  		adminConfig = this;
  
  		xxlJobScheduler = new XxlJobScheduler();
  		xxlJobScheduler.init();
  	}
  
  	@Override
  	public void destroy() throws Exception {
  		xxlJobScheduler.destroy();
  	}
  
  	// ---------------------- XxlJobScheduler ----------------------
  
  	// conf
  	@Value("${xxl.job.i18n}")
  	private String i18n;
  
  	@Value("${xxl.job.accessToken:}")
  	private String accessToken;
  
  	@Value("${spring.mail.from:}")
  	private String emailFrom;
  
  	@Value("${xxl.job.triggerpool.fast.max}")
  	private int triggerPoolFastMax;
  
  	@Value("${xxl.job.triggerpool.slow.max}")
  	private int triggerPoolSlowMax;
  
  	@Value("${xxl.job.logretentiondays}")
  	private int logretentiondays;
  
  	// dao, service
  
  	@Resource
  	private XxlJobLogDao xxlJobLogDao;
  
  	@Resource
  	private XxlJobInfoDao xxlJobInfoDao;
  
  	@Resource
  	private XxlJobRegistryDao xxlJobRegistryDao;
  
  	@Resource
  	private XxlJobGroupDao xxlJobGroupDao;
  
  	@Resource
  	private XxlJobLogReportDao xxlJobLogReportDao;
  
  	@Resource
  	private JavaMailSender mailSender;
  
  	@Resource
  	private DataSource dataSource;
  
  	@Resource
  	private JobAlarmer jobAlarmer;
  
  	public String getI18n() {
  		if (!Arrays.asList("zh_CN", "zh_TC", "en").contains(i18n)) {
  			return "zh_CN";
  		}
  		return i18n;
  	}
  
  	public String getAccessToken() {
  		return accessToken;
  	}
  
  	public String getEmailFrom() {
  		return emailFrom;
  	}
  
  	public int getTriggerPoolFastMax() {
  		if (triggerPoolFastMax < 200) {
  			return 200;
  		}
  		return triggerPoolFastMax;
  	}
  
  	public int getTriggerPoolSlowMax() {
  		if (triggerPoolSlowMax < 100) {
  			return 100;
  		}
  		return triggerPoolSlowMax;
  	}
  
  	public int getLogretentiondays() {
  		if (logretentiondays < 7) {
  			return -1; // Limit greater than or equal to 7, otherwise close
  		}
  		return logretentiondays;
  	}
  
  	public XxlJobLogDao getXxlJobLogDao() {
  		return xxlJobLogDao;
  	}
  
  	public XxlJobInfoDao getXxlJobInfoDao() {
  		return xxlJobInfoDao;
  	}
  
  	public XxlJobRegistryDao getXxlJobRegistryDao() {
  		return xxlJobRegistryDao;
  	}
  
  	public XxlJobGroupDao getXxlJobGroupDao() {
  		return xxlJobGroupDao;
  	}
  
  	public XxlJobLogReportDao getXxlJobLogReportDao() {
  		return xxlJobLogReportDao;
  	}
  
  	public JavaMailSender getMailSender() {
  		return mailSender;
  	}
  
  	public DataSource getDataSource() {
  		return dataSource;
  	}
  
  	public JobAlarmer getJobAlarmer() {
  		return jobAlarmer;
  	}
  
  }
  