/**
* Copyright (c)2010-2011 Enterprise Website Content Management System(EWCMS), All rights reserved.
* EWCMS PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
* http://www.ewcms.com
*/
package com.ewcms.scheduling.generate.job.crawler.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ewcms.plugin.crawler.manager.dao.GatherDAO;
import com.ewcms.plugin.crawler.model.Gather;
import com.ewcms.scheduling.BaseException;
import com.ewcms.scheduling.generate.job.JobClassEntity;
import com.ewcms.scheduling.generate.job.crawler.dao.EwcmsJobCrawlerDAO;
import com.ewcms.scheduling.generate.job.crawler.model.EwcmsJobCrawler;
import com.ewcms.scheduling.manager.SchedulingFacable;
import com.ewcms.scheduling.manager.dao.JobClassDAO;
import com.ewcms.scheduling.manager.dao.JobInfoDAO;
import com.ewcms.scheduling.manager.util.ConversionUtil;
import com.ewcms.scheduling.manager.vo.PageDisplayVO;
import com.ewcms.scheduling.model.JobClass;
import com.ewcms.scheduling.model.JobInfo;
/**
* 采集器定时任务Service
*
* @author 吴智俊
*/
@Service
public class EwcmsJobCrawlerService implements EwcmsJobCrawlerServiceable {
@Autowired
private EwcmsJobCrawlerDAO ewcmsJobCrawlerDAO;
@Autowired
private GatherDAO gatherDAO;
@Autowired
private JobInfoDAO jobInfoDAO;
@Autowired
private JobClassDAO jobClassDAO;
@Autowired
private SchedulingFacable schedulingFac;
@Override
public Long saveOrUpdateJobCrawler(Long gatherId, PageDisplayVO vo) throws BaseException{
Gather gather = gatherDAO.get(gatherId);
if (gather != null) {
JobInfo jobInfo = new JobInfo();
if (vo.getJobId() != null && vo.getJobId().intValue() > 0){
jobInfo = jobInfoDAO.get(vo.getJobId());
}
if (jobInfo == null) {
throw new BaseException("定时任务已经被删除,请重新操作!","定时任务已经被删除,请重新操作!");
}
jobInfo = ConversionUtil.constructJobInfoVo(jobInfo,vo);
EwcmsJobCrawler jobCrawler = new EwcmsJobCrawler();
if (vo.getJobId() != null && vo.getJobId().intValue() > 0) {
jobCrawler.setId(vo.getJobId());
jobCrawler.setJobClass(jobInfo.getJobClass());
}else{
JobClass jobClass = jobClassDAO.findByJobClassByClassEntity(JobClassEntity.JOB_CRAWLER);
if (jobClass == null) {
jobClass = new JobClass();
jobClass.setClassEntity(JobClassEntity.JOB_CRAWLER);
jobClass.setClassName("采集定时器类");
jobClass.setDescription("采集定时器类");
jobClassDAO.persist(jobClass);
}
jobCrawler.setJobClass(jobClass);
}
jobCrawler.setDescription(jobInfo.getDescription());
jobCrawler.setLabel(jobInfo.getLabel());
jobCrawler.setNextFireTime(jobInfo.getNextFireTime());
jobCrawler.setOutputLocale(jobInfo.getOutputLocale());
jobCrawler.setPreviousFireTime(jobInfo.getPreviousFireTime());
jobCrawler.setState(jobInfo.getState());
jobCrawler.setTrigger(jobInfo.getTrigger());
jobCrawler.setUserName(jobInfo.getUserName());
jobCrawler.setVersion(jobInfo.getVersion());
jobCrawler.setGather(gather);
if (jobCrawler.getId() == null) {
return schedulingFac.saveScheduleJob(jobCrawler);
} else {
return schedulingFac.updateScheduledJob(jobCrawler);
}
}
return null;
}
@Override
public EwcmsJobCrawler getScheduledJobCrawler(Long jobId) {
return (EwcmsJobCrawler)ewcmsJobCrawlerDAO.get(jobId);
}
@Override
public EwcmsJobCrawler findJobCrawlerByGatherId(Long gatherId) {
return (EwcmsJobCrawler)ewcmsJobCrawlerDAO.findJobCrawlerByGatherId(gatherId);
}
}