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;
}
}