KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > openbravo > erpCommon > ad_workflow > WorkflowControl


1 /*
2  *************************************************************************
3  * The contents of this file are subject to the Openbravo Public License
4  * Version 1.0 (the "License"), being the Mozilla Public License
5  * Version 1.1 with a permitted attribution clause; you may not use this
6  * file except in compliance with the License. You may obtain a copy of
7  * the License at http://www.openbravo.com/legal/license.html
8  * Software distributed under the License is distributed on an "AS IS"
9  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
10  * License for the specific language governing rights and limitations
11  * under the License.
12  * The Original Code is Openbravo ERP.
13  * The Initial Developer of the Original Code is Openbravo SL
14  * All portions are Copyright (C) 2001-2006 Openbravo SL
15  * All Rights Reserved.
16  * Contributor(s): ______________________________________.
17  ************************************************************************
18 */

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 JavaDoc 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 JavaDoc strAction = vars.getRequiredStringParameter("inpAction");
57       String JavaDoc strClave = vars.getRequiredStringParameter("inpClave");
58       String JavaDoc 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 JavaDoc 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 JavaDoc windowIcon(String JavaDoc action) {
77     String JavaDoc strIcon="";
78     if (action.equals("W")) strIcon = "Popup_Workflow_Button_Icon Menu_Client_Button_Icon_childWindows";//Window
79
else if (action.equals("X")) strIcon = "Popup_Workflow_Button_Icon Menu_Client_Button_Icon_childForms";//Form
80
else if (action.equals("P")) strIcon = "Popup_Workflow_Button_Icon Menu_Client_Button_Icon_childProcesses";//Process
81
else if (action.equals("T")) strIcon = "Popup_Workflow_Button_Icon Menu_Client_Button_Icon_childTasks";//Task
82
else if (action.equals("R")) strIcon = "Popup_Workflow_Button_Icon Menu_Client_Button_Icon_childProcesses";//Process
83
else if (action.equals("F")) strIcon = "Popup_Workflow_Button_Icon Menu_Client_Button_Icon_childWorkflows";//WorkFlow
84
else strIcon = "Popup_Workflow_Button_Icon Menu_Client_Button_Icon_childWindows";//Windows
85
return strIcon;
86   }
87
88   public String JavaDoc getUrlPath(String JavaDoc language, String JavaDoc action, String JavaDoc clave) throws ServletException {
89     String JavaDoc 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 JavaDoc 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 JavaDoc 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 JavaDoc[] discard = {""};
126     if (workflowName==null || workflowName.length==0 || workflowName[0].help.equals("")) discard[0] = new String JavaDoc("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 JavaDoc buildHtml(VariablesSecureApp vars, String JavaDoc strAD_Workflow_ID) throws ServletException {
145     String JavaDoc 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 JavaDoc sb = new StringBuffer JavaDoc();
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 JavaDoc buildLevel(VariablesSecureApp vars, String JavaDoc 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 JavaDoc sb = new StringBuffer JavaDoc();
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 JavaDoc 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 JavaDoc buildButton(VariablesSecureApp vars, WorkflowControlData data) throws ServletException {
202     StringBuffer JavaDoc html = new StringBuffer JavaDoc();
203     String JavaDoc 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 JavaDoc line() {
223     StringBuffer JavaDoc html = new StringBuffer JavaDoc();
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 JavaDoc getServletInfo() {
231     return "Servlet WorkflowControl";
232   } // end of getServletInfo() method
233
}
234
235
Popular Tags