[ 
https://issues.apache.org/jira/browse/JDO-652?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16612876#comment-16612876
 ] 

Craig L Russell commented on JDO-652:
-------------------------------------

{quote}Why would the builder method take 3 arguments? An "If-Else" can have 
multiple "if"s and one "else". Specifying the "if-then" clauses individually 
makes it more fluent IMHO.
{quote}
We can have builder methods for different use-cases. The most common is 
probably one condition, with two alternative results. The builder method is on 
the query object.

IfElseExpression<Number> expr = 
q.ifThenElse(cand.department.name.eq("Development"), 15000.0, 25000.0)

Another example would be multiple conditions. The builder method is on the 
query object, but the subsequent ifThen and ifElse methods are on the 
IfElseExpression.

IfElseExpression<Number> expr = 
q.ifThen(cand.department.name.eq("Development"), 15000.0)

.ifThen(cand.department.name.eq("Sales"), 65000.0)

.ifThen(cand.department.name.eq("Support"), 3000.0)

.ifElse(10000.0);

Looking at the QueryDSL in DataNucleus, I'd be open to other names than 
ifThenElse, ifThen and ifElse. Maybe "when" instead of ifThen, and "otherwise" 
instead of ifElse. 
{quote}As for naming, the reason it is called "IfElseExpression" (as opposed to 
"IfThenElse") is that all expressions in that package are using the same naming 
scheme ... XXXExpression. I've no problem with it being "IfThenElseExpression", 
but maybe that is what Craig meant (and not calling it "IfThenElse" without the 
Expression)?
{quote}
I was [confusingly] mixing the builder method with the type, which should match 
the style of the other expressions, e.g. I'm fine with  IfThenElseExpression or 
IfElseExpression as the type. [IfThenElseExpression is probably more expressive 
considering the tri-part nature of the functionality.] But imho the builder 
method(s) would be more fluent if they omit the "Expression" part of the name.

> Provision of a typesafe refactor-friendly query capability for JDOQL
> --------------------------------------------------------------------
>
>                 Key: JDO-652
>                 URL: https://issues.apache.org/jira/browse/JDO-652
>             Project: JDO
>          Issue Type: New Feature
>          Components: api, specification, tck
>            Reporter: Andy Jefferson
>            Assignee: Michael Bouschen
>            Priority: Major
>             Fix For: JDO 3.2
>
>         Attachments: JDO-652-api-patch-Andy.txt, JDO-652-patch3.txt, 
> typesafe.patch, typesafe_manifest.patch
>
>
> There are various querying capabilities of this type around. JPA2 has its 
> Criteria query API. Third party solutions like QueryDSL also exist, in its 
> case providing a JDOQL implementation (as well as JPQL, and HQL). We should 
> seriously consider introducing something along these lines in the JDO2.4 
> timeframe. 
> There is a comparison of JPA Criteria with QueryDSL over at 
> http://source.mysema.com/forum/mvnforum/viewthread_thread,49



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to