1 15 package org.josql.filters; 16 17 import java.io.FileFilter ; 18 import java.io.File ; 19 20 import com.gentlyweb.utils.StringUtils; 21 22 import org.josql.Query; 23 import org.josql.QueryParseException; 24 25 35 public class DefaultObjectFilter extends AbstractJoSQLFilter 36 { 37 38 private static String qWrapper = "SELECT * FROM [[CLASS]] WHERE [[WHERE]]"; 39 private static String CLASS_TAG = "[[CLASS]]"; 40 private static String WHERE_TAG = "[[WHERE]]"; 41 42 private Class c = null; 43 44 52 public DefaultObjectFilter (String w, 53 Class c) 54 throws QueryParseException 55 { 56 57 if (c == null) 58 { 59 60 throw new QueryParseException ("Class must be specified"); 61 62 } 63 64 this.c = c; 65 66 String q = StringUtils.replaceString (qWrapper, 67 DefaultObjectFilter.CLASS_TAG, 68 c.getName ()); 69 70 w = w.trim (); 71 72 if (w.toLowerCase ().startsWith ("where")) 73 { 74 75 w = w.substring (5); 76 77 } 78 79 q = StringUtils.replaceString (q, 80 DefaultObjectFilter.WHERE_TAG, 81 w); 82 83 this.setQuery (q); 84 85 } 86 87 94 public DefaultObjectFilter (Query q) 95 throws IllegalStateException , 96 QueryParseException 97 { 98 99 this.c = q.getFromObjectClass (); 100 101 this.setQuery (q); 102 103 } 104 105 115 public boolean accept (Object o) 116 { 117 118 if (this.badQuery) 119 { 120 121 return false; 122 123 } 124 125 try 126 { 127 128 return this.q.getWhereClause ().isTrue (o, 129 this.q); 130 131 } catch (Exception e) { 132 133 this.badQuery = true; 134 135 this.exp = e; 136 137 } 138 139 return false; 140 141 } 142 143 148 public Class getExpectedClass () 149 { 150 151 return this.c; 152 153 } 154 155 } 156 | Popular Tags |