1 20 package org.enhydra.barracuda.contrib.dbroggisch.display.filters; 21 22 import java.util.*; 23 import java.io.*; 24 import org.enhydra.barracuda.contrib.dbroggisch.display.filters.dtd.Lookup; 25 import org.enhydra.barracuda.contrib.dbroggisch.display.filters.dtd.Entry; 26 import org.apache.log4j.Logger; 27 28 34 public class LookupFilter implements Filter { 35 protected static final Logger logger = Logger.getLogger(LookupFilter.class.getName()); 36 37 private Map lookupMap; 38 39 public LookupFilter() { 40 this(null); 41 } 42 43 public LookupFilter(Map lookupMap) { 44 this.lookupMap = lookupMap; 45 } 46 47 53 public Object filter(Object key, FilterContext context) 54 throws FilterException 55 { 56 if(key != null && lookupMap != null) { 57 return lookupMap.get(key); 58 } 59 return key; 60 } 61 62 public Filter configure(Object obj) 63 throws FilterException 64 { 65 lookupMap = new HashMap(); 66 try { 67 Lookup xmlObj = (Lookup)obj; 68 List entries = xmlObj.getEntryList(); 69 for(Iterator it = entries.iterator(); it.hasNext();) { 70 Entry entry = (Entry)it.next(); 71 Object key; 72 if(entry.getType().equals("Integer")) { 73 key = new Integer (Integer.parseInt(entry.getKey())); 74 } else if(entry.getType().equals("Boolean")) { 75 key = Boolean.valueOf(entry.getKey()); 76 } else if(entry.getType().equals("Class")) { 77 try { 78 key = Class.forName(entry.getKey()); 79 } catch(ClassNotFoundException ex) { 80 StringWriter sw = new StringWriter(); 81 ex.printStackTrace(new PrintWriter(sw)); 82 logger.error(sw.toString()); 83 throw new FilterException(ex.getMessage()); 84 } 85 } else { 86 key = entry.getKey(); 87 } 88 lookupMap.put(key, entry.getValue()); 89 } 90 } catch(ClassCastException ex) { 91 ex.printStackTrace(); 92 } 93 return this; 94 } 95 } 96 | Popular Tags |