1 package org.columba.core.filter; 17 18 import org.columba.core.config.DefaultItem; 19 import org.columba.core.xml.XmlElement; 20 21 25 public class FilterList extends DefaultItem implements IFilterList { 26 32 public FilterList(XmlElement root) { 33 super(root); 34 } 35 36 39 public FilterList() { 40 super(new XmlElement(FilterList.XML_NAME)); 41 } 42 43 49 public static IFilter createDefaultFilter() { 50 XmlElement filter = new XmlElement("filter"); 51 filter.addAttribute("description", "new filter"); 52 filter.addAttribute("enabled", "true"); 53 54 XmlElement rules = new XmlElement("rules"); 55 rules.addAttribute("condition", "matchall"); 56 57 XmlElement criteria = new XmlElement("criteria"); 58 criteria.addAttribute("type", "Subject"); 59 criteria.addAttribute("headerfield", "Subject"); 60 criteria.addAttribute("criteria", "contains"); 61 criteria.addAttribute("pattern", "pattern"); 62 rules.addElement(criteria); 63 filter.addElement(rules); 64 65 XmlElement actionList = new XmlElement("actionlist"); 66 XmlElement action = new XmlElement("action"); 67 68 72 action.addAttribute("type", "Mark Message"); 73 action.addAttribute("markvariant", "read"); 74 75 actionList.addElement(action); 76 filter.addElement(actionList); 77 78 return new Filter(filter); 80 81 92 } 93 94 97 public void add(IFilter f) { 98 if (f != null) { 99 getRoot().addElement(f.getRoot()); 100 } 101 102 } 104 105 108 public void addAll(IFilterList list) { 109 int size = list.count(); 110 111 for (int i = 0; i < size; i++) { 112 IFilter newFilter = list.get(i); 113 add(newFilter); 114 } 115 } 116 117 120 public void remove(IFilter f) { 121 if (f != null) { 122 getRoot().getElements().remove(f.getRoot()); 123 } 124 } 125 126 129 public void insert(IFilter filter, int index) { 130 if (filter != null) { 131 getRoot().insertElement(filter.getRoot(), index); 132 } 133 } 134 135 138 public void moveUp(IFilter filter) { 139 move(indexOf(filter), -1); 140 } 141 142 145 public void moveDown(IFilter filter) { 146 move(indexOf(filter), 1); 147 } 148 149 152 public void move(IFilter filter, int nrOfPositions) { 153 move(indexOf(filter), nrOfPositions); 154 } 155 156 159 public void move(int filterIndex, int nrOfPositions) { 160 if ((filterIndex >= 0) && (filterIndex < count())) { 161 XmlElement filterXML = getRoot().getElement(filterIndex); 162 int newFilterIndex = filterIndex + nrOfPositions; 163 164 if (newFilterIndex < 0) { 165 newFilterIndex = 0; 166 } 167 168 getRoot().removeElement(filterIndex); 169 170 if (newFilterIndex > count()) { 171 getRoot().addElement(filterXML); 172 } else { 173 getRoot().insertElement(filterXML, newFilterIndex); 174 } 175 } 176 } 177 178 181 public int indexOf(IFilter filter) { 182 int index = -1; 183 184 if (filter != null) { 185 int childCount = getChildCount(); 186 187 for (int i = 0; (index == -1) && (i < childCount); i++) { 188 if (getRoot().getElement(i).equals(filter.getRoot())) { 189 index = i; 190 } 191 } 192 } 193 194 return index; 195 } 196 197 200 public int count() { 201 return getChildCount(); 202 } 203 204 207 public IFilter get(int index) { 208 Filter filter = new Filter(getRoot().getElement(index)); 209 210 return filter; 211 } 212 213 216 public void remove(int index) { 217 getRoot().removeElement(index); 218 } 219 } 220 | Popular Tags |