KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > mail > spam > rules > MixedCharactersAddressRule


1 // The contents of this file are subject to the Mozilla Public License Version
2
// 1.1
3
//(the "License"); you may not use this file except in compliance with the
4
//License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
5
//
6
//Software distributed under the License is distributed on an "AS IS" basis,
7
//WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
8
//for the specific language governing rights and
9
//limitations under the License.
10
//
11
//The Original Code is "The Columba Project"
12
//
13
//The Initial Developers of the Original Code are Frederik Dietz and Timo
14
// Stich.
15
//Portions created by Frederik Dietz and Timo Stich are Copyright (C) 2003.
16
//
17
//All Rights Reserved.
18
package org.columba.mail.spam.rules;
19
20 import org.columba.mail.folder.IMailbox;
21 import org.columba.ristretto.message.Header;
22
23 /**
24  * Check if From: header contains many digits.
25  *
26  * @author fdietz
27  *
28  */

29 public class MixedCharactersAddressRule extends AbstractRule {
30
31     public MixedCharactersAddressRule() {
32         super("MixedCharactersAddressRule");
33
34     }
35
36     /**
37      * @see org.columba.mail.spam.rules.Rule#score(IMailbox,
38      * java.lang.Object)
39      */

40     public float score(IMailbox folder, Object JavaDoc uid) throws Exception JavaDoc {
41         Header header = folder.getHeaderFields(uid, new String JavaDoc[] { "From"});
42         String JavaDoc from = header.get("From");
43         if (from == null) return NEARLY_ZERO;
44         if (from.length() == 0) return NEARLY_ZERO;
45
46         int count = 0;
47         for (int i = 0; i < from.length(); i++) {
48             if (Character.isDigit(from.charAt(i))) count++;
49         }
50
51         // if 1/3 of all characters are digits
52
if ( count > from.length()/3) return MAX_PROBABILITY;
53             
54         return NEARLY_ZERO;
55     }
56
57 }
Popular Tags