KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > openbravo > erpCommon > utility > Utility


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.utility;
20
21 import org.openbravo.database.ConnectionProvider;
22 import org.openbravo.erpCommon.reference.*;
23 import org.openbravo.data.FieldProvider;
24 import org.openbravo.base.secureApp.VariablesSecureApp;
25 import org.openbravo.data.Sqlc;
26 import org.openbravo.erpCommon.utility.DateTimeData;
27 import org.openbravo.utils.Replace;
28 import java.util.StringTokenizer JavaDoc;
29 import java.util.Hashtable JavaDoc;
30 import java.util.Enumeration JavaDoc;
31 import java.util.Vector JavaDoc;
32 import javax.servlet.ServletException JavaDoc;
33 import java.io.*;
34 import org.apache.log4j.Logger ;
35
36 public class Utility {
37   static Logger log4j = Logger.getLogger(Utility.class);
38 /*
39   public static String truncate(String s, int i) {
40     if(s == null && s.length() == 0) return "";
41     if(i < s.length()) s = s.substring(0, i) + "...";
42     return s;
43   }
44
45   public static String replaceTildes(String strIni) {
46     //Delete tilde characters
47     return Replace.replace( Replace.replace( Replace.replace( Replace.replace( Replace.replace( Replace.replace( Replace.replace( Replace.replace( Replace.replace( Replace.replace( strIni, "á", "a"), "é", "e"), "í", "i"), "ó", "o"), "ú", "u"), "Ã?", "A"), "É", "E"), "Ã?", "I"), "Ó", "O"), "Ú", "U");
48   }
49
50   public static String replace(String strIni) {
51     //delete characters: " ","&",","
52     return Replace.replace( Replace.replace( Replace.replace( Replace.replace( Replace.replace( Replace.replace( Replace.replace( Replace.replace( replaceTildes(strIni), "-",""), "/", ""), "#", ""), " ", ""), "&", ""), ",", ""), "(", ""), ")", "");
53   }
54
55   public static String replaceJS(String strIni) {
56     return replaceJS(strIni, true);
57   }
58
59   public static String replaceJS(String strIni, boolean isUnderQuotes) {
60     return Replace.replace( Replace.replace(Replace.replace(Replace.replace(strIni, "'", (isUnderQuotes?"\\'":"&#039;")), "\"", "\\\""), "\n", "\\n"), "\r", "");
61   }
62 */

63   public static boolean isDecimalNumber (String JavaDoc reference) {
64     if (reference==null || reference.equals("")) return false;
65     switch (Integer.valueOf(reference).intValue()) {
66     case 12:
67     case 22:
68     case 29:
69     case 80008: return true;
70     }
71     return false;
72   }
73
74   public static boolean isIntegerNumber (String JavaDoc reference) {
75     if (reference==null || reference.equals("")) return false;
76     switch (Integer.valueOf(reference).intValue()) {
77     case 11:
78     case 13:
79     case 25: return true;
80     }
81     return false;
82   }
83
84   public static boolean isDateTime (String JavaDoc reference) {
85     if (reference==null || reference.equals("")) return false;
86     switch (Integer.valueOf(reference).intValue()) {
87     case 15:
88     case 16:
89     case 24: return true;
90     }
91     return false;
92   }
93
94   public static boolean hasAttachments(ConnectionProvider conn, String JavaDoc userClient, String JavaDoc userOrg, String JavaDoc tableId, String JavaDoc recordId) throws ServletException JavaDoc {
95     if (tableId.equals("") || recordId.equals("")) return false;
96     else return UtilityData.select(conn, userClient, userOrg, tableId, recordId);
97   }
98
99   public static String JavaDoc messageBD(ConnectionProvider conn, String JavaDoc strCode, String JavaDoc strLanguage) {
100     String JavaDoc strMessage="";
101     if (strLanguage==null || strLanguage.equals("")) strLanguage = "en_US";
102
103     try{
104       log4j.debug("Utility.messageBD - Message Code: " + strCode);
105       if (strLanguage.equals("en_US")) strMessage = MessageBDData.message(conn, strCode);
106       else strMessage = MessageBDData.messageLanguage(conn, strCode, strLanguage);
107     } catch(Exception JavaDoc ignore){}
108     log4j.debug("Utility.messageBD - Message description: " + strMessage);
109     if (strMessage==null || strMessage.equals("")) {
110       try {
111         if (strLanguage.equals("en_US")) strMessage = MessageBDData.columnname(conn, strCode);
112         else strMessage = MessageBDData.columnnameLanguage(conn, strCode, strLanguage);
113       } catch(Exception JavaDoc e) {
114         strMessage = strCode;
115       }
116     }
117     if (strMessage==null || strMessage.equals("")) strMessage = strCode;
118     return Replace.replace(Replace.replace(strMessage, "\n", "\\n"), "\"", "&quot;");
119   }
120
121   public static String JavaDoc getPreference(VariablesSecureApp vars, String JavaDoc context, String JavaDoc window) {
122     if (context==null || context.equals("")) throw new IllegalArgumentException JavaDoc("getPreference - require context");
123     String JavaDoc retValue="";
124
125     retValue = vars.getSessionValue("P|" + window + "|" + context);
126     if (retValue.equals("")) retValue = vars.getSessionValue("P|" + context);
127
128     return (retValue);
129   }
130
131   public static String JavaDoc getTransactionalDate(ConnectionProvider conn, VariablesSecureApp vars, String JavaDoc window) {
132     String JavaDoc retValue="";
133
134     try {
135       retValue = getContext(conn, vars, "Transactional$Range", window);
136     } catch (IllegalArgumentException JavaDoc ignored) {}
137
138     if (retValue.equals("")) return "1";
139     return retValue;
140   }
141
142   public static String JavaDoc getContext(ConnectionProvider conn, VariablesSecureApp vars, String JavaDoc context, String JavaDoc window) {
143     if (context==null || context.equals("")) throw new IllegalArgumentException JavaDoc("getContext - require context");
144     String JavaDoc retValue="";
145
146     if (!context.startsWith("#") && !context.startsWith("$")) {
147       retValue = getPreference(vars, context, window);
148       if (!window.equals("") && retValue.equals("")) retValue = vars.getSessionValue(window + "|" + context);
149       if (retValue.equals("")) retValue = vars.getSessionValue("#" + context);
150       if (retValue.equals("")) retValue = vars.getSessionValue("$" + context);
151     } else {
152       try {
153         if (context.equalsIgnoreCase("#Date")) return DateTimeData.today(conn);
154       } catch (ServletException JavaDoc e) {}
155       retValue = vars.getSessionValue(context);
156       if (context.equalsIgnoreCase("#User_Org") || context.equalsIgnoreCase("#User_Client")) {
157         if (retValue!="0" && !retValue.startsWith("0,") && retValue.indexOf(",0")==-1) {
158           retValue = "0" + (retValue.equals("")?"":",") + retValue;
159         }
160         log4j.debug("getContext(" + context + "):.. " + retValue);
161       }
162     }
163
164     return retValue;
165   }
166
167   public static String JavaDoc getDefault(ConnectionProvider conn, VariablesSecureApp vars, String JavaDoc columnname, String JavaDoc context, String JavaDoc window, String JavaDoc defaultValue) {
168     if (columnname == null || columnname.equals("")) return "";
169     String JavaDoc defStr = getPreference(vars, columnname, window);
170     if (!defStr.equals("")) return defStr;
171     StringTokenizer JavaDoc st = new StringTokenizer JavaDoc(context, ",;", false);
172     
173     while (st.hasMoreTokens()) {
174       String JavaDoc token = st.nextToken().trim();
175       if (token.indexOf("@")==-1) defStr = token;
176       else defStr = parseContext(conn, vars, token, window);
177       if (!defStr.equals("")) return defStr;
178     }
179     if (defStr.equals("")) defStr = vars.getSessionValue("#" + columnname);
180     if (defStr.equals("")) defStr = vars.getSessionValue("$" + columnname);
181     if (defStr.equals("") && defaultValue!=null) defStr=defaultValue;
182     log4j.debug("getDefault(" + columnname + "): " + defStr);
183     return defStr;
184   }
185
186   public static String JavaDoc parseContext(ConnectionProvider conn, VariablesSecureApp vars, String JavaDoc context, String JavaDoc window) {
187     if (context==null || context.equals("")) return "";
188     StringBuffer JavaDoc strOut = new StringBuffer JavaDoc();
189     String JavaDoc value = new String JavaDoc(context);
190     String JavaDoc token, defStr;
191     int i = value.indexOf("@");
192     while (i!=-1) {
193       strOut.append(value.substring(0,i));
194       value = value.substring(i+1);
195       int j=value.indexOf("@");
196       if (j==-1) {
197         strOut.append(value);
198         return strOut.toString();
199       }
200       token = value.substring(0, j);
201       defStr=getContext(conn, vars, token, window);
202       if (defStr.equals("")) return "";
203       strOut.append(defStr);
204       value=value.substring(j+1);
205       i=value.indexOf("@");
206     }
207     return strOut.toString();
208   }
209
210   public static String JavaDoc getDocumentNo (ConnectionProvider conn, VariablesSecureApp vars, String JavaDoc WindowNo, String JavaDoc TableName, String JavaDoc C_DocTypeTarget_ID, String JavaDoc C_DocType_ID, boolean onlyDocType, boolean updateNext) {
211     if (TableName == null || TableName.length() == 0) throw new IllegalArgumentException JavaDoc("Utility.getDocumentNo - required parameter missing");
212     String JavaDoc AD_Client_ID = getContext(conn, vars, "AD_Client_ID", WindowNo);
213     String JavaDoc AD_Org_ID = getContext(conn, vars, "AD_Org_ID", WindowNo);
214
215     String JavaDoc cDocTypeID = (C_DocTypeTarget_ID.equals("")?C_DocType_ID:C_DocTypeTarget_ID);
216     if (cDocTypeID.equals("")) return getDocumentNo (conn, AD_Client_ID, TableName, updateNext);
217
218     if (AD_Client_ID.equals("0")) throw new UnsupportedOperationException JavaDoc("Utility.getDocumentNo - Cannot add System records");
219
220     CSResponse cs=null;
221     try {
222       cs = DocumentNoData.nextDocType(conn, cDocTypeID, AD_Client_ID, (updateNext?"Y":"N"));
223     } catch (ServletException JavaDoc e) {}
224
225     if (cs==null || cs.razon==null || cs.razon.equals("")) {
226         if (!onlyDocType) return getDocumentNo (conn, AD_Client_ID, TableName, updateNext);
227         else return "0";
228     } else return cs.razon;
229   }
230
231   public static String JavaDoc getDocumentNo (ConnectionProvider conn, String JavaDoc AD_Client_ID, String JavaDoc TableName, boolean updateNext) {
232     if (TableName == null || TableName.length() == 0) throw new IllegalArgumentException JavaDoc("Utility.getDocumentNo - required parameter missing");
233
234     CSResponse cs=null;
235     try {
236       cs = DocumentNoData.nextDoc(conn, "DocumentNo_" + TableName, AD_Client_ID, (updateNext?"Y":"N"));
237     } catch (ServletException JavaDoc e) {}
238
239
240     if (cs==null || cs.razon==null) return "";
241     else return cs.razon;
242   }
243
244   public static String JavaDoc addSystem (String JavaDoc list) {
245     String JavaDoc retValue = "";
246
247     Hashtable JavaDoc<String JavaDoc, String JavaDoc> ht = new Hashtable JavaDoc<String JavaDoc, String JavaDoc>();
248     ht.put("0", "0");
249
250     StringTokenizer JavaDoc st = new StringTokenizer JavaDoc(list, ",", false);
251     while (st.hasMoreTokens()) ht.put(st.nextToken(), "x");
252
253     Enumeration JavaDoc e = ht.keys();
254     while (e.hasMoreElements()) retValue += (String JavaDoc)e.nextElement() + ",";
255
256     retValue = retValue.substring(0, retValue.length()-1);
257     return retValue;
258   }
259
260   public static boolean hasFormAccess (ConnectionProvider conn, VariablesSecureApp vars, String JavaDoc process) {
261     return hasFormAccess (conn, vars, process, "");
262   }
263
264   public static boolean hasFormAccess (ConnectionProvider conn, VariablesSecureApp vars, String JavaDoc process, String JavaDoc processName) {
265     try {
266       if (process.equals("") && processName.equals("")) return true;
267       else if (!process.equals("")) {
268         if (!WindowAccessData.hasFormAccess(conn, vars.getRole(), process)) return false;
269       } else {
270         if (!WindowAccessData.hasFormAccessName(conn, vars.getRole(), processName)) return false;
271       }
272     } catch (ServletException JavaDoc e) {
273       return false;
274     }
275     return true;
276   }
277
278   public static boolean hasProcessAccess (ConnectionProvider conn, VariablesSecureApp vars, String JavaDoc process) {
279     return hasProcessAccess (conn, vars, process, "");
280   }
281
282   public static boolean hasProcessAccess (ConnectionProvider conn, VariablesSecureApp vars, String JavaDoc process, String JavaDoc processName) {
283     try {
284       if (process.equals("") && processName.equals("")) return true;
285       else if (!process.equals("")) {
286         if (!WindowAccessData.hasProcessAccess(conn, vars.getRole(), process)) return false;
287       } else {
288         if (!WindowAccessData.hasProcessAccessName(conn, vars.getRole(), processName)) return false;
289       }
290     } catch (ServletException JavaDoc e) {
291       return false;
292     }
293     return true;
294   }
295
296   public static boolean hasTaskAccess (ConnectionProvider conn, VariablesSecureApp vars, String JavaDoc task) {
297     return hasTaskAccess(conn, vars, task, "");
298   }
299
300   public static boolean hasTaskAccess (ConnectionProvider conn, VariablesSecureApp vars, String JavaDoc task, String JavaDoc taskName) {
301     try {
302       if (task.equals("") && taskName.equals("")) return true;
303       else if (!task.equals("")) {
304         if (!WindowAccessData.hasTaskAccess(conn, vars.getRole(), task)) return false;
305       } else if (!WindowAccessData.hasTaskAccessName(conn, vars.getRole(), taskName)) return false;
306     } catch (ServletException JavaDoc e) {
307       return false;
308     }
309     return true;
310   }
311
312   public static boolean hasWorkflowAccess (ConnectionProvider conn, VariablesSecureApp vars, String JavaDoc workflow) {
313     try {
314       if (workflow.equals("")) return true;
315       else {
316         if (!WindowAccessData.hasWorkflowAccess(conn, vars.getRole(), workflow)) return false;
317       }
318     } catch (ServletException JavaDoc e) {
319       return false;
320     }
321     return true;
322   }
323
324   public static boolean hasAccess (ConnectionProvider conn, VariablesSecureApp vars, String JavaDoc TableLevel, String JavaDoc AD_Client_ID, String JavaDoc AD_Org_ID, String JavaDoc window, String JavaDoc tab) {
325     String JavaDoc command = vars.getCommand();
326     try {
327       if (!canViewInsert(conn, vars, TableLevel, window)) return false;
328       else if (!WindowAccessData.hasWindowAccess(conn, vars.getRole(), window)) return false;
329       else if (WindowAccessData.hasNoTableAccess(conn, vars.getRole(), tab)) return false;
330       else if (command.toUpperCase().startsWith("SAVE")) {
331         if (!canUpdate (conn, vars, AD_Client_ID, AD_Org_ID, window)) return false;
332       } else if (command.toUpperCase().startsWith("DELETE")) {
333         if (!canUpdate (conn, vars, AD_Client_ID, AD_Org_ID, window)) return false;
334       }
335     } catch (ServletException JavaDoc e) {
336       return false;
337     }
338     return true;
339   }
340
341   public static boolean canUpdate (ConnectionProvider conn, VariablesSecureApp vars, String JavaDoc AD_Client_ID, String JavaDoc AD_Org_ID, String JavaDoc window) throws ServletException JavaDoc {
342     String JavaDoc User_Level = getContext(conn, vars, "#User_Level", window);
343
344     if (User_Level.indexOf("S") != -1) return true;
345
346     boolean retValue = true;
347     String JavaDoc whatMissing = "";
348
349     if (AD_Client_ID.equals("0") && AD_Org_ID.equals("0") && User_Level.indexOf("S") == -1) {
350       retValue = false;
351       whatMissing += "S";
352     } else if (!AD_Client_ID.equals("0") && AD_Org_ID.equals("0") && User_Level.indexOf("C") == -1) {
353       retValue = false;
354       whatMissing += "C";
355     } else if (!AD_Client_ID.equals("0") && !AD_Org_ID.equals("0") && User_Level.indexOf("O") == -1) {
356       retValue = false;
357       whatMissing += "O";
358     }
359
360     if (!WindowAccessData.hasWriteAccess(conn, window, vars.getRole())) retValue = false;
361
362     return retValue;
363   }
364
365   public static boolean canViewInsert(ConnectionProvider conn, VariablesSecureApp vars, String JavaDoc TableLevel, String JavaDoc window) {
366     String JavaDoc User_Level = getContext(conn, vars, "#User_Level", window);
367
368     boolean retValue = true;
369
370     if (TableLevel.equals("4") && User_Level.indexOf("S") == -1) retValue = false;
371     else if (TableLevel.equals("1") && User_Level.indexOf("O") == -1) retValue = false;
372     else if (TableLevel.equals("3") && (!(User_Level.indexOf("C")!=-1 || User_Level.indexOf("O")!=-1)) ) retValue = false;
373     else if (TableLevel.equals("6") && (!(User_Level.indexOf("S")!=-1 || User_Level.indexOf("C")!=-1)) ) retValue = false;
374
375     if (retValue) return retValue;
376
377     return retValue;
378   }
379
380   public static String JavaDoc parseTranslation(ConnectionProvider conn, VariablesSecureApp vars, String JavaDoc language, String JavaDoc text) {
381     if (text == null || text.length() == 0) return text;
382
383     String JavaDoc inStr = text;
384     String JavaDoc token;
385     StringBuffer JavaDoc outStr = new StringBuffer JavaDoc();
386
387     int i = inStr.indexOf("@");
388     while (i != -1) {
389       outStr.append(inStr.substring(0, i));
390       inStr = inStr.substring(i+1, inStr.length());
391
392       int j = inStr.indexOf("@");
393       if (j < 0) {
394         inStr = "@" + inStr;
395         break;
396       }
397
398       token = inStr.substring(0, j);
399       outStr.append(translate(conn, vars, token, language));
400
401       inStr = inStr.substring(j+1, inStr.length());
402       i = inStr.indexOf("@");
403     }
404
405     outStr.append(inStr);
406     return outStr.toString();
407   }
408
409   public static String JavaDoc translate(ConnectionProvider conn, VariablesSecureApp vars, String JavaDoc token, String JavaDoc language) {
410     String JavaDoc strTranslate = token;
411     strTranslate = vars.getSessionValue(token);
412     if (!strTranslate.equals("")) return strTranslate;
413     strTranslate = messageBD(conn, token, language);
414     if (strTranslate.equals("")) return token;
415     return strTranslate;
416   }
417
418   public static boolean isInFieldProvider(FieldProvider[] data, String JavaDoc fieldName, String JavaDoc key) {
419     if (data==null || data.length==0) return false;
420     else if (fieldName==null || fieldName.trim().equals("")) return false;
421     else if (key==null || key.trim().equals("")) return false;
422     String JavaDoc f="";
423     for (int i=0;i<data.length;i++) {
424       try {
425         f = data[i].getField(fieldName);
426       } catch (Exception JavaDoc e) {
427         log4j.error("Utility.isInFieldProvider - " + e);
428         return false;
429       }
430       if (f!=null && f.equalsIgnoreCase(key)) return true;
431     }
432     return false;
433   }
434
435   public static String JavaDoc getOrderByFromSELECT(String JavaDoc[] SQL, Vector JavaDoc<String JavaDoc> fields) {
436     if (SQL==null || SQL.length==0) return "";
437     else if (fields==null || fields.size()==0) return "";
438     StringBuffer JavaDoc script = new StringBuffer JavaDoc();
439     for (int i=0;i<fields.size();i++) {
440       String JavaDoc token = fields.elementAt(i);
441       token = token.trim();
442       boolean isnegative = false;
443       if (token.startsWith("-")) {
444         token = token.substring(1);
445         isnegative = true;
446       }
447       if (Integer.valueOf(token).intValue()>SQL.length) log4j.error("Field not found in select - at position: " + token);
448       if (!script.toString().equals("")) script.append(", ");
449       String JavaDoc strAux = SQL[Integer.valueOf(token).intValue() - 1];
450       strAux = strAux.toUpperCase().trim();
451       int pos = strAux.indexOf(" AS ");
452       if (pos!=-1) strAux = strAux.substring(0, pos);
453       strAux = strAux.trim();
454       script.append(strAux);
455       if (isnegative) script.append(" DESC");
456     }
457     return script.toString();
458   }
459
460   public static String JavaDoc getWindowID(ConnectionProvider conn, String JavaDoc strTabID) throws ServletException JavaDoc {
461     return UtilityData.getWindowID(conn, strTabID);
462   }
463 /*
464   public static String getRegistryKey(String key) {
465     RegistryKey aKey = null;
466     RegStringValue regValue = null;
467
468     try{
469       aKey = com.ice.jni.registry.Registry.HKEY_LOCAL_MACHINE.openSubKey("SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment");
470       regValue = (RegStringValue)aKey.getValue("PATH");
471     } catch(NoSuchValueException e) {
472     //Key value does not exist.
473     } catch(RegistryException e) {
474     //Any other registry API error.
475     }
476     return regValue.toString();
477   }*/

478
479   public static boolean generateFile(String JavaDoc strPath, String JavaDoc strFile, String JavaDoc data) {
480     try {
481       File fileData = new File(strPath, strFile);
482       FileWriter fileWriterData = new FileWriter(fileData);
483       PrintWriter printWriterData = new PrintWriter(fileWriterData);
484       printWriterData.print(data);
485       fileWriterData.close();
486     } catch (IOException e) {
487       e.printStackTrace();
488       log4j.error("Problem of IOExceptio in file: " + strPath + " - " + strFile);
489       return false;
490     }
491     return true;
492   }
493 /*
494   public static String sha1Base64(String text) throws ServletException {
495     if (text==null || text.trim().equals("")) return "";
496     String result = text;
497     result = CryptoSHA1BASE64.encriptar(text);
498     return result;
499   }
500
501   public static String encryptDecrypt(String text, boolean encrypt) throws ServletException {
502     if (text==null || text.trim().equals("")) return "";
503     String result = text;
504     if (encrypt) result = CryptoUtility.encrypt(text);
505     else result = CryptoUtility.decrypt(text);
506     return result;
507   }
508 */

509   public static boolean isTreeTab(ConnectionProvider conn, String JavaDoc stradTabId) throws ServletException JavaDoc {
510     return UtilityData.isTreeTab(conn, stradTabId);
511   }
512
513   public static void fillSQLParameters(ConnectionProvider conn, VariablesSecureApp vars, FieldProvider data, ComboTableData cmb, String JavaDoc window, String JavaDoc actual_value) throws ServletException JavaDoc {
514     Vector JavaDoc<String JavaDoc> vAux = cmb.getParameters();
515     if (vAux!=null && vAux.size()>0) {
516       if (log4j.isDebugEnabled()) log4j.debug("Combo Parameters: " + vAux.size());
517       for (int i=0;i<vAux.size();i++) {
518         String JavaDoc strAux = vAux.elementAt(i);
519         try {
520           String JavaDoc value = parseParameterValue(conn, vars, data, strAux, window, actual_value);
521           if (log4j.isDebugEnabled()) log4j.debug("Combo Parameter: " + strAux + " - Value: " + value);
522           cmb.setParameter(strAux, value);
523         } catch (Exception JavaDoc ex) {
524           throw new ServletException JavaDoc(ex);
525         }
526       }
527     }
528   }
529
530   public static void fillTableSQLParameters(ConnectionProvider conn, VariablesSecureApp vars, FieldProvider data, TableSQLData cmb, String JavaDoc window) throws ServletException JavaDoc {
531     Vector JavaDoc<String JavaDoc> vAux = cmb.getParameters();
532     if (vAux!=null && vAux.size()>0) {
533       if (log4j.isDebugEnabled()) log4j.debug("Combo Parameters: " + vAux.size());
534       for (int i=0;i<vAux.size();i++) {
535         String JavaDoc strAux = vAux.elementAt(i);
536         try {
537           String JavaDoc value = parseParameterValue(conn, vars, data, strAux, window, "");
538           if (log4j.isDebugEnabled()) log4j.debug("Combo Parameter: " + strAux + " - Value: " + value);
539           cmb.setParameter(strAux, value);
540         } catch (Exception JavaDoc ex) {
541           throw new ServletException JavaDoc(ex);
542         }
543       }
544     }
545   }
546
547   public static String JavaDoc parseParameterValue(ConnectionProvider conn, VariablesSecureApp vars, FieldProvider data, String JavaDoc name, String JavaDoc window, String JavaDoc actual_value) throws Exception JavaDoc {
548     String JavaDoc strAux = null;
549     if (name.equalsIgnoreCase("@ACTUAL_VALUE@")) return actual_value;
550     if (data!=null) strAux = data.getField(name);
551     if (strAux==null) {
552       strAux = vars.getStringParameter("inp" + Sqlc.TransformaNombreColumna(name));
553       if (log4j.isDebugEnabled()) log4j.debug("parseParameterValues - getStringParameter(inp" + Sqlc.TransformaNombreColumna(name) + "): " + strAux);
554       if (strAux==null || strAux.equals("")) strAux = getContext(conn, vars, name, window);
555     }
556     return strAux;
557   }
558
559   public static OBError getProcessInstanceMessage(ConnectionProvider conn, VariablesSecureApp vars, PInstanceProcessData[] pinstanceData) throws ServletException JavaDoc {
560     OBError myMessage = new OBError();
561     if (pinstanceData!=null && pinstanceData.length>0) {
562       String JavaDoc message = "";
563       String JavaDoc title = "Error";
564       String JavaDoc type = "Error";
565       if (!pinstanceData[0].errormsg.equals("")) {
566         message = pinstanceData[0].errormsg;
567       } else if (!pinstanceData[0].pMsg.equals("")) {
568         message = pinstanceData[0].pMsg;
569       }
570
571       if (pinstanceData[0].result.equals("1")) {
572         type = "Success";
573         title = Utility.messageBD(conn, "Success", vars.getLanguage());
574       } else if (pinstanceData[0].result.equals("0")) {
575         type = "Error";
576         title = Utility.messageBD(conn, "Error", vars.getLanguage());
577       } else {
578         type = "Warning";
579         title = Utility.messageBD(conn, "Warning", vars.getLanguage());
580       }
581
582       int errorPos = message.indexOf("@ERROR=");
583       if (errorPos!=-1) {
584         myMessage = Utility.translateError(conn, vars, vars.getLanguage(), "@CODE=@" + message.substring(errorPos+7));
585         if (log4j.isDebugEnabled()) log4j.debug("Error Message returned: " + myMessage.getMessage());
586         if (message.substring(errorPos+7).equals(myMessage.getMessage())) {
587           myMessage.setMessage(parseTranslation(conn, vars, vars.getLanguage(), myMessage.getMessage()));
588         }
589         if (errorPos > 0) message = message.substring(0, errorPos);
590         else message = "";
591       }
592       if (!message.equals("") && message.indexOf("@")!=-1) message = Utility.parseTranslation(conn, vars, vars.getLanguage(), message);
593       myMessage.setType(type);
594       myMessage.setTitle(title);
595       myMessage.setMessage(message + ((!message.equals("") && errorPos!=-1)?" <br> ":"") + myMessage.getMessage());
596     }
597     return myMessage;
598   }
599
600   public static OBError translateError(ConnectionProvider conn, VariablesSecureApp vars, String JavaDoc strLanguage, String JavaDoc message) {
601     OBError myError = new OBError();
602     myError.setType("Error");
603     myError.setMessage(message);
604     if (message!=null && !message.equals("")) {
605       String JavaDoc code = "";
606       if (log4j.isDebugEnabled()) log4j.debug("translateError - message: " + message);
607       if (message.startsWith("@CODE=@")) message = message.substring(7);
608       else if (message.startsWith("@CODE=")) {
609         message = message.substring(6);
610         int pos = message.indexOf("@");
611         if (pos==-1) {
612           code = message;
613           message = "";
614         } else {
615           code = message.substring(0, pos);
616           message = message.substring(pos+1);
617         }
618       }
619       myError.setMessage(message);
620       if (log4j.isDebugEnabled()) log4j.debug("translateError - code: " + code + " - message: " + message);
621
622       //BEGIN Checking if is a pool problem
623
if (code!=null && code.equals("NoConnectionAvailable")) {
624         myError.setType("Error");
625         myError.setTitle("Critical Error");
626         myError.setConnectionAvailable(false);
627         myError.setMessage("No database connection available");
628         return myError;
629       }
630       //END Checking if is a pool problem
631

632       //BEGIN Parsing message text
633
if (message!=null && !message.equals("")) {
634         String JavaDoc rdbms = conn.getRDBMS();
635         ErrorTextParser myParser = null;
636         try {
637           Class JavaDoc c = Class.forName("org.openbravo.erpCommon.utility.ErrorTextParser" + rdbms.toUpperCase());
638           myParser = (ErrorTextParser) c.newInstance();
639         } catch (ClassNotFoundException JavaDoc ex) {
640           log4j.warn("Couldn´t find class: org.openbravo.erpCommon.utility.ErrorTextParser" + rdbms.toUpperCase());
641           myParser = null;
642         } catch (Exception JavaDoc ex1) {
643           log4j.warn("Couldn´t initialize class: org.openbravo.erpCommon.utility.ErrorTextParser" + rdbms.toUpperCase());
644           myParser = null;
645         }
646         if (myParser!=null) {
647           myParser.setConnection(conn);
648           myParser.setLanguage(strLanguage);
649           myParser.setMessage(message);
650           myParser.setVars(vars);
651           try {
652             OBError myErrorAux = myParser.parse();
653             if (myErrorAux!=null && !myErrorAux.getMessage().equals("") && (code==null || code.equals("") || code.equals("0") || !myErrorAux.getMessage().equalsIgnoreCase(message))) return myErrorAux;
654           } catch (Exception JavaDoc ex) {
655             log4j.error("Error while parsing text: " + ex);
656           }
657         }
658       } else myError.setMessage(code);
659       //END Parsing message text
660

661       //BEGIN Looking for error code in AD_Message
662
if (code!=null && !code.equals("")) {
663         FieldProvider fldMessage = locateMessage(conn, code, strLanguage);
664         if (fldMessage!=null) {
665           myError.setType((fldMessage.getField("msgtype").equals("E")?"Error":(fldMessage.getField("msgtype").equals("I")?"Info":(fldMessage.getField("msgtype").equals("S")?"Success":"Warning"))));
666           myError.setMessage(fldMessage.getField("msgtext"));
667           return myError;
668         }
669       }
670       //END Looking for error code in AD_Message
671
}
672     return myError;
673   }
674
675   public static FieldProvider locateMessage(ConnectionProvider conn, String JavaDoc strCode, String JavaDoc strLanguage) {
676     FieldProvider[] fldMessage = null;
677
678     try{
679       if (log4j.isDebugEnabled()) log4j.debug("Utility.messageBD - Message Code: " + strCode);
680       fldMessage = MessageBDData.messageInfo(conn, strLanguage, strCode);
681     } catch(Exception JavaDoc ignore){}
682     if (fldMessage!=null && fldMessage.length>0) return fldMessage[0];
683     else return null;
684   }
685
686   public String JavaDoc getServletInfo() {
687     return "This servlet add some functions";
688   }
689 }
690
Popular Tags