KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > openbravo > erpCommon > businessUtility > TabFilter


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 package org.openbravo.erpCommon.businessUtility;
20
21 import org.openbravo.base.secureApp.*;
22 import org.openbravo.xmlEngine.XmlDocument;
23 import org.openbravo.utils.FormatUtilities;
24 import org.openbravo.erpCommon.ad_actionButton.*;
25 import java.io.*;
26 import java.util.Vector JavaDoc;
27 import java.util.StringTokenizer JavaDoc;
28 import javax.servlet.*;
29 import javax.servlet.http.*;
30
31
32 public class TabFilter extends HttpSecureAppServlet {
33   
34   
35   public void init (ServletConfig config) {
36     super.init(config);
37     boolHist = false;
38   }
39
40   public void doPost (HttpServletRequest request, HttpServletResponse response) throws IOException,ServletException {
41     VariablesSecureApp vars = new VariablesSecureApp(request);
42
43     if (vars.commandIn("DEFAULT")) {
44       String JavaDoc strTab = vars.getRequiredStringParameter("inpTabId");
45       String JavaDoc strWindow = vars.getRequiredStringParameter("inpWindow");
46       String JavaDoc strWindowId = vars.getStringParameter("inpWindowId");
47       String JavaDoc strOrderBy = vars.getSessionValue(strTab + "|orderby");
48       printPage(response, vars, strTab, strWindow, strWindowId, strOrderBy);
49     } else if (vars.commandIn("ORDERBY", "ORDERBY_CLEAR")) {
50       String JavaDoc strWindow = vars.getStringParameter("inpwindowId");
51       String JavaDoc strOrderBy = vars.getInStringParameter("inpSelectedField");
52       String JavaDoc strTab = vars.getStringParameter("inpTabId");
53       ActionButtonDefaultData[] tab = ActionButtonDefaultData.windowName(this, strTab);
54       String JavaDoc strWindowPath="", strTabName="";
55       if (tab!=null && tab.length!=0) {
56         if (tab[0].help.equals("Y")) strWindowPath="../utility/WindowTree_FS.html?inpTabId=" + strTab;
57         strTabName = FormatUtilities.replace(tab[0].name);
58         strWindowPath = "../" + FormatUtilities.replace(tab[0].description) + "/" + strTabName + "_Relation.html";
59       } else strWindowPath = strDefaultServlet;
60       if (strOrderBy!=null && strOrderBy.length()>0) {
61         strOrderBy = strOrderBy.substring(1, strOrderBy.length()-1);
62         {
63           StringTokenizer JavaDoc st = new StringTokenizer JavaDoc(strOrderBy, ",", false);
64           strOrderBy = "";
65           while (st.hasMoreTokens()) {
66             String JavaDoc token = st.nextToken().trim();
67             if (!strOrderBy.equals("")) strOrderBy += ",";
68             if (token.startsWith("'")) strOrderBy += token.substring(1,token.length()-1).trim();
69           }
70         }
71       }
72       if (vars.commandIn("ORDERBY") && !strOrderBy.equals("")) vars.setSessionValue(strTab + "|orderby", strOrderBy);
73       else vars.removeSessionValue(strTab + "|orderby");
74       printPageClosePopUp(response, vars, strWindowPath);
75     } else pageError(response);
76   }
77
78
79   void printPage(HttpServletResponse response, VariablesSecureApp vars, String JavaDoc strTab, String JavaDoc strWindow, String JavaDoc strWindowId, String JavaDoc strOrderBy) throws IOException, ServletException {
80     if (log4j.isDebugEnabled()) log4j.debug("Output: 'order by' selector");
81     XmlDocument xmlDocument = xmlEngine.readXmlTemplate("org/openbravo/erpCommon/businessUtility/TabFilter").createXmlDocument();
82
83     xmlDocument.setParameter("direction", "var baseDirection = \"" + strReplaceWith + "/\";\n");
84     xmlDocument.setParameter("language", "LNG_POR_DEFECTO=\"" + vars.getLanguage() + "\";");
85     xmlDocument.setParameter("tab", strTab);
86     xmlDocument.setParameter("windowId", strWindowId);
87
88     TabFilterData[] data = null, dataOrderBy = null;
89     if (vars.getLanguage().equals("en_US")) data = TabFilterData.select(this, strTab);
90     else data = TabFilterData.selectTrl(this, vars.getLanguage(), strTab);
91
92     if (data!=null && data.length>0) {
93       data = getShownFieldsData(data);
94       if (data!=null && data.length>0 && !strOrderBy.equals("")) {
95         dataOrderBy = getOrderByFields(data, strOrderBy);
96         data = getShownFieldsDataWithoutOrderBy(data, dataOrderBy);
97       }
98     }
99     xmlDocument.setData("structure1", data);
100     xmlDocument.setData("structure2", dataOrderBy);
101
102     response.setContentType("text/html; charset=UTF-8");
103     PrintWriter out = response.getWriter();
104     out.println(xmlDocument.print());
105     out.close();
106   }
107
108   private boolean isHasDescriptionReference(String JavaDoc reference) {
109     switch (Integer.valueOf(reference).intValue()) {
110       case 17:
111       case 18:
112       case 19:
113       case 21:
114       case 25:
115       case 28:
116       case 30:
117       case 31:
118       case 32:
119       case 35:
120       case 800011: return true;
121     };
122     return false;
123   }
124
125   private TabFilterData[] getShownFieldsData(TabFilterData[] data) {
126     int contador=1;
127     Vector JavaDoc<Object JavaDoc> fields = new Vector JavaDoc<Object JavaDoc>();
128     for (int i=0;i<data.length;i++) {
129       if (mustBeCount(data[i].columnname)) {
130         if (isHasDescriptionReference(data[i].adReferenceId) && data[i].isdisplayed.equals("Y")) contador++;
131         if (data[i].showinrelation.equals("Y") && data[i].isdisplayed.equals("Y")) {
132           TabFilterData dataAux = new TabFilterData();
133           dataAux.position = Integer.toString(contador);
134           dataAux.name = data[i].name;
135           fields.addElement(dataAux);
136         }
137         contador++;
138       }
139     }
140     TabFilterData[] result = new TabFilterData[fields.size()];
141     fields.copyInto(result);
142     return result;
143   }
144
145   private boolean mustBeCount(String JavaDoc columnname) {
146     if (!columnname.equalsIgnoreCase("Created") && !columnname.equalsIgnoreCase("CreatedBy") && !columnname.equalsIgnoreCase("Updated") && !columnname.equalsIgnoreCase("UpdatedBy")) return true;
147     else return false;
148   }
149
150   private TabFilterData[] getOrderByFields(TabFilterData[] data, String JavaDoc strOrderBy) {
151     strOrderBy = strOrderBy.trim();
152     if (strOrderBy.startsWith("(")) strOrderBy = strOrderBy.substring(1, strOrderBy.length()-1);
153     if (log4j.isDebugEnabled()) log4j.debug("TabFilter - getOrderByFields() - String to parse: " + strOrderBy);
154     StringTokenizer JavaDoc orderBy = new StringTokenizer JavaDoc(strOrderBy, ",");
155     Vector JavaDoc<Object JavaDoc> fields = new Vector JavaDoc<Object JavaDoc>();
156     boolean isnegative = false;
157     while (orderBy.hasMoreTokens()) {
158       String JavaDoc token = orderBy.nextToken();
159       token = token.trim();
160       if (token.startsWith("'")) token = token.substring(1, token.length()-1);
161       String JavaDoc realToken = token;
162       if (token.startsWith("-")) {
163         token = token.substring(1);
164         isnegative = true;
165       }
166       if (log4j.isDebugEnabled()) log4j.debug("TabFilter - getOrderByFields() - token to parse: " + token + " - real token: " + realToken);
167       for (int i=0;i<data.length;i++) {
168         if (data[i].position.equals(token)) {
169           TabFilterData dataAux = new TabFilterData();
170           dataAux.position = data[i].position;
171           dataAux.completePosition = (isnegative?"-":"") + data[i].position;
172           dataAux.name = data[i].name;
173           dataAux.completeName = (!token.equals(realToken)?"\\/":"/\\") + data[i].name;
174           fields.addElement(dataAux);
175           break;
176         }
177       }
178     }
179     TabFilterData[] result = new TabFilterData[fields.size()];
180     fields.copyInto(result);
181     return result;
182   }
183
184   private TabFilterData[] getShownFieldsDataWithoutOrderBy(TabFilterData[] data, TabFilterData[] dataOrderBy) {
185     Vector JavaDoc<Object JavaDoc> fields = new Vector JavaDoc<Object JavaDoc>();
186     boolean exists=false;
187     for (int i=0;i<data.length;i++) {
188       for (int j=0;j<dataOrderBy.length;j++) {
189         exists=false;
190         if (data[i].position.equals(dataOrderBy[j].position)) {
191           exists=true;
192           break;
193         }
194       }
195       if (!exists) fields.addElement(data[i]);
196     }
197     TabFilterData[] result = new TabFilterData[fields.size()];
198     fields.copyInto(result);
199     return result;
200   }
201
202   public String JavaDoc getServletInfo() {
203     return "Servlet that presents the 'order by' selector";
204   } // end of getServletInfo() method
205
}
206
Popular Tags