1 //The contents of this file are subject to the Mozilla Public License Version 1.1 2 //(the "License"); you may not use this file except in compliance with the 3 //License. You may obtain a copy of the License at http://www.mozilla.org/MPL/ 4 // 5 //Software distributed under the License is distributed on an "AS IS" basis, 6 //WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 7 //for the specific language governing rights and 8 //limitations under the License. 9 // 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) throws Exception { 46 // skip if no reference available 47 if ((getReference() != null) || (getReference() == null)) { 48 return; 49 } 50 51 IMailFolder folderTreeNode = (IMailFolder) ((IMailFolderCommandReference) getReference()) 52 .getSourceFolder(); 53 54 // if folder is message folder 55 // ->TODO (@author fdietz): there should be an interface, instead of the AbstractMessageFolder 56 // class 57 if (folderTreeNode instanceof AbstractMessageFolder) { 58 AbstractMessageFolder folder = (AbstractMessageFolder) folderTreeNode; 59 60 // register for status events 61 ((StatusObservableImpl) folder.getObservable()).setWorker(worker); 62 63 // save headercache 64 folder.save(); 65 } 66 } 67 }