1 5 package com.opensymphony.webwork.util; 6 7 import com.opensymphony.xwork.Action; 8 import org.apache.commons.logging.LogFactory; 9 10 import java.util.*; 11 12 13 20 public class SortIteratorFilter extends IteratorFilterSupport implements Iterator, Action { 21 23 Comparator comparator; 24 Iterator iterator; 25 List list; 26 27 Object source; 29 30 32 public void setComparator(Comparator aComparator) { 33 this.comparator = aComparator; 34 } 35 36 public List getList() { 37 return list; 38 } 39 40 public void setSource(Object anIterator) { 42 source = anIterator; 43 } 44 45 public String execute() { 47 if (source == null) { 48 return ERROR; 49 } else { 50 try { 51 if (!MakeIterator.isIterable(source)) { 52 LogFactory.getLog(SortIteratorFilter.class.getName()).warn("Cannot create SortIterator for source " + source); 53 54 return ERROR; 55 } 56 57 list = new ArrayList(); 58 59 Iterator i = MakeIterator.convert(source); 60 61 while (i.hasNext()) { 62 list.add(i.next()); 63 } 64 65 Collections.sort(list, comparator); 67 iterator = list.iterator(); 68 69 return SUCCESS; 70 } catch (Exception e) { 71 LogFactory.getLog(SortIteratorFilter.class.getName()).warn("Error creating sort iterator.", e); 72 73 return ERROR; 74 } 75 } 76 } 77 78 public boolean hasNext() { 80 return (source == null) ? false : iterator.hasNext(); 81 } 82 83 public Object next() { 84 return iterator.next(); 85 } 86 87 public void remove() { 88 throw new UnsupportedOperationException ("Remove is not supported in SortIteratorFilter."); 89 } 90 } 91 | Popular Tags |