1 14 package org.compiere.www; 15 16 import javax.servlet.*; 17 import javax.servlet.http.*; 18 import java.util.*; 19 import java.sql.*; 20 import java.io.*; 21 import javax.mail.internet.*; 22 23 import org.apache.ecs.*; 24 import org.apache.ecs.xhtml.*; 25 import org.apache.log4j.Logger; 26 27 import org.compiere.wstore.*; 28 import org.compiere.util.*; 29 import org.compiere.model.*; 30 31 37 public final class WUtil 38 { 39 40 private static Logger s_log = Logger.getLogger("org.compiere.www.WUtil"); 41 42 53 public static void createTimeoutPage (HttpServletRequest request, HttpServletResponse response, 54 HttpServlet servlet, Properties ctx, String message) throws ServletException, IOException 55 { 56 s_log.info("createTimeoutPage - " + message); 57 String windowTitle = "Timeout"; 58 if (ctx != null) 59 windowTitle = Msg.getMsg(ctx, "Timeout"); 60 61 WDoc doc = WDoc.create (windowTitle); 62 63 body body = doc.getBody(); 65 if (message != null && message.length() > 0) 67 body.addElement(new p(message)); 68 69 body.addElement(getLoginButton(ctx)); 71 72 body.addElement(new hr()); 74 body.addElement(new small(servlet.getClass().getName())); 75 createResponse (request, response, servlet, null, doc, false); 77 } 79 90 public static void createErrorPage (HttpServletRequest request, HttpServletResponse response, 91 HttpServlet servlet, Properties ctx, String message) throws ServletException, IOException 92 { 93 s_log.info("createErrorPage - " + message); 94 String windowTitle = "Error"; 95 if (ctx != null) 96 windowTitle = Msg.getMsg(ctx, "Error"); if (message != null) 98 windowTitle += ": " + message; 99 100 WDoc doc = WDoc.create (windowTitle); 101 102 body b = doc.getBody(); 104 105 b.addElement(new p(servlet.getServletName(), AlignType.center)); 106 b.addElement(new br()); 107 108 createResponse (request, response, servlet, null, doc, true); 110 } 112 126 public static void createLoginPage (HttpServletRequest request, HttpServletResponse response, 127 HttpServlet servlet, Properties ctx, String AD_Message) throws ServletException, IOException 128 { 129 request.getSession().invalidate(); 130 String url = WEnv.getBaseDirectory("index.html"); 131 WDoc doc = null; 133 if (ctx != null && AD_Message != null && !AD_Message.equals("")) 134 doc = WDoc.create (Msg.getMsg(ctx, AD_Message)); 135 else if (AD_Message != null) 136 doc = WDoc.create (AD_Message); 137 else 138 doc = WDoc.create (false); 139 script script = new script("window.top.location.replace('" + url + "');"); 140 doc.getBody().addElement(script); 141 createResponse (request, response, servlet, null, doc, false); 143 } 145 151 public static button getLoginButton(Properties ctx) 152 { 153 String text = Msg.getMsg(ctx, "Login"); 154 button button = new button(); 155 button.setType("button").setName("Login").addElement(text); 156 StringBuffer cmd = new StringBuffer ("window.top.location.replace('"); 157 cmd.append(WEnv.getBaseDirectory("index.html")); 158 cmd.append("');"); 159 button.setOnClick(cmd.toString()); 160 return button; 161 } 163 164 165 171 public static Properties getCookieProprties(HttpServletRequest request) 172 { 173 Cookie[] cookies = request.getCookies(); 175 if (cookies != null) 176 { 177 for (int i = 0; i < cookies.length; i++) 178 { 179 if (cookies[i].getName().equals(WEnv.COOKIE_INFO)) 180 return propertiesDecode(cookies[i].getValue()); 181 } 182 } 183 return new Properties(); 184 } 186 193 public static int getParameterAsInt(HttpServletRequest request, String parameter) 194 { 195 if (request == null || parameter == null) 196 return 0; 197 String data = request.getParameter(parameter); 198 if (data == null || data.length() == 0) 199 return 0; 200 try 201 { 202 return Integer.parseInt(data); 203 } 204 catch (Exception e) 205 { 206 s_log.debug("getParameterAsInt - " + parameter + "=" + data, e); 207 } 208 return 0; 209 } 211 212 213 225 public static void createResponse (HttpServletRequest request, HttpServletResponse response, 226 HttpServlet servlet, Properties cookieProperties, WDoc doc, boolean debug) throws IOException 227 { 228 response.setHeader("Cache-Control", "no-cache"); 229 response.setContentType("text/html; charset=UTF-8"); 231 232 if (cookieProperties != null) 235 { 236 Cookie cookie = new Cookie (WEnv.COOKIE_INFO, propertiesEncode(cookieProperties)); 237 cookie.setComment("(c) ComPiere, Inc - Jorg Janke"); 238 cookie.setSecure(false); 239 cookie.setPath("/"); 240 if (cookieProperties.size() == 0) 241 cookie.setMaxAge(0); else 243 cookie.setMaxAge(2592000); response.addCookie(cookie); 245 } 246 if (debug && WEnv.DEBUG) 248 { 249 WEnv.addFooter(request, response, servlet, doc.getBody()); 251 } 253 256 PrintWriter out = response.getWriter(); doc.output(out); 259 out.flush(); 260 if (out.checkError()) 261 s_log.error("createResponse - error writing"); 262 out.close(); 269 } 271 272 273 279 public static script getClearFrame (String target) 280 { 281 StringBuffer cmd = new StringBuffer (); 282 cmd.append("var d = parent.").append(target).append(".document;\n"); 283 cmd.append("d.open();\n"); 284 cmd.append("d.write('<link HREF=\"").append(WEnv.getStylesheetURL()).append("\" rel=\"stylesheet\">');\n"); 285 cmd.append("d.close();"); 286 return new script(cmd.toString()); 288 } 290 291 297 public static HtmlCode getForward (String url) 298 { 299 HtmlCode retValue = new HtmlCode(); 300 a a = new a(url); 302 a.addElement(url); 303 retValue.addElement(a); 304 script script = new script("setTimeout(\"window.top.location.replace('" + url + "')\",2500);"); 306 retValue.addElement(script); 307 return retValue; 309 } 311 319 public static void createForwardPage (HttpServletResponse response, 320 String title, String forwardURL) throws ServletException, IOException 321 { 322 response.setContentType("text/html; charset=UTF-8"); 323 WDoc doc = WDoc.create(title); 324 body b = doc.getBody(); 325 b.addElement(getForward(forwardURL)); 326 PrintWriter out = response.getWriter(); 327 doc.output(out); 328 out.flush(); 329 if (out.checkError()) 330 s_log.error("createForwardPage - error writing"); 331 out.close(); 332 s_log.debug("createForwardPage - " + forwardURL + " - " + title); 333 } 335 336 341 public static boolean exists (String test) 342 { 343 if (test == null) 344 return false; 345 return test.length() > 0; 346 } 348 354 public static boolean exists (HttpServletRequest request, String parameter) 355 { 356 if (request == null || parameter == null) 357 return false; 358 return exists (request.getParameter(parameter)); 359 } 361 362 367 public static boolean isEmailValid (String email) 368 { 369 if (email == null || email.length () == 0) 370 return false; 371 try 372 { 373 InternetAddress ia = new InternetAddress (email, true); 374 return true; 375 } 376 catch (AddressException ex) 377 { 378 s_log.warn ("isEmailValid - " + email + " - " 379 + ex.getLocalizedMessage ()); 380 } 381 return false; 382 } 384 385 386 387 393 public static String propertiesEncode (Properties pp) 394 { 395 ByteArrayOutputStream bos = new ByteArrayOutputStream(); 396 try 397 { 398 pp.store(bos, "Compiere"); } 400 catch (IOException e) 401 { 402 s_log.error("propertiesEncode-store", e); 403 } 404 String result = new String (bos.toByteArray()); 405 String enc = "UTF-8"; 407 try 408 { 409 result = java.net.URLEncoder.encode(result, enc); 410 } 411 catch (UnsupportedEncodingException e) 412 { 413 s_log.error("propertiesEncode-encode-" + enc, e); 414 enc = System.getProperty("file.encoding"); try 416 { 417 result = java.net.URLEncoder.encode(result, enc); 418 } 419 catch (Exception ex) 420 { 421 s_log.error("propertiesEncode-encode", ex); 422 } 423 } 424 return result; 426 } 428 434 public static Properties propertiesDecode (String data) 435 { 436 String result = null; 437 String enc = "UTF-8"; 439 try 440 { 441 result = java.net.URLDecoder.decode(data, enc); 442 } 443 catch (UnsupportedEncodingException e) 444 { 445 s_log.error("propertiesDecode-decode-" + enc, e); 446 enc = System.getProperty("file.encoding"); try 448 { 449 result = java.net.URLEncoder.encode(data, enc); 450 } 451 catch (Exception ex) 452 { 453 s_log.error("propertiesDecode-decode", ex); 454 } 455 } 456 458 ByteArrayInputStream bis = new ByteArrayInputStream(result.getBytes()); 459 Properties pp = new Properties(); 460 try 461 { 462 pp.load(bis); 463 } 464 catch (IOException e) 465 { 466 s_log.error("propertiesDecode-load", e); 467 } 468 return pp; 469 } 471 472 473 483 public static option[] convertToOption (NamePair[] list, String default_ID) 484 { 485 int size = list.length; 486 option[] retValue = new option[size]; 487 for (int i = 0; i < size; i++) 488 { 489 boolean selected = false; 490 if (i == 0 && (default_ID == null || default_ID.length() == 0)) 492 selected = true; 493 494 retValue[i] = new option(list[i].getID()).addElement(list[i].getName()); 496 497 if (default_ID != null && default_ID.equals(list[i].getID())) 499 selected = true; 500 retValue[i].setSelected(selected); 501 } 502 return retValue; 503 } 505 522 static public tr createField (tr line, String FORMNAME, String PARAMETER, 523 String labelText, String inputType, Object value, 524 int sizeDisplay, int size, boolean longField, boolean mandatory, String onChange, StringBuffer script) 525 { 526 if (line == null) 527 line = new tr(); 528 String labelInfo = labelText; 529 if (mandatory) 530 { 531 labelInfo += " <font color=\"red\">*</font>"; 532 String fName = "document." + FORMNAME + "." + PARAMETER; 533 script.append(fName).append(".required=true; "); 534 } 535 536 label llabel = new label().setFor(PARAMETER).addElement(labelInfo); 537 llabel.setID("ID_" + PARAMETER + "_Label"); 538 line.addElement(new td().addElement(llabel).setAlign(AlignType.right)); 540 input iinput = new input(inputType, PARAMETER, value == null ? "" : value.toString()); 541 iinput.setSize(sizeDisplay).setMaxlength(size); 542 iinput.setID("ID_" + PARAMETER); 543 if (onChange != null && onChange.length() > 0) 544 iinput.setOnChange(onChange); 545 iinput.setTitle(labelText); 546 td field = new td().addElement(iinput).setAlign(AlignType.LEFT); 547 if (longField) 548 field.setColSpan(3); 549 line.addElement(field); 550 return line; 551 } 553 } | Popular Tags |