KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > mail > filter > plugins > FlagsFilter


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.filter.plugins;
19
20 import org.columba.core.filter.AbstractFilter;
21 import org.columba.core.filter.FilterCriteria;
22 import org.columba.core.filter.IFilterCriteria;
23 import org.columba.core.folder.api.IFolder;
24 import org.columba.mail.folder.IMailbox;
25 import org.columba.ristretto.message.Flags;
26
27 /**
28  * Search for a certain flag state.
29  * <p>
30  * Example: Message is read/unread, Marked as Spam/Not Spam
31  *
32  * @author fdietz
33  */

34 public class FlagsFilter extends AbstractFilter {
35     
36     private String JavaDoc pattern;
37
38     private int condition;
39
40     /**
41      * Constructor for FlagsFilter.
42      */

43     public FlagsFilter() {
44         super();
45     }
46
47     /**
48      * @see org.columba.core.filter.AbstractFilter#process(java.lang.Object,
49      * org.columba.mail.folder.Folder, java.lang.Object,
50      * org.columba.api.command.IWorkerStatusController)
51      */

52     public boolean process(IFolder folder, Object JavaDoc uid)
53             throws Exception JavaDoc {
54         boolean result = false;
55
56         String JavaDoc headerField = pattern;
57
58         Flags flags = ((IMailbox)folder).getFlags(uid);
59
60         if (headerField.equalsIgnoreCase("Answered")) {
61             result = flags.get(Flags.ANSWERED);
62         } else if (headerField.equalsIgnoreCase("Deleted")) {
63             result = flags.get(Flags.DELETED);
64         } else if (headerField.equalsIgnoreCase("Flagged")) {
65             result = flags.get(Flags.FLAGGED);
66         } else if (headerField.equalsIgnoreCase("Recent")) {
67             result = flags.get(Flags.RECENT);
68         } else if (headerField.equalsIgnoreCase("Draft")) {
69             result = flags.get(Flags.DRAFT);
70         } else if (headerField.equalsIgnoreCase("Seen")) {
71             result = flags.get(Flags.SEEN);
72         } else if (headerField.equalsIgnoreCase("Spam")) {
73             result = ((Boolean JavaDoc) ((IMailbox)folder).getAttribute(uid, "columba.spam"))
74                     .booleanValue();
75         }
76
77         if (condition == FilterCriteria.IS) {
78             return result;
79         } else {
80             return !result;
81         }
82     }
83
84     /**
85      * @see org.columba.core.filter.AbstractFilter#setUp(org.columba.mail.filter.FilterCriteria)
86      */

87     public void setUp(IFilterCriteria f) {
88         
89         // string to search
90
pattern = f.getPatternString();
91
92         condition = f.getCriteria();
93     }
94 }
Popular Tags