/* ================================================================== * 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; } }