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.