public class JoSQLFileFilter extends AbstractJoSQLFilter implements FileFilter
FileFilter
that uses a JoSQL statement to provide the filtering.
The value returned by the accept(File)
method is determined by executing the
WHERE clause of a JoSQL statement on each File passed in.
Since this uses a sub-set of the JoSQL functionality certain restrictions apply:
SELECT * FROMjava.io.File
WHERE name $LIKE '%.html' AND lastModified >toDateMillis
('12-04-2004') AND file
badQuery, exp, q
Constructor and Description |
---|
JoSQLFileFilter(Query q)
Init this file filter with the query already built and parsed.
|
JoSQLFileFilter(String q)
Init this file filter with the query.
|
Modifier and Type | Method and Description |
---|---|
boolean |
accept(File f)
Apply the WHERE clause of the statement to the
File passed in. |
boolean |
accept(Object o) |
Class |
getExpectedClass()
Always returns
File . |
clearException, getException, getQuery, setQuery, setQuery
public JoSQLFileFilter(String q) throws QueryParseException
q
- The query.QueryParseException
- If there is an issue with the parsing of the query,
or if the FROM class is not File
.public JoSQLFileFilter(Query q) throws IllegalStateException, QueryParseException
q
- The query.IllegalStateException
- If the Query object has not been parsed.QueryParseException
- If the FROM class is not File
.public boolean accept(Object o)
accept
in class AbstractJoSQLFilter
public boolean accept(File f)
File
passed in.
If an exception is thrown by the execution of the WHERE clause the Query
is marked as "dirty" and the where clause is no longer executed on the passed in
files (since it is likely that the WHERE clause will fail for all File objects).
You can get access to exception by using: AbstractJoSQLFilter.getException()
.accept
in interface FileFilter
f
- The file to evaluate the WHERE on.true
if the WHERE clause evaluates to true
.public Class getExpectedClass()
File
.getExpectedClass
in class AbstractJoSQLFilter