package com.norteksoft.wf.base.tags; import java.io.File; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.tagext.Tag; import javax.servlet.jsp.tagext.TagSupport; import org.apache.commons.io.FileUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.norteksoft.product.util.FtlUtils; import com.norteksoft.product.util.WebContextUtils; import com.norteksoft.task.entity.WorkflowTask; import com.norteksoft.wf.engine.entity.WorkflowDefinition; import com.norteksoft.wf.engine.entity.WorkflowInstance; import com.norteksoft.wf.engine.service.TaskService; import com.norteksoft.wf.engine.service.WorkflowDefinitionManager; import com.norteksoft.wf.engine.service.WorkflowInstanceManager; @Deprecated public class WorkflowButtonGroupTag extends TagSupport { private static final long serialVersionUID = 1L; private Log log = LogFactory.getLog(WorkflowButtonGroupTag.class); private Long taskId; private String formCode; private Integer version; private WorkflowDefinitionManager workflowDefinitionManager; private WorkflowInstanceManager workflowInstanceManager; private TaskService taskService; private String webRoot; private String name = "workflowButtonGroup"; @Override public int doStartTag() throws JspException{ workflowInstanceManager = (WorkflowInstanceManager)WebContextUtils.getBean("workflowInstanceManager"); workflowDefinitionManager = (WorkflowDefinitionManager)WebContextUtils.getBean("workflowDefinitionManager"); taskService = (TaskService)WebContextUtils.getBean("taskService"); if(taskId != null && taskId != 0l){ WorkflowTask task = taskService.getTask(taskId); WorkflowInstance workflow = workflowInstanceManager.getWorkflowInstance(task.getProcessInstanceId()); Long definitionId = workflow.getWorkflowDefinitionId(); WorkflowDefinition definition = workflowDefinitionManager.getWfDefinition(definitionId); formCode = definition.getFormCode(); version = definition.getFromVersion(); } try { JspWriter out=pageContext.getOut(); out.print(readTemplet()); } catch (Exception e) { log.error(e); throw new JspException(e); } return Tag.EVAL_PAGE; } private String readTemplet() throws Exception { webRoot = ((HttpServletRequest)this.pageContext.getRequest()).getContextPath(); WorkflowTask task = null; WorkflowInstance workflow = null; boolean isFirstTask=false; if(taskId!=null&&taskId!=0l){ task = taskService.getTask(taskId); workflow = workflowInstanceManager.getWorkflowInstance(task.getProcessInstanceId()); if(taskId.equals(workflow.getFirstTaskId())){ isFirstTask=true; } } // String templetCode =JarFileUtil.readFile(getClass(), "template/tags/workflowButtonGroup.ftl"); String file = WorkflowHistoryTag.class.getResource("/template/tags/workflowButtonGroup.ftl").getFile(); String templetCode=FileUtils.readFileToString(new File(file),"utf-8"); Map<String, Object> root = new HashMap<String, Object>(); root.put("formCode", formCode); root.put("version", version); root.put("ctx", webRoot); root.put("taskId", taskId); root.put("task", task); root.put("workflow", workflow); root.put("workflowButtonGroupName", name); root.put("isFirstTask", isFirstTask); root.put("companyId", WebContextUtils.getCompanyId().toString()); String result = FtlUtils.renderFile(root, templetCode); return result; } @Override public int doEndTag() throws JspException { return Tag.EVAL_PAGE; } public void setTaskId(Long taskId) { this.taskId = taskId; } public void setName(String name) { this.name = name; } public void setVersion(Integer version) { this.version = version; } public void setFormCode(String formCode) { this.formCode = formCode; } }