1 19 20 package org.openbravo.erpCommon.ad_workflow; 21 22 import org.openbravo.erpCommon.utility.*; 23 import org.openbravo.base.secureApp.HttpSecureAppServlet; 24 import org.openbravo.base.secureApp.VariablesSecureApp; 25 import org.openbravo.xmlEngine.XmlDocument; 26 import java.io.*; 27 import javax.servlet.*; 28 import javax.servlet.http.*; 29 30 31 32 public class WorkflowControl extends HttpSecureAppServlet { 33 34 static final int increment = 30; 35 36 public void init (ServletConfig config) { 37 super.init(config); 38 boolHist = false; 39 } 40 41 public void doPost (HttpServletRequest request, HttpServletResponse response) throws IOException,ServletException { 42 VariablesSecureApp vars = new VariablesSecureApp(request); 43 44 String strAD_Workflow_ID = vars.getGlobalVariable("inpadWorkflowId", "WorkflowControl|adWorkflowId"); 45 46 if (!Utility.hasWorkflowAccess(this, vars, strAD_Workflow_ID)) { 47 bdError(response, "AccessTableNoView", vars.getLanguage()); 48 return; 49 } 50 51 if (vars.commandIn("DEFAULT")) { 52 printPage(response, vars, strAD_Workflow_ID); 53 } else if (vars.commandIn("WORKFLOW")) { 54 printPageDataSheet(response, vars, strAD_Workflow_ID); 55 } else if (vars.commandIn("WORKFLOW_ACTION")) { 56 String strAction = vars.getRequiredStringParameter("inpAction"); 57 String strClave = vars.getRequiredStringParameter("inpClave"); 58 String strPath = getUrlPath(vars.getLanguage(), strAction, strClave); 59 60 printPageRedirect(response, vars, strPath); 61 } else pageError(response); 62 } 63 64 void printPageRedirect(HttpServletResponse response, VariablesSecureApp vars, String strPath) throws IOException, ServletException { 65 if (log4j.isDebugEnabled()) log4j.debug("Output: print page redirect"); 66 XmlDocument xmlDocument = xmlEngine.readXmlTemplate("org/openbravo/erpCommon/ad_workflow/WorkflowControl_Redirect").createXmlDocument(); 67 68 xmlDocument.setParameter("language", "LNG_POR_DEFECTO=\"" + vars.getLanguage() + "\";"); 69 xmlDocument.setParameter("href", strPath); 70 response.setContentType("text/html; charset=UTF-8"); 71 PrintWriter out = response.getWriter(); 72 out.println(xmlDocument.print()); 73 out.close(); 74 } 75 76 public String windowIcon(String action) { 77 String strIcon=""; 78 if (action.equals("W")) strIcon = "Popup_Workflow_Button_Icon Menu_Client_Button_Icon_childWindows"; else if (action.equals("X")) strIcon = "Popup_Workflow_Button_Icon Menu_Client_Button_Icon_childForms"; else if (action.equals("P")) strIcon = "Popup_Workflow_Button_Icon Menu_Client_Button_Icon_childProcesses"; else if (action.equals("T")) strIcon = "Popup_Workflow_Button_Icon Menu_Client_Button_Icon_childTasks"; else if (action.equals("R")) strIcon = "Popup_Workflow_Button_Icon Menu_Client_Button_Icon_childProcesses"; else if (action.equals("F")) strIcon = "Popup_Workflow_Button_Icon Menu_Client_Button_Icon_childWorkflows"; else strIcon = "Popup_Workflow_Button_Icon Menu_Client_Button_Icon_childWindows"; return strIcon; 86 } 87 88 public String getUrlPath(String language, String action, String clave) throws ServletException { 89 String strWindow="", strForm="", strProcess="", strTask="", strWorkflow=""; 90 if (action.equals("W")) strWindow = clave; 91 else if (action.equals("X")) strForm = clave; 92 else if (action.equals("P")) strProcess = clave; 93 else if (action.equals("T")) strTask = clave; 94 else if (action.equals("R")) strProcess = clave; 95 else if (action.equals("F")) strWorkflow = clave; 96 else return ""; 97 98 MenuData[] menuData = MenuData.selectData(this, language, strWindow, strProcess, strForm, strTask, strWorkflow); 99 if (menuData==null || menuData.length==0) throw new ServletException("WorkflowControl.getUrlPath() - Error while getting data"); 100 101 return VerticalMenu.getUrlString(strDireccion, menuData[0].name, menuData[0].action, menuData[0].classname, menuData[0].mappingname, menuData[0].adWorkflowId, menuData[0].adTaskId, menuData[0].adProcessId); 102 } 103 104 void printPage(HttpServletResponse response, VariablesSecureApp vars, String strAD_Workflow_ID) throws IOException, ServletException { 105 if (log4j.isDebugEnabled()) log4j.debug("Output: print page"); 106 XmlDocument xmlDocument = xmlEngine.readXmlTemplate("org/openbravo/erpCommon/ad_workflow/WorkflowControl_Response").createXmlDocument(); 107 108 xmlDocument.setParameter("direction", "var baseDirection = \"" + strReplaceWith + "/\";\n"); 109 xmlDocument.setParameter("paramLanguage", "LNG_POR_DEFECTO=\"" + vars.getLanguage() + "\";"); 110 xmlDocument.setParameter("workflow", strAD_Workflow_ID); 111 response.setContentType("text/html; charset=UTF-8"); 112 PrintWriter out = response.getWriter(); 113 out.println(xmlDocument.print()); 114 out.close(); 115 } 116 117 void printPageDataSheet(HttpServletResponse response, VariablesSecureApp vars, String strAD_Workflow_ID) throws IOException, ServletException { 118 if (log4j.isDebugEnabled()) log4j.debug("Output: dataSheet"); 119 WorkflowControlData[] workflowName = null; 120 if (vars.getLanguage().equals("en_US")) { 121 workflowName = WorkflowControlData.selectWorkflowName(this, strAD_Workflow_ID); 122 } else { 123 workflowName = WorkflowControlData.selectWorkflowNameTrl(this, vars.getLanguage(), strAD_Workflow_ID); 124 } 125 String [] discard = {""}; 126 if (workflowName==null || workflowName.length==0 || workflowName[0].help.equals("")) discard[0] = new String ("fieldWorkflowHelp"); 127 XmlDocument xmlDocument = xmlEngine.readXmlTemplate("org/openbravo/erpCommon/ad_workflow/WorkflowControl", discard).createXmlDocument(); 128 129 xmlDocument.setParameter("direction", "var baseDirection = \"" + strReplaceWith + "/\";\n"); 130 xmlDocument.setParameter("paramLanguage", "LNG_POR_DEFECTO=\"" + vars.getLanguage() + "\";"); 131 132 if (workflowName!=null && workflowName.length>0) { 133 xmlDocument.setParameter("workflowName", workflowName[0].name); 134 xmlDocument.setParameter("workflowHelp", workflowName[0].help); 135 } 136 xmlDocument.setParameter("detail", buildHtml(vars, strAD_Workflow_ID)); 137 138 response.setContentType("text/html; charset=UTF-8"); 139 PrintWriter out = response.getWriter(); 140 out.println(xmlDocument.print()); 141 out.close(); 142 } 143 144 String buildHtml(VariablesSecureApp vars, String strAD_Workflow_ID) throws ServletException { 145 String firstNode = WorkflowControlData.selectFirstNode(this, strAD_Workflow_ID); 146 if (firstNode.equals("")) { 147 log4j.warn("WorkflowControl.buildHtml() - There're no first node defined for workflow: " + strAD_Workflow_ID); 148 return ""; 149 } 150 StringBuffer sb = new StringBuffer (); 151 WorkflowControlData[] name = null; 152 if (vars.getLanguage().equals("en_US")) name = WorkflowControlData.selectFirstNodeData(this, firstNode); 153 else name = WorkflowControlData.selectFirstNodeDataTrl(this, vars.getLanguage(), firstNode); 154 sb.append(buildButton(vars, name[0])).append("\n"); 155 sb.append(buildLevel(vars, firstNode)); 156 157 return sb.toString(); 158 } 159 160 String buildLevel(VariablesSecureApp vars, String node) throws ServletException { 161 WorkflowControlData[] data = null; 162 if (vars.getLanguage().equals("en_US")) data = WorkflowControlData.select(this, Utility.getContext(this, vars, "#User_Client", "WorkflowControl"), Utility.getContext(this, vars, "#User_Org", "WorkflowControl"), node); 163 else data = WorkflowControlData.selectTrl(this, vars.getLanguage(), Utility.getContext(this, vars, "#User_Client", "WorkflowControl"), Utility.getContext(this, vars, "#User_Org", "WorkflowControl"), node); 164 if (data==null || data.length==0) return ""; 165 StringBuffer sb = new StringBuffer (); 166 if (data.length>1) { 167 sb.append("<TR><TD colspan=\"2\">\n"); 168 sb.append(" <TABLE cellspacing=\"0\" cellpadding=\"0\" border=\"0\"><TR>"); 169 } 170 for (int i=0;i<data.length;i++) { 171 if (data.length>1) { 172 sb.append("<TD valign=\"top\"><TABLE cellspacing=\"0\" cellpadding=\"0\" class=\"Popup_Client_TableWorkflow\">\n"); 173 sb.append(" <TR>\n"); 174 for (int j=0;j<2;j++) sb.append("<td class=\"TableEdition_OneCell_width\"></td>\n"); 175 sb.append(" </TR>\n"); 176 } 177 sb.append(line()); 178 sb.append(buildButton(vars, data[i])).append("\n"); 179 sb.append(buildLevel(vars, data[i].adWfNodeId)); 180 if (data.length>1) { 181 sb.append("</TABLE></TD>\n"); 182 } 183 } 184 if (data.length>1) { 185 sb.append("</TR></TABLE>\n"); 186 sb.append("</TD></TR>\n"); 187 } 188 return sb.toString(); 189 } 190 191 public String claveWindow(WorkflowControlData data) { 192 if (data.action.equals("W")) return data.adWindowId; 193 else if (data.action.equals("X")) return data.adFormId; 194 else if (data.action.equals("P")) return data.adProcessId; 195 else if (data.action.equals("T")) return data.adTaskId; 196 else if (data.action.equals("R")) return data.adProcessId; 197 else if (data.action.equals("F")) return data.workflowId; 198 else return ""; 199 } 200 201 String buildButton(VariablesSecureApp vars, WorkflowControlData data) throws ServletException { 202 StringBuffer html = new StringBuffer (); 203 String strClave = claveWindow(data); 204 html.append("<TR>\n"); 205 html.append(" <TD class=\"Popup_Workflow_Button_ContentCell\">\n"); 206 html.append(" <a HREF=\"#\" class=\"Popup_Workflow_Button\" onmouseout=\"window.status='';return true;\" onmouseover=\"'"); 207 html.append(data.name).append("';return true;\" onblur=\"this.hideFocus=false\" "); 208 html.append(" onClick=\"this.hideFocus=true;callServlet('").append(data.action).append("', '").append(strClave).append("');return false;\">\n"); 209 html.append(" <img SRC=\"").append(strReplaceWith).append("/images/blank.gif\" class=\"").append(windowIcon(data.action)).append("\" border=\"0\" title=\""); 210 html.append(data.name).append("\"></img></a>\n"); 211 html.append("</TD>\n"); 212 html.append("<TD class=\"Popup_Workflow_text_ContentCell\">\n"); 213 html.append(" <a HREF=\"#\" onclick=\"callServlet('").append(data.action).append("', '").append(strClave).append("');"); 214 html.append("return false;\" onmouseover=\"window.status='").append(data.name).append("';return true;\" "); 215 html.append("onmouseout=\"window.status='';return true;\" class=\"Popup_Workflow_text\">"); 216 html.append(data.name).append("</a>\n"); 217 html.append("</TD>\n"); 218 html.append("</TR>\n"); 219 return html.toString(); 220 } 221 222 String line() { 223 StringBuffer html = new StringBuffer (); 224 html.append("<tr>"); 225 html.append("<td class=\"Popup_Workflow_arrow_ContentCell\"><img class=\"Popup_Workflow_arrow\" SRC=\"").append(strReplaceWith).append("/images/blank.gif\" border=\"0\"></img></td>"); 226 html.append("<td></td></tr>"); 227 return html.toString(); 228 } 229 230 public String getServletInfo() { 231 return "Servlet WorkflowControl"; 232 } } 234 235 | Popular Tags |