1 104 package com.ivata.groupware.web.format; 105 106 107 import java.util.Arrays ; 108 import java.util.HashMap ; 109 import java.util.List ; 110 import java.util.ListIterator ; 111 import java.util.Vector ; 112 113 import javax.mail.Address ; 114 import javax.mail.internet.InternetAddress ; 115 import javax.servlet.jsp.PageContext ; 116 117 import com.ivata.mask.web.format.HTMLFormatter; 118 import com.ivata.mask.web.format.URLFormat; 119 import com.ivata.mask.web.javascript.JavaScriptWindow; 120 121 122 134 public class EmailAddressFormatter extends HTMLFormatter { 135 136 143 private String separator = ";"; 144 145 150 private boolean showAddress = false; 151 152 156 private PageContext pageContext; 157 158 168 public String format(final String addressString) { 169 if (addressString == null) { 171 return null; 172 } 173 int startPosition, endPosition; 174 InternetAddress address; 175 176 try { 179 if (((startPosition = addressString.indexOf('<')) != -1) && 180 ((endPosition = addressString.indexOf('>')) != -1)) { 181 address = new InternetAddress (addressString.substring(startPosition + 1, endPosition), addressString.substring(0, startPosition)); 182 } else { 183 address = new InternetAddress (addressString); 184 } 185 return format(address); 186 } catch (java.io.UnsupportedEncodingException e) { 187 throw new RuntimeException (e); 188 } catch (javax.mail.internet.AddressException e) { 189 throw new RuntimeException (e); 190 } 191 } 192 193 204 public String format(final Address [] addresses) { 205 if (addresses == null) { 207 return null; 208 } 209 return format(Arrays.asList(addresses)); 210 } 211 212 223 public String format(final List addresses) { 224 if (addresses == null) { 226 return null; 227 } 228 ListIterator addressesIterator = addresses.listIterator(); 229 String returnString = ""; 230 URLFormat URLFormat = new URLFormat(); 231 232 while (addressesIterator.hasNext()) { 234 Object address = addressesIterator.next(); 235 String addressString; 236 237 if ((address instanceof InternetAddress ) || (address instanceof String )) { 238 if (address instanceof InternetAddress ) { 239 InternetAddress addressInternet = (InternetAddress ) address; 240 String personalString; 241 242 addressString = addressInternet.getAddress(); 243 if ((addressInternet.getPersonal() != null) && 244 !addressInternet.getPersonal().equals("")) { 245 246 260 personalString = addressInternet.getPersonal(); 261 } else { 262 personalString = addressInternet.getAddress(); 264 } 265 if (pageContext == null) { 268 if (personalString.equals(addressString)) { 269 addressString = personalString + " <" + addressString + ">"; 270 } 271 } else { 272 JavaScriptWindow popUp = new JavaScriptWindow(); 275 HashMap composeParams = new HashMap (); 276 277 if (personalString.equals(addressString)) { 278 composeParams.put("to", addressString); 279 } else { 280 StringBuffer to = new StringBuffer (); 282 283 291 to.append(" <"); 292 to.append(addressString); 293 to.append(">"); 294 composeParams.put("to", to.toString()); 295 } 296 popUp.setParams(composeParams); 297 popUp.setWindowName("composeWindow"); 298 popUp.setFrameName("ivataCompose"); 299 popUp.setPage("/mail/compose.jsp"); 300 popUp.setHeight(540); 301 popUp.setWidth(550); 302 popUp.setHasScrollBars(false); 303 popUp.setPageContext(pageContext); 304 String tagBody = showAddress ? addressString : personalString; 305 306 addressString = "<a HREF='' onclick='" 308 + popUp.toString() 309 + "return false'>" + super.format(tagBody) + "</a>"; 310 } 311 } else { 312 addressString = format((String ) address); 313 } 314 } else { 316 addressString = super.format(address.toString()); 317 } 318 returnString += addressString; 319 if (addressesIterator.hasNext()) { 321 returnString += separator + " "; 322 } 323 } 324 return returnString; 325 } 326 327 335 public String format(final Address address) { 336 if (address == null) { 338 return null; 339 } 340 Address [ ] addresses = { address }; 341 342 return format(Arrays.asList(addresses)); 343 } 344 345 354 public final String getSeperator() { 355 return separator; 356 } 357 358 367 public final void setSeperator(final String separator) { 368 this.separator = separator; 369 } 370 371 375 public EmailAddressFormatter() { 376 super(); 377 } 378 379 385 public EmailAddressFormatter(HTMLFormatter formatter) { 386 super(); 387 setFormats(new Vector (formatter.getFormats())); 389 } 390 391 398 public final boolean getShowAddress() { 399 return showAddress; 400 } 401 402 411 public final void setShowAddress(final boolean showAddress) { 412 this.showAddress = showAddress; 413 } 414 415 421 public final PageContext getPageContext() { 422 return pageContext; 423 } 424 425 431 public final void setPageContext(final PageContext pageContext) { 432 this.pageContext = pageContext; 433 } 434 } 435 | Popular Tags |