01: //The contents of this file are subject to the Mozilla Public License Version 1.1
02: //(the "License"); you may not use this file except in compliance with the
03: //License. You may obtain a copy of the License at http://www.mozilla.org/MPL/
04: //
05: //Software distributed under the License is distributed on an "AS IS" basis,
06: //WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
07: //for the specific language governing rights and
08: //limitations under the License.
09: //
10: //The Original Code is "The Columba Project"
11: //
12: //The Initial Developers of the Original Code are Frederik Dietz and Timo Stich.
13: //Portions created by Frederik Dietz and Timo Stich are Copyright (C) 2003.
14: //
15: //All Rights Reserved.
16:
17: package org.columba.mail.folder.search;
18:
19: import java.util.List;
20:
21: import org.columba.core.filter.FilterCriteria;
22: import org.columba.core.filter.IFilterRule;
23:
24: /**
25: * Custom implementation for performing optimized search requests.
26: *
27: * @author fdietz
28: */
29: public interface QueryEngine {
30: /**
31: * Get list of capabilities.
32: * <p>
33: * All supported search requests as for example:
34: * "Body", "Subject", etc.
35: *
36: * @return capability list
37: */
38: String[] getCaps();
39:
40: /**
41: * Sync engine with folder data.
42: * <p>
43: * This can become necessary if the folder data is
44: * inconsistent.
45: *
46: * @throws Exception
47: */
48: void sync() throws Exception;
49:
50: /**
51: * Execute a list of {@link FilterCriteria}.
52: *
53: * @param filter list of filter criteria
54: * @return list of matching message UIDs
55: * @throws Exception
56: */
57: List queryEngine(IFilterRule filter) throws Exception;
58:
59: /**
60: * Execute a list of {@link FilterCriteria}.
61: * <p>
62: * Perform search request on a subset of messages only.
63: *
64: * @param filter list of filter criteria
65: * @param uids list of UIDs to perform search request
66: * @return list of matching message UIDs
67: * @throws Exception
68: */
69: List queryEngine(IFilterRule filter, Object[] uids)
70: throws Exception;
71:
72: /**
73: * Notify search engine that a message was added.
74: *
75: * @param message message
76: * @throws Exception
77: */
78: void messageAdded(Object uid) throws Exception;
79:
80: /**
81: * Notify search engine that a message was removed
82: *
83: * @param uid message UID
84: * @throws Exception
85: */
86: void messageRemoved(Object uid) throws Exception;
87:
88: /**
89: * Reset search engine.
90: *
91: * @throws Exception
92: */
93: void reset() throws Exception;
94:
95: void save();
96: }
|