/**
* 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.channel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.ewcms.core.site.model.Channel;
import com.ewcms.publication.PublishException;
import com.ewcms.publication.SchedulePublishFacable;
import com.ewcms.scheduling.generate.job.BaseEwcmsExecutionJob;
import com.ewcms.scheduling.generate.job.channel.model.EwcmsJobChannel;
/**
* 执行频道定时发布工作任务
*
* @author 吴智俊
*/
public class EwcmsExecutionChannelJob extends BaseEwcmsExecutionJob {
private static final Logger logger = LoggerFactory.getLogger(EwcmsExecutionChannelJob.class);
public static final String JOB_CHANNEL_FAC = "ewcmsJobChannelFac";
public static final String SCHEDULE_PUBLISH_FAC = "schedulePublishFac";
private EwcmsJobChannel ewcmsJobChannel;
protected void jobExecute(Long jobId) throws Exception {
ewcmsJobChannel = getEwcmsJobChannelFac().getScheduledJobChannel(jobId);
if (ewcmsJobChannel != null){
Channel channel = ewcmsJobChannel.getChannel();
if (channel != null && channel.getPublicenable()){
String channelName = "【" + channel.getName() + "】";
Boolean subChannel = ewcmsJobChannel.getSubChannel();
logger.info("定时发布 {} 频道开始...", channelName);
try{
getSchedulePublishFac().publishChannel(channel.getId(), subChannel);
}catch (PublishException e){
logger.error("定时发布 {} 频道发布异常", channelName);
}
if (channel.getParent() == null){
getSchedulePublishFac().publishChannel(channel.getId(), false);
}
logger.info("定时发布 {} 频道结束.", channelName);
}
}
}
protected void jobClear() {
ewcmsJobChannel = null;
}
private SchedulePublishFacable getSchedulePublishFac(){
return (SchedulePublishFacable) applicationContext.getBean(SCHEDULE_PUBLISH_FAC);
}
private EwcmsJobChannelFacable getEwcmsJobChannelFac() {
return (EwcmsJobChannelFacable) applicationContext.getBean(JOB_CHANNEL_FAC);
}
}