1 21 22 package org.armedbear.j.mail; 23 24 import java.util.ArrayList ; 25 import java.util.List ; 26 import org.armedbear.j.Log; 27 28 public final class IncomingFilter 29 { 30 public static final int NOTHING = 0; 31 public static final int MOVE = 1; 32 public static final int BOUNCE = 2; 33 public static final int BOUNCE_AND_DELETE = 3; 34 35 private static ArrayList filterList; 36 37 private final String mailbox; 38 private final String pattern; 39 private final MailboxFilter filter; 40 private final int action; 41 private final String parameter; 42 43 private IncomingFilter(String mailbox, String pattern, MailboxFilter filter, 44 int action, String parameter) 45 { 46 this.mailbox = mailbox; 47 this.pattern = pattern; 48 this.filter = filter; 49 this.action = action; 50 this.parameter = parameter; 51 } 52 53 public final String getPattern() 54 { 55 return pattern; 56 } 57 58 public final MailboxFilter getFilter() 59 { 60 return filter; 61 } 62 63 public final int getAction() 64 { 65 return action; 66 } 67 68 public final String getParameter() 69 { 70 return parameter; 71 } 72 73 public static synchronized void addIncomingFilter( 74 String mailbox, 75 String pattern, 76 String actionName, 77 String parameter) 78 { 79 if (mailbox == null) return; 80 if (pattern == null) return; 81 if (actionName == null) return; 82 if (parameter == null) return; 83 if (!mailbox.equals("inbox")) { 84 Log.error("addIncomingFilter - only \"inbox\" is supported"); 85 return; 86 } 87 MailboxFilter filter = MailboxFilter.getMailboxFilter(pattern); 88 if (filter == null) { 89 Log.error("addIncomingFilter - bad pattern |" + pattern + "|"); 90 return; 91 } 92 int action = NOTHING; 93 if (actionName.equalsIgnoreCase("move")) 94 action = MOVE; 95 else if (actionName.equalsIgnoreCase("bounce")) 96 action = BOUNCE; 97 else if (actionName.equalsIgnoreCase("bounce_and_delete")) 98 action = BOUNCE_AND_DELETE; 99 else { 100 Log.error("addIncomingFilter - action \"" + actionName + 101 "\" is not supported"); 102 return; 103 } 104 if (filterList == null) 105 filterList = new ArrayList (); 106 filterList.add(new IncomingFilter(mailbox, pattern, filter, action, 107 parameter)); 108 } 109 110 public static synchronized final void resetIncomingFilters() 111 { 112 filterList = null; 113 } 114 115 public static synchronized final List getFilterList() 116 { 117 return filterList == null ? null : new ArrayList (filterList); 118 } 119 } | Popular Tags |