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
Free Books   Free Magazines  
Popular Tags