/**
* 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.manager.web;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import com.ewcms.plugin.report.generate.factory.ChartFactoryable;
import com.ewcms.plugin.report.generate.factory.TextFactoryable;
import com.ewcms.plugin.report.generate.vo.PageShowParam;
import com.ewcms.plugin.report.model.ChartReport;
import com.ewcms.plugin.report.model.TextReport;
import com.ewcms.scheduling.BaseException;
import com.ewcms.scheduling.generate.job.JobClassEntity;
import com.ewcms.scheduling.generate.job.channel.model.EwcmsJobChannel;
import com.ewcms.scheduling.generate.job.crawler.model.EwcmsJobCrawler;
import com.ewcms.scheduling.generate.job.report.EwcmsJobReportFacable;
import com.ewcms.scheduling.generate.job.report.model.EwcmsJobReport;
import com.ewcms.scheduling.manager.SchedulingFacable;
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;
import com.ewcms.web.CrudBaseAction;
/**
*
* @author 吴智俊
*/
public class JobInfoAction extends CrudBaseAction<PageDisplayVO, Long> {
private static final long serialVersionUID = -7180641001521655948L;
@Autowired
private SchedulingFacable schedulingFac;
@Autowired
private EwcmsJobReportFacable ewcmsJobReportFac;
@Autowired
private TextFactoryable textFactory;
@Autowired
private ChartFactoryable chartFactory;
private Boolean subChannel;
private List<PageShowParam> pageShowParams = new ArrayList<PageShowParam>();
public PageDisplayVO getPageDisplayVo(){
return super.getVo();
}
public void setPageDisplayVo(PageDisplayVO pageDisplayVo){
super.setVo(pageDisplayVo);
}
public List<Long> getSelections() {
return super.getOperatorPK();
}
public void setSelections(List<Long> selections) {
super.setOperatorPK(selections);
}
public Boolean getSubChannel() {
return subChannel;
}
public void setSubChannel(Boolean subChannel) {
this.subChannel = subChannel;
}
public List<PageShowParam> getPageShowParams() {
return pageShowParams;
}
public void setPageShowParams(List<PageShowParam> pageShowParams) {
this.pageShowParams = pageShowParams;
}
@Override
protected PageDisplayVO createEmptyVo() {
return new PageDisplayVO();
}
@Override
protected void deleteOperator(Long pk) {
try {
schedulingFac.deletedScheduledJob(pk);
} catch (BaseException e) {
this.addActionMessage(e.getPageMessage());
}
}
@Override
protected PageDisplayVO getOperator(Long pk) {
PageDisplayVO pageDisplayVo = new PageDisplayVO();
try {
JobInfo jobInfo = schedulingFac.getScheduledJob(pk);
pageDisplayVo = ConversionUtil.constructPageVo(jobInfo);
pageDisplayVo.setIsJobChannel(false);
pageDisplayVo.setIsJobReport(false);
pageDisplayVo.setIsJobCrawler(false);
if (jobInfo instanceof EwcmsJobChannel){
setSubChannel(((EwcmsJobChannel)jobInfo).getSubChannel());
pageDisplayVo.setIsJobChannel(true);
}else if (jobInfo instanceof EwcmsJobReport){
TextReport textReport = ((EwcmsJobReport) jobInfo).getTextReport();
ChartReport chartReport = ((EwcmsJobReport) jobInfo).getChartReport();
pageDisplayVo = ConversionUtil.constructPageVo((EwcmsJobReport) jobInfo);
if (textReport != null) {
pageDisplayVo.setReportId(textReport.getId());
pageDisplayVo.setReportName(textReport.getName());
pageDisplayVo.setReportType("text");
pageDisplayVo.setPageShowParams(ConversionUtil.coversionParameterFromPage(ewcmsJobReportFac.findByJobReportParameterById(jobInfo.getId()), textFactory.textParameters(textReport)));
pageDisplayVo.setOutputFormats(ConversionUtil.stringToArray(((EwcmsJobReport) jobInfo).getOutputFormat()));
} else if (chartReport != null) {
pageDisplayVo.setReportId(chartReport.getId());
pageDisplayVo.setReportName(chartReport.getName());
pageDisplayVo.setReportType("chart");
pageDisplayVo.setPageShowParams(ConversionUtil.coversionParameterFromPage(ewcmsJobReportFac.findByJobReportParameterById(jobInfo.getId()), chartFactory.chartParameters(chartReport)));
}
pageDisplayVo.setIsJobReport(true);
setPageDisplayVo(pageDisplayVo);
setPageShowParams(pageDisplayVo.getPageShowParams());
}else if (jobInfo instanceof EwcmsJobCrawler){
pageDisplayVo.setIsJobCrawler(true);
}
} catch (BaseException e) {
}
return pageDisplayVo;
}
@Override
protected Long getPK(PageDisplayVO vo) {
return vo.getJobId();
}
@Override
protected Long saveOperator(PageDisplayVO vo, boolean isUpdate) {
// AlqcJob alqcJob = new AlqcJob();
// try{
// if (vo.getJobId() != null && vo.getJobId().intValue() > 0){
// alqcJob = alqcSchedulingFac.getScheduledJob(vo.getJobId());
// }
// if (vo.getJobClassId() != null && vo.getJobClassId().intValue() > 0){
// AlqcJobClass alqcJobClass = alqcSchedulingFac.findByJobClass(vo.getJobClassId());
// alqcJob.setJobClass(alqcJobClass);
// }
// if (isUpdate) {
// return alqcSchedulingFac.updateScheduledJob(ConversionUtil.constructAlqcJobVo(alqcJob,vo));
// }else{
// return alqcSchedulingFac.saveScheduleJob(ConversionUtil.constructAlqcJobVo(alqcJob, vo));
// }
// }catch(BaseException e){
// this.addActionMessage(e.getPageMessage());
// return null;
// }
return null;
}
@Override
public String save() throws Exception{
JobInfo jobInfo = new JobInfo();
try{
if (getPageDisplayVo().getJobId() != null && getPageDisplayVo().getJobId().intValue() > 0){
jobInfo = schedulingFac.getScheduledJob(getPageDisplayVo().getJobId());
}
if (getPageDisplayVo().getJobClassId() != null && getPageDisplayVo().getJobClassId().intValue() > 0){
JobClass alqcJobClass = schedulingFac.findByJobClass(getPageDisplayVo().getJobClassId());
jobInfo.setJobClass(alqcJobClass);
}
jobInfo = ConversionUtil.constructJobInfoVo(jobInfo, getPageDisplayVo());
if (isUpdateOperator()) {
operatorState = OperatorState.UPDATE;
schedulingFac.updateScheduledJob(jobInfo);
operatorPK.remove(0);
if (!operatorPK.isEmpty()){
setPageDisplayVo(getOperator(operatorPK.get(0)));
}
} else {
operatorState = OperatorState.ADD;
Long id = schedulingFac.saveScheduleJob(jobInfo);
operatorPK.add(id);
setPageDisplayVo(createEmptyVo());
}
}catch(BaseException e){
addActionMessage(e.getPageMessage());
}finally{
getPageDisplayVo().setIsJobChannel(false);
getPageDisplayVo().setIsJobReport(false);
getPageDisplayVo().setIsJobCrawler(false);
if (jobInfo instanceof EwcmsJobChannel){
setSubChannel(((EwcmsJobChannel)jobInfo).getSubChannel());
getPageDisplayVo().setIsJobChannel(true);
}else if (jobInfo instanceof EwcmsJobReport){
getPageDisplayVo().setIsJobReport(true);
}else if (jobInfo instanceof EwcmsJobCrawler){
getPageDisplayVo().setIsJobCrawler(true);
}
}
return SUCCESS;
}
public List<JobClass> getAllJobClassList() {
List<JobClass> jobClasses = new ArrayList<JobClass>();
try {
jobClasses = schedulingFac.findByAllJobClass();
if (!getPageDisplayVo().getIsJobChannel()){
JobClass jobClass = schedulingFac.findByJobClassByClassEntity(JobClassEntity.JOB_CHANNEL);
jobClasses.remove(jobClass);
}
if (!getPageDisplayVo().getIsJobReport()){
JobClass jobClass = schedulingFac.findByJobClassByClassEntity(JobClassEntity.JOB_REPORT);
jobClasses.remove(jobClass);
}
if (!getPageDisplayVo().getIsJobCrawler()){
JobClass jobClass = schedulingFac.findByJobClassByClassEntity(JobClassEntity.JOB_CRAWLER);
jobClasses.remove(jobClass);
}
} catch (BaseException e) {
e.printStackTrace();
}
return jobClasses;
}
private Long jobId;
public Long getJobId() {
return jobId;
}
public void setJobId(Long jobId) {
this.jobId = jobId;
}
public String pauseJob(){
try {
schedulingFac.pauseJob(getJobId());
} catch (BaseException e) {
addActionMessage(e.getPageMessage());
}
return SUCCESS;
}
public String resumedJob(){
try{
schedulingFac.resumedJob(getJobId());
}catch(BaseException e){
addActionMessage(e.getPageMessage());
}
return SUCCESS;
}
}