/* ==================================================================
* Created [2009-4-27 下午11:32:55] by Jon.King
* ==================================================================
* TSS
* ==================================================================
* mailTo:jinpujun@hotmail.com
* Copyright (c) Jon.King, 2009-2012
* ==================================================================
*/
package com.jinhe.tss.component.support.web.webwork;
import com.jinhe.tss.core.common.progress.Progress;
import com.jinhe.tss.core.common.progress.ProgressPool;
import com.jinhe.tss.core.exception.BusinessException;
/**
* <p> ProgressActionSupport.java </p>
*
*/
public class ProgressActionSupport extends PTActionSupport{
private static final long serialVersionUID = 12343243353L;
protected String code;
/**
* 获取进度信息
* @return
*/
public String getProgress(){
return printScheduleMessage(code);
}
/**
* 取消,中止进度
* @return
*/
public String doConceal(){
Progress progress = (Progress)ProgressPool.getSchedule(code);
progress.setIsConceal(true); //设置中止标志
return printScheduleMessage(code);
}
protected String printScheduleMessage(String code){
Progress progress = (Progress)ProgressPool.getSchedule(code);
if(!progress.isNormal()){
ProgressPool.removeSchedule(code);
Throwable t = progress.getException();
throw new BusinessException("cause:" + t.getCause() + ".Message:" + t.getMessage());
}
if(progress.isConceal())
throw new BusinessException("取消进度成功");
Object[] info = progress.getProgressInfo();
StringBuffer progressInfo = new StringBuffer("<actionSet>");
progressInfo.append("<percent>"+ info[0] + "</percent>");
progressInfo.append("<delay>" + info[1] + "</delay>");
progressInfo.append("<estimateTime>" + info[2] + "</estimateTime>");
progressInfo.append("<code>" + code + "</code>");
progressInfo.append("</actionSet>");
if(progress.isCompleted()){
ProgressPool.removeSchedule(code); //执行结束则将将进度对象从池中移除
}
return print("ProgressInfo", progressInfo.toString());
}
public void setCode(String code) {
this.code = code;
}
}