1 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 ; 29 import java.util.Hashtable ; 30 import java.util.Enumeration ; 31 import java.util.Vector ; 32 import javax.servlet.ServletException ; 33 import java.io.*; 34 import org.apache.log4j.Logger ; 35 36 public class Utility { 37 static Logger log4j = Logger.getLogger(Utility.class); 38 63 public static boolean isDecimalNumber (String 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 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 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 userClient, String userOrg, String tableId, String recordId) throws ServletException { 95 if (tableId.equals("") || recordId.equals("")) return false; 96 else return UtilityData.select(conn, userClient, userOrg, tableId, recordId); 97 } 98 99 public static String messageBD(ConnectionProvider conn, String strCode, String strLanguage) { 100 String 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 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 e) { 114 strMessage = strCode; 115 } 116 } 117 if (strMessage==null || strMessage.equals("")) strMessage = strCode; 118 return Replace.replace(Replace.replace(strMessage, "\n", "\\n"), "\"", """); 119 } 120 121 public static String getPreference(VariablesSecureApp vars, String context, String window) { 122 if (context==null || context.equals("")) throw new IllegalArgumentException ("getPreference - require context"); 123 String 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 getTransactionalDate(ConnectionProvider conn, VariablesSecureApp vars, String window) { 132 String retValue=""; 133 134 try { 135 retValue = getContext(conn, vars, "Transactional$Range", window); 136 } catch (IllegalArgumentException ignored) {} 137 138 if (retValue.equals("")) return "1"; 139 return retValue; 140 } 141 142 public static String getContext(ConnectionProvider conn, VariablesSecureApp vars, String context, String window) { 143 if (context==null || context.equals("")) throw new IllegalArgumentException ("getContext - require context"); 144 String 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 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 getDefault(ConnectionProvider conn, VariablesSecureApp vars, String columnname, String context, String window, String defaultValue) { 168 if (columnname == null || columnname.equals("")) return ""; 169 String defStr = getPreference(vars, columnname, window); 170 if (!defStr.equals("")) return defStr; 171 StringTokenizer st = new StringTokenizer (context, ",;", false); 172 173 while (st.hasMoreTokens()) { 174 String 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 parseContext(ConnectionProvider conn, VariablesSecureApp vars, String context, String window) { 187 if (context==null || context.equals("")) return ""; 188 StringBuffer strOut = new StringBuffer (); 189 String value = new String (context); 190 String 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 getDocumentNo (ConnectionProvider conn, VariablesSecureApp vars, String WindowNo, String TableName, String C_DocTypeTarget_ID, String C_DocType_ID, boolean onlyDocType, boolean updateNext) { 211 if (TableName == null || TableName.length() == 0) throw new IllegalArgumentException ("Utility.getDocumentNo - required parameter missing"); 212 String AD_Client_ID = getContext(conn, vars, "AD_Client_ID", WindowNo); 213 String AD_Org_ID = getContext(conn, vars, "AD_Org_ID", WindowNo); 214 215 String 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 ("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 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 getDocumentNo (ConnectionProvider conn, String AD_Client_ID, String TableName, boolean updateNext) { 232 if (TableName == null || TableName.length() == 0) throw new IllegalArgumentException ("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 e) {} 238 239 240 if (cs==null || cs.razon==null) return ""; 241 else return cs.razon; 242 } 243 244 public static String addSystem (String list) { 245 String retValue = ""; 246 247 Hashtable <String , String > ht = new Hashtable <String , String >(); 248 ht.put("0", "0"); 249 250 StringTokenizer st = new StringTokenizer (list, ",", false); 251 while (st.hasMoreTokens()) ht.put(st.nextToken(), "x"); 252 253 Enumeration e = ht.keys(); 254 while (e.hasMoreElements()) retValue += (String )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 process) { 261 return hasFormAccess (conn, vars, process, ""); 262 } 263 264 public static boolean hasFormAccess (ConnectionProvider conn, VariablesSecureApp vars, String process, String 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 e) { 273 return false; 274 } 275 return true; 276 } 277 278 public static boolean hasProcessAccess (ConnectionProvider conn, VariablesSecureApp vars, String process) { 279 return hasProcessAccess (conn, vars, process, ""); 280 } 281 282 public static boolean hasProcessAccess (ConnectionProvider conn, VariablesSecureApp vars, String process, String 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 e) { 291 return false; 292 } 293 return true; 294 } 295 296 public static boolean hasTaskAccess (ConnectionProvider conn, VariablesSecureApp vars, String task) { 297 return hasTaskAccess(conn, vars, task, ""); 298 } 299 300 public static boolean hasTaskAccess (ConnectionProvider conn, VariablesSecureApp vars, String task, String 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 e) { 307 return false; 308 } 309 return true; 310 } 311 312 public static boolean hasWorkflowAccess (ConnectionProvider conn, VariablesSecureApp vars, String 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 e) { 319 return false; 320 } 321 return true; 322 } 323 324 public static boolean hasAccess (ConnectionProvider conn, VariablesSecureApp vars, String TableLevel, String AD_Client_ID, String AD_Org_ID, String window, String tab) { 325 String 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 e) { 336 return false; 337 } 338 return true; 339 } 340 341 public static boolean canUpdate (ConnectionProvider conn, VariablesSecureApp vars, String AD_Client_ID, String AD_Org_ID, String window) throws ServletException { 342 String 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 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 TableLevel, String window) { 366 String 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 parseTranslation(ConnectionProvider conn, VariablesSecureApp vars, String language, String text) { 381 if (text == null || text.length() == 0) return text; 382 383 String inStr = text; 384 String token; 385 StringBuffer outStr = new StringBuffer (); 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 translate(ConnectionProvider conn, VariablesSecureApp vars, String token, String language) { 410 String 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 fieldName, String 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 f=""; 423 for (int i=0;i<data.length;i++) { 424 try { 425 f = data[i].getField(fieldName); 426 } catch (Exception 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 getOrderByFromSELECT(String [] SQL, Vector <String > fields) { 436 if (SQL==null || SQL.length==0) return ""; 437 else if (fields==null || fields.size()==0) return ""; 438 StringBuffer script = new StringBuffer (); 439 for (int i=0;i<fields.size();i++) { 440 String 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 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 getWindowID(ConnectionProvider conn, String strTabID) throws ServletException { 461 return UtilityData.getWindowID(conn, strTabID); 462 } 463 478 479 public static boolean generateFile(String strPath, String strFile, String 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 509 public static boolean isTreeTab(ConnectionProvider conn, String stradTabId) throws ServletException { 510 return UtilityData.isTreeTab(conn, stradTabId); 511 } 512 513 public static void fillSQLParameters(ConnectionProvider conn, VariablesSecureApp vars, FieldProvider data, ComboTableData cmb, String window, String actual_value) throws ServletException { 514 Vector <String > 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 strAux = vAux.elementAt(i); 519 try { 520 String 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 ex) { 524 throw new ServletException (ex); 525 } 526 } 527 } 528 } 529 530 public static void fillTableSQLParameters(ConnectionProvider conn, VariablesSecureApp vars, FieldProvider data, TableSQLData cmb, String window) throws ServletException { 531 Vector <String > 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 strAux = vAux.elementAt(i); 536 try { 537 String 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 ex) { 541 throw new ServletException (ex); 542 } 543 } 544 } 545 } 546 547 public static String parseParameterValue(ConnectionProvider conn, VariablesSecureApp vars, FieldProvider data, String name, String window, String actual_value) throws Exception { 548 String 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 { 560 OBError myMessage = new OBError(); 561 if (pinstanceData!=null && pinstanceData.length>0) { 562 String message = ""; 563 String title = "Error"; 564 String 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 strLanguage, String message) { 601 OBError myError = new OBError(); 602 myError.setType("Error"); 603 myError.setMessage(message); 604 if (message!=null && !message.equals("")) { 605 String 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 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 632 if (message!=null && !message.equals("")) { 634 String rdbms = conn.getRDBMS(); 635 ErrorTextParser myParser = null; 636 try { 637 Class c = Class.forName("org.openbravo.erpCommon.utility.ErrorTextParser" + rdbms.toUpperCase()); 638 myParser = (ErrorTextParser) c.newInstance(); 639 } catch (ClassNotFoundException ex) { 640 log4j.warn("Couldn´t find class: org.openbravo.erpCommon.utility.ErrorTextParser" + rdbms.toUpperCase()); 641 myParser = null; 642 } catch (Exception 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 ex) { 655 log4j.error("Error while parsing text: " + ex); 656 } 657 } 658 } else myError.setMessage(code); 659 661 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 } 672 return myError; 673 } 674 675 public static FieldProvider locateMessage(ConnectionProvider conn, String strCode, String 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 ignore){} 682 if (fldMessage!=null && fldMessage.length>0) return fldMessage[0]; 683 else return null; 684 } 685 686 public String getServletInfo() { 687 return "This servlet add some functions"; 688 } 689 } 690 | Popular Tags |