1 21 22 package org.armedbear.j.mail; 23 24 import org.armedbear.j.FastStringBuffer; 25 26 public final class AddressBookEntry 27 { 28 private String personal; 29 private String address; 30 31 public AddressBookEntry(String personal, String address) 32 { 33 this.personal = personal; 34 this.address = address; 35 } 36 37 public static AddressBookEntry parseAddressBookEntry(String s) 39 { 40 int index = s.lastIndexOf('<'); 41 if (index >= 0) { 42 String personal = s.substring(0, index).trim(); 43 if (personal.length() == 0) 44 personal = null; 45 String address = s.substring(index); 46 address = address.substring(1, address.length()-1); 48 return new AddressBookEntry(personal, address); 49 } else 50 return new AddressBookEntry(null, s); 51 } 52 53 public String getPersonal() 54 { 55 return personal; 56 } 57 58 public void setPersonal(String s) 59 { 60 personal = s; 61 } 62 63 public static String canonicalizePersonal(String s) 65 { 66 if (s == null) 67 return null; 68 if (s.indexOf('@') >= 0) 70 return null; 71 s = s.trim(); 72 if (s.length() >= 2 && s.charAt(0) == '\'' && s.charAt(s.length()-1) == '\'') 74 s = s.substring(1, s.length()-1); 75 if (s.length() == 0) 76 return null; 77 int index = s.indexOf('<'); 79 if (index >= 0) 80 s = s.substring(0, index).trim(); 81 if (s.length() == 0) 82 return null; 83 index = s.indexOf(','); 85 if (index >= 0) { 86 String lastName = s.substring(0, index); 88 String firstName = s.substring(index+1).trim(); 89 return firstName + ' ' + lastName; 90 } 91 return s; 92 } 93 94 public static String canonicalizeAddress(String s) 95 { 96 if (s == null) 97 return null; 98 if (s.length() == 0) 99 return null; 100 return s; 101 } 102 103 public String getAddress() 104 { 105 return address; 106 } 107 108 public void setAddress(String s) 109 { 110 address = s; 111 } 112 113 public boolean equals(Object object) 114 { 115 if (this == object) 116 return true; 117 if (object instanceof AddressBookEntry) { 118 AddressBookEntry entry = (AddressBookEntry) object; 119 if (personal != null) { 120 if (!personal.equals(entry.personal)) 121 return false; 122 } else if (entry.personal != null) 123 return false; 124 if (address != null) { 125 if (!address.equals(entry.address)) 126 return false; 127 } else if (entry.address != null) 128 return false; 129 return true; 130 } 131 return false; 132 } 133 134 public String toString() 135 { 136 FastStringBuffer sb = new FastStringBuffer(); 137 if (personal != null) { 138 sb.append(personal); 139 sb.append(' '); 140 } 141 if (address != null) { 142 if (sb.length() > 0) { 143 sb.append('<'); 144 sb.append(address); 145 sb.append('>'); 146 } else { 147 sb.append(address); 149 } 150 } 151 return sb.toString(); 152 } 153 } 154 | Popular Tags |