KickJava   Java API By Example, From Geeks To Geeks.

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


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 /**
25  * Search for multiple whitespaces in Subject.
26  * <p>
27  * Example: "Buy this sdf675sv758"
28  * <p>
29  * See the random characters add the end.
30  *
31  * @author fdietz
32  *
33  */

34 public class SubjectWhitespaceRule extends AbstractRule{
35     
36     public SubjectWhitespaceRule() {
37         super("SubjectWhitespaceRule");
38     }
39     /**
40      * @see org.columba.mail.spam.rules.Rule#score(IMailbox, java.lang.Object)
41      */

42     public float score(IMailbox folder, Object JavaDoc uid) throws Exception JavaDoc {
43         Header header = folder.getHeaderFields(uid, new String JavaDoc[]{"Subject"});
44         String JavaDoc subject = header.get("Subject");
45         if ( subject == null ) return NEARLY_ZERO;
46         if ( subject.length() == 0 ) return NEARLY_ZERO;
47         
48         int count=0;
49         boolean whitespace = false;
50         for ( int i=0; i<subject.length(); i++) {
51             char ch = subject.charAt(i);
52             
53             if ( ch == ' ') {
54                 // whitespace detected
55

56                 // if already detected before
57
if ( whitespace ) count++;
58                 
59                 whitespace = true;
60             } else {
61                 whitespace = false;
62             }
63         }
64         
65         // check for at least 10 whitespaces
66
if ( count > 10 ) return MAX_PROBABILITY;
67         
68         return NEARLY_ZERO;
69     }
70 }
71
Popular Tags