1 package org.columba.mail.parser; 19 20 import java.util.Iterator ; 21 import java.util.List ; 22 import java.util.Vector ; 23 24 30 public class ListParser { 31 32 public final static char SEPARATOR_CHAR = ','; 33 34 public final static String SEPARATOR_STRING = ","; 35 36 public ListParser() { 37 } 38 39 47 public static List <String > createListFromString(String str) { 48 if (str == null) 49 throw new IllegalArgumentException ("str == null"); 50 51 List <String > result = new Vector <String >(); 52 if (str.length() == 0) 53 return result; 54 55 int pos = 0; 56 boolean bracket = false; 57 58 str = str.trim(); 60 if (str.endsWith(SEPARATOR_STRING)) 61 str = str.substring(0, str.length()-1); 62 63 StringBuffer buf = new StringBuffer (); 64 while (pos < str.length()) { 65 char ch = str.charAt(pos); 66 67 if ((ch == SEPARATOR_CHAR) && (bracket == false)) { 68 String address = buf.toString().trim(); 70 result.add(address); 71 72 buf = new StringBuffer (); 73 } else if (ch == '"') { 74 bracket = !bracket; 76 } else { 77 buf.append(ch); 78 } 79 pos++; 80 } 81 82 String address = buf.toString().trim(); 83 address = address.trim(); 85 result.add(address); 86 87 return result; 88 } 89 90 141 142 149 public static String createStringFromList(List <String > list, 150 String separator) { 151 if (list == null) 152 throw new IllegalArgumentException ("list == null"); 153 if (separator == null) 154 throw new IllegalArgumentException ("separator == null"); 155 156 StringBuffer output = new StringBuffer (); 157 158 for (Iterator it = list.iterator(); it.hasNext();) { 159 String address = (String ) it.next(); 160 if (address == null) { 161 continue; 162 } 163 164 StringBuffer addrSB = new StringBuffer (address); 166 while (true) { 167 int doubleQuote = addrSB.indexOf("\""); 168 if (doubleQuote >= 0) 169 addrSB.deleteCharAt(doubleQuote); 170 else 171 break; 172 } 173 174 int comma = addrSB.indexOf(","); 176 int endDoubleQuote = addrSB.length(); 177 if (comma >= 0) { 178 int addrStart = addrSB.indexOf(" <"); 179 if (addrStart >= 0) 180 endDoubleQuote = addrStart; 181 addrSB.insert(endDoubleQuote, '"'); 182 addrSB.insert(0, '"'); 183 } 184 185 address = addrSB.toString(); 186 187 output.append(address); 188 output.append(separator); 189 output.append(" "); 190 } 191 192 197 198 return output.toString(); 199 } 200 } | Popular Tags |