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.command;
17:
18: import org.columba.api.command.ICommandReference;
19: import org.columba.api.command.IWorkerStatusController;
20: import org.columba.core.command.Command;
21: import org.columba.core.command.StatusObservableImpl;
22: import org.columba.mail.command.IMailFolderCommandReference;
23: import org.columba.mail.folder.AbstractMessageFolder;
24: import org.columba.mail.folder.IMailFolder;
25:
26: /**
27: * Save folder configuration including MessageFolderInfo and headercache to
28: * disk.
29: *
30: * @author fdietz
31: */
32: public class SaveFolderConfigurationCommand extends Command {
33: /**
34: * @param references
35: */
36: public SaveFolderConfigurationCommand(ICommandReference reference) {
37: super (reference);
38: }
39:
40: /*
41: * (non-Javadoc)
42: *
43: * @see org.columba.api.command.Command#execute(org.columba.api.command.Worker)
44: */
45: public void execute(IWorkerStatusController worker)
46: throws Exception {
47: // skip if no reference available
48: if ((getReference() != null) || (getReference() == null)) {
49: return;
50: }
51:
52: IMailFolder folderTreeNode = (IMailFolder) ((IMailFolderCommandReference) getReference())
53: .getSourceFolder();
54:
55: // if folder is message folder
56: // ->TODO (@author fdietz): there should be an interface, instead of the AbstractMessageFolder
57: // class
58: if (folderTreeNode instanceof AbstractMessageFolder) {
59: AbstractMessageFolder folder = (AbstractMessageFolder) folderTreeNode;
60:
61: // register for status events
62: ((StatusObservableImpl) folder.getObservable())
63: .setWorker(worker);
64:
65: // save headercache
66: folder.save();
67: }
68: }
69: }
|