1 20 package org.enhydra.barracuda.contrib.dbroggisch.display.filters; 21 22 import java.util.*; 23 import org.apache.log4j.Logger; 24 import org.enhydra.barracuda.contrib.dbroggisch.display.filters.dtd.*; 25 26 27 35 public class SwitchFilter implements Filter { 36 static Logger logger = Logger.getLogger(SwitchFilter.class.getName()); 37 Filter [] filters; 38 39 40 public SwitchFilter() { 41 } 42 43 public SwitchFilter(Filter [] fs) { 44 filters = fs; 45 } 46 47 public SwitchFilter(List fs) { 48 this((Filter[])fs.toArray(new Filter[1])); 49 } 50 51 52 53 61 public Object filter(Object value, FilterContext context) 62 throws FilterException 63 { 64 Object res = null; 65 for(int i = 0; i < filters.length; i++) { 66 try { 67 res = filters[i].filter(value, context); 68 if(logger.isDebugEnabled()) { 69 logger.debug("Switch result: " + res); 70 } 71 } catch(FilterException ex) { 72 } 73 if(res != null) { 74 break; 75 } 76 } 77 return res; 78 } 79 80 public Filter configure(Object obj) 81 throws FilterException { 82 Switch fw = (Switch)obj; 83 List childs = FilterFactory.accumulateChilds(fw); 84 filters = new Filter[childs.size()]; 85 int i = 0; 86 for(Iterator it = childs.iterator(); it.hasNext();) { 87 Object decl = it.next(); 88 filters[i] = FilterFactory.createFilter(decl.getClass()); 89 filters[i++].configure(decl); 90 } 91 return this; 92 } 93 94 95 } 96 | Popular Tags |