1 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.CompoundCommand; 22 import org.columba.core.command.StatusObservableImpl; 23 import org.columba.core.command.Worker; 24 import org.columba.core.filter.Filter; 25 import org.columba.core.filter.FilterList; 26 import org.columba.core.filter.IFilter; 27 import org.columba.core.filter.IFilterList; 28 import org.columba.mail.command.IMailFolderCommandReference; 29 import org.columba.mail.filter.FilterCompoundCommand; 30 import org.columba.mail.folder.IMailbox; 31 32 39 public class ApplyFilterCommand extends Command { 40 46 public ApplyFilterCommand(ICommandReference reference) { 47 super(reference); 48 } 49 50 53 public void execute(IWorkerStatusController worker) throws Exception { 54 IMailFolderCommandReference r = (IMailFolderCommandReference) getReference(); 56 57 IMailbox srcFolder = (IMailbox) r.getSourceFolder(); 59 60 ((StatusObservableImpl) srcFolder.getObservable()).setWorker(worker); 62 63 worker.setDisplayText("Applying filter to " + srcFolder.getName() 65 + "..."); 66 67 IFilterList list = srcFolder.getFilterList(); 69 70 if (list == null) { 71 return; 72 } 73 74 worker.setProgressBarMaximum(list.count()); 76 77 for (int i = 0; i < list.count(); i++) { 79 worker.setProgressBarValue(i); 81 82 IFilter filter = list.get(i); 84 85 if ( filter.getEnabled() == false) continue; 87 88 Object [] result = srcFolder.searchMessages(filter); 90 91 if (result == null) { 92 continue; 93 } 94 95 if (result.length != 0) { 97 CompoundCommand command = new FilterCompoundCommand(filter, srcFolder, result); 100 101 104 command.execute(worker); 105 } 106 } 107 } 108 } | Popular Tags |