1 package org.columba.mail.filter.plugins; 19 20 import java.util.Date ; 21 import java.util.logging.Logger ; 22 23 import org.columba.core.filter.AbstractFilter; 24 import org.columba.core.filter.FilterCriteria; 25 import org.columba.core.filter.IFilterCriteria; 26 import org.columba.core.folder.api.IFolder; 27 import org.columba.mail.folder.IMailbox; 28 import org.columba.mail.gui.config.filter.plugins.DateCriteriaRow; 29 30 36 public class DateFilter extends AbstractFilter { 37 38 39 private static final Logger LOG = Logger 40 .getLogger("org.columba.mail.filter.plugins"); 41 42 private String pattern; 43 44 private int condition; 45 46 protected Date transformDate(String pattern) { 47 Date searchPattern = null; 48 49 try { 50 searchPattern = DateCriteriaRow.dateFormat.parse(pattern); 51 } catch (java.text.ParseException ex) { 52 LOG.severe("Date unparsable: "+pattern); 54 searchPattern = new Date (); 55 } 56 57 return searchPattern; 58 } 59 60 65 public boolean process(IFolder folder, Object uid) 66 throws Exception { 67 68 Date date = transformDate(pattern); 70 if (date == null) 71 return false; 72 73 boolean result = false; 74 75 Date d = (Date ) ((IMailbox)folder).getAttribute(uid, "columba.date"); 77 78 if (d == null) { 79 LOG.fine("field date not found"); 80 81 return false; 82 } 83 84 switch (condition) { 85 case FilterCriteria.DATE_BEFORE: 86 87 if (d.before(date)) { 88 result = true; 89 } 90 91 break; 92 93 case FilterCriteria.DATE_AFTER: 94 95 if (d.after(date)) { 96 result = true; 97 } 98 99 break; 100 } 101 102 return result; 103 } 104 105 108 public void setUp(IFilterCriteria f) { 109 110 pattern = f.getPatternString(); 112 113 condition = f.getCriteria(); 115 } 116 } | Popular Tags |