1 21 22 package org.armedbear.j.mail; 23 24 import java.net.MalformedURLException ; 25 import org.armedbear.j.Log; 26 27 public abstract class MailboxURL 28 { 29 private String baseName; 30 private String limitPattern; 31 32 protected String user; 33 protected String host; 34 protected int port; 35 36 public final String getBaseName() 37 { 38 return baseName; 39 } 40 41 public final void setBaseName(String baseName) 42 { 43 this.baseName = baseName; 44 } 45 46 public final String getLimitPattern() 47 { 48 return limitPattern; 49 } 50 51 public final void setLimitPattern(String limitPattern) 52 { 53 this.limitPattern = limitPattern; 54 } 55 56 public final String getUser() 57 { 58 return user; 59 } 60 61 public final void setUser(String user) 62 { 63 this.user = user; 64 } 65 66 public final String getHost() 67 { 68 return host; 69 } 70 71 public final int getPort() 72 { 73 return port; 74 } 75 76 public static MailboxURL parse(String input) 77 { 78 if (input == null) 79 return null; 80 input = input.trim(); 81 if (input.length() == 0) 82 return null; 83 String baseName; 84 String limitPattern = null; 85 if (input.charAt(0) == '"') { 86 int index = input.indexOf('"', 1); 87 if (index < 0) 88 return null; 89 baseName = input.substring(1, index); 90 if (index < input.length()-1) 91 limitPattern = input.substring(index+1).trim(); 92 } else { 93 int index = input.indexOf(' '); 94 if (index >= 0) { 95 baseName = input.substring(0, index); 96 limitPattern = input.substring(index).trim(); 97 } else 98 baseName = input; 99 } 100 if (baseName.length() == 0) 101 return null; 102 MailboxURL url = null; 103 try { 104 if (baseName.charAt(0) == '{') { 105 url = new ImapURL(baseName); 107 } else if (baseName.startsWith("pop://")) { 108 url = new PopURL(baseName); 110 } else { 111 url = new LocalMailboxURL(baseName); 113 } 114 } 115 catch (MalformedURLException e) { 116 Log.error(e); 117 } 118 if (url != null) { 119 url.setBaseName(baseName); 120 url.setLimitPattern(limitPattern); 121 } 122 return url; 123 } 124 125 public abstract String getCanonicalName(); 126 } 127 | Popular Tags |