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: package org.columba.mail.folder;
17:
18: import java.io.InputStream;
19:
20: import org.columba.ristretto.io.Source;
21:
22: /**
23: * Interface for local folders. This is a complete separation from the
24: * headercache and the datastorage method.
25: * <p>
26: * This makes it very easy to add new mailbox formats.
27: * <p>
28: * {@link AbstractLocalFolder} uses this interface and the singleton pattern
29: * to make this work in a plug'n'play manner.
30: * <p>
31: * If you want to add another custom local mailbox format, like mbox,
32: * or maildir, etc. this is the interface you have to implement.
33: * <p>
34: * @see org.columba.mail.folder.AbstractLocalFolder
35: *
36: * @author fdietz
37: */
38: public interface IDataStorage {
39: /**
40: * Remove message from datastorage
41: *
42: * @param uid UID of message
43: * @throws Exception
44: */
45: public void removeMessage(Object uid) throws Exception;
46:
47: /**
48: * Get message source from data storage
49: *
50: * @param uid UID of message
51: * @return source of message
52: * @throws Exception
53: */
54: public Source getMessageSource(Object uid) throws Exception;
55:
56: /**
57: * Get the InputStream of the message source.
58: *
59: * @param uid UID of the message
60: * @return the message stream
61: * @throws Exception
62: */
63: public InputStream getMessageStream(Object uid) throws Exception;
64:
65: /**
66: * Save message in data storage.
67: *
68: * @param uid UID of message
69: * @param source message source as stream
70: * @throws Exception
71: */
72: public void saveMessage(Object uid, InputStream source)
73: throws Exception;
74:
75: /**
76: * Gets the total message count.
77: *
78: * @return return message count
79: */
80: public int getMessageCount();
81:
82: /**
83: * Check if message with UID exists in data storage
84: *
85: * @param uid UID of message
86: * @return true, if message exists. false, otherwise
87: * @throws Exception
88: */
89: public boolean exists(Object uid) throws Exception;
90:
91: /**
92: * Get list of message UIDs managed by this data storage
93: *
94: * @return array containing message UIDs
95: */
96: public Object[] getMessageUids();
97: }
|