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.shutdown;
17:
18: import java.util.Enumeration;
19: import java.util.logging.Logger;
20:
21: import org.columba.core.command.CommandProcessor;
22: import org.columba.mail.command.MailFolderCommandReference;
23: import org.columba.mail.folder.IMailFolder;
24: import org.columba.mail.folder.command.SaveFolderConfigurationCommand;
25: import org.columba.mail.gui.tree.FolderTreeModel;
26:
27: /**
28: * Launches a new SaveFolderConfigurationCommand for each folder in the
29: * hierarchy.
30: *
31: * @author freddy
32: */
33: public class SaveAllFoldersPlugin implements Runnable {
34:
35: /** JDK 1.4+ logging framework logger, used for logging. */
36: private static final Logger LOG = Logger
37: .getLogger("org.columba.mail.shutdown");
38:
39: public void run() {
40: IMailFolder rootFolder = (IMailFolder) FolderTreeModel
41: .getInstance().getRoot();
42: saveFolder(rootFolder);
43: }
44:
45: protected void saveFolder(IMailFolder parentFolder) {
46: IMailFolder child;
47:
48: for (Enumeration e = parentFolder.children(); e
49: .hasMoreElements();) {
50: child = (IMailFolder) e.nextElement();
51:
52: MailFolderCommandReference r = new MailFolderCommandReference(
53: child);
54:
55: LOG.info("Saving folder " + child.getName());
56:
57: CommandProcessor.getInstance().addOp(
58: new SaveFolderConfigurationCommand(r));
59:
60: saveFolder(child);
61: }
62: }
63: }
|