JDOQL will be supported in the near future. There are a lot of things which already work.
It is currently under heavy developement. JDOQL makes it possible to query for objects.
Following Table shows what already works:
|
Function
|
Status
|
Notes
|
|
Comparison (==, != ...)
|
Working
|
Mapped to SODA
|
|
Connection (&&, ||)
|
Working
|
Mapped to SODA
|
|
setOrdering()
|
Working
|
Mapped to SODA
|
|
declarePrameters
|
Working
|
-
|
|
setResult()
|
Working
|
Solved witd Reflection
|
|
setResultClass()
|
Working
|
Solved witd Reflection
|
|
startsWitd(), endsWitd()
|
Working
|
Mapped to SODA
|
|
toUpperCase(), toLowerCase()
|
Partial Working
|
Solved with SODA-Evaluation
|
|
charAt()
|
Partial Working
|
Solved with SODA-Evaluation
|
|
indexOf()
|
Partial Working
|
Solved wiht SODA-Evaluation
|
|
substring()
|
Partial Working
|
Solved with SODA-Evaluation
|
|
length()
|
Partial Working
|
Solved with SODA-Evaulation
|
|
equals()
|
Partial Working
|
Solved with SODA-Evaluation
|
|
declareVariables()
|
Not Working
|
-
|
|
Support for Collections
|
Not Working
|
-
|
|
Support for Maps
|
Not Working
|
-
|
There are different Classes to take care of the JDOQL-Specifications. Here are the
Classes and their responsibilities. You can find all the Classes in the org.jpox.store.db4o.query
package.
JDOQLQuery
This class extends AbstractJDOQLQuery. It implements Methods as performExecute(),
deletePersistentAll() or shouldReturnSingleRow().
JDOQLFilterParser
Parses the String specified by setFilter. The Parser is implemented as a
Recursive Descent
Parser
. The Parsers uses the JDOQLParser as Tokenizer. The found tokens are saved in
ArrayLists (operations and arguments). If the String is not valid a Exception is thrown else a
JDOQLFilterMapper
is created.
JDOQLFilterMapper
Maps the Filter-Specifications with help of the ArrayLists of the
JDOQLFilterParser
.
The setOrdering()-String is mapped here too. Also the Methods are Mapped here with the
Evaluation-Mechanisme of SODA.
JDOQLResultMapper
Maps the specification of the setResult String.It also takes care of the setRange and setGrouping
specifications.