1 package org.columba.mail.search; 2 3 import java.util.Enumeration ; 4 import java.util.List ; 5 import java.util.Vector ; 6 7 import org.columba.core.filter.FilterCriteria; 8 import org.columba.core.filter.FilterRule; 9 import org.columba.mail.folder.IMailFolder; 10 import org.columba.mail.folder.IMailbox; 11 import org.columba.mail.folder.virtual.VirtualFolder; 12 import org.columba.mail.gui.tree.FolderTreeModel; 13 14 public class SearchFolderFactory { 15 16 19 public static VirtualFolder createSearchFolder(FilterCriteria c, 20 IMailFolder folder) throws Exception { 21 22 VirtualFolder searchFolder = createVirtualFolder(folder); 24 25 searchFolder.getFilter().getFilterRule().add(c); 27 28 return searchFolder; 29 } 30 31 35 public static VirtualFolder prepareSearchFolder(FilterCriteria c, 36 IMailFolder folder) throws Exception { 37 38 VirtualFolder searchFolder = createVirtualFolder(folder); 40 41 searchFolder.getFilter().getFilterRule().add(c); 43 44 return searchFolder; 45 } 46 47 50 public static VirtualFolder createSearchFolder(FilterRule rule, 51 IMailFolder folder) throws Exception { 52 VirtualFolder searchFolder = createVirtualFolder(folder); 54 55 searchFolder.getFilter().getFilterRule().setCondition( 56 rule.getConditionInt()); 57 58 for (int i = 0; i < rule.getChildCount(); i++) { 59 searchFolder.getFilter().getFilterRule().add(rule.get(i)); 61 } 62 63 return searchFolder; 64 } 65 66 70 public static VirtualFolder prepareSearchFolder(FilterRule rule, 71 IMailFolder folder) throws Exception { 72 73 VirtualFolder searchFolder = createVirtualFolder(folder); 75 76 searchFolder.getFilter().getFilterRule().setCondition( 77 rule.getConditionInt()); 78 79 for (int i = 0; i < rule.getChildCount(); i++) { 80 searchFolder.getFilter().getFilterRule().add(rule.get(i)); 82 } 83 84 return searchFolder; 85 } 86 87 93 private static VirtualFolder createVirtualFolder(IMailFolder folder) { 94 95 VirtualFolder searchFolder = new VirtualFolder("Search Result", folder); 96 97 searchFolder.getFilter().getFilterRule().removeAll(); 99 100 searchFolder.getConfiguration().setString("property", 102 "include_subfolders", "true"); 103 104 String uid = folder.getId(); 105 106 searchFolder.getConfiguration() 108 .setString("property", "source_uid", uid); 109 110 return searchFolder; 111 } 112 113 118 public static List <IMailbox> getAllSourceFolders() { 119 IMailFolder rootFolder = (IMailFolder) FolderTreeModel.getInstance() 120 .getRoot(); 121 122 List <IMailbox> v = new Vector <IMailbox>(); 123 getChildren(rootFolder, v); 124 125 return v; 126 } 127 128 private static void getChildren(IMailFolder parentFolder, 129 List <IMailbox> list) { 130 IMailFolder child; 131 132 for (Enumeration e = parentFolder.children(); e.hasMoreElements();) { 133 child = (IMailFolder) e.nextElement(); 134 135 if (child instanceof IMailbox) { 136 if (child.getName().equalsIgnoreCase("Inbox")) { 137 list.add((IMailbox) child); 138 } 139 } 140 141 getChildren(child, list); 142 } 143 } 144 } 145 | Popular Tags |