1 package org.columba.mail.spam.rules; 19 20 import java.util.ArrayList ; 21 import java.util.Iterator ; 22 import java.util.List ; 23 import java.util.logging.Logger ; 24 25 import org.columba.mail.folder.IMailbox; 26 import org.macchiato.maps.ProbabilityMap; 27 import org.macchiato.maps.ProbabilityMapImpl; 28 import org.macchiato.tokenizer.Token; 29 30 39 public class RuleList { 40 41 42 private static final Logger LOG = Logger 43 .getLogger("org.columba.mail.spam.rules"); 44 45 private List list; 46 47 private static RuleList instance; 48 49 public RuleList() { 50 list = new ArrayList (); 51 52 addRule(new SubjectWhitespaceRule()); 53 addRule(new OnlyHTMLMimepartRule()); 54 addRule(new SubjectIsAllCapitalsRule()); 55 addRule(new MixedCharactersAddressRule()); 56 addRule(new MissingToHeaderRule()); 57 addRule(new SubjectContainsSpamRule()); 58 } 59 60 public static RuleList getInstance() { 61 if (instance == null) 62 instance = new RuleList(); 63 64 return instance; 65 } 66 67 public ProbabilityMap getProbabilities(IMailbox folder, Object uid) 68 throws Exception { 69 70 ProbabilityMap map = new ProbabilityMapImpl(); 71 72 Iterator it = list.iterator(); 73 74 while (it.hasNext()) { 75 Rule rule = (Rule) it.next(); 76 LOG.info("rule " + rule.getName()); 77 78 float score = rule.score(folder, uid); 79 LOG.info("score=" + score); 80 81 map.addToken(new Token(rule.getName()), score); 82 } 83 84 return map; 85 } 86 87 public void addRule(Rule rule) { 88 list.add(rule); 89 } 90 } 91 | Popular Tags |