[
https://issues.apache.org/jira/browse/OFBIZ-4053?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14135334#comment-14135334
]
Adrian Crum commented on OFBIZ-4053:
------------------------------------
Scott,
Thank you for working on this! I look forward to using it. I may have spotted a
C&P error in your patch:
{code}
+ /** Specifies whether the query should return only values that are
currently active using from/thruDate fields.
+ *
+ * @return this EntityQuery object, to enable chaining
+ */
+ public EntityQuery filterByDate() {
+ this.filterByDate = true;
+ this.filterByDateMoment = null;
+ return this;
+ }
+
+ /** Specifies whether the query should return only values that are active
during the specified moment using from/thruDate fields.
+ *
+ * @param moment - Timestamp representing the moment in time that the
values should be active during
+ * @return this EntityQuery object, to enable chaining
+ */
+ public EntityQuery filterByDate(Timestamp moment) {
+ this.filterByDate = true;
+ this.filterByDateMoment = UtilDateTime.nowTimestamp();
+ return this;
+ }
{code}
> Implement an Entity Query Builder
> ---------------------------------
>
> Key: OFBIZ-4053
> URL: https://issues.apache.org/jira/browse/OFBIZ-4053
> Project: OFBiz
> Issue Type: New Feature
> Components: framework
> Affects Versions: Trunk
> Reporter: Scott Gray
> Assignee: Scott Gray
> Attachments: builder.patch, builder.patch
>
>
> As discussed on the dev list here:
> http://ofbiz.markmail.org/thread/l6kiywqzfj656dhc
> Attached is an initial implementation of builder classes (of sorts) that make
> use of method chaining in order to simplify use of the Delegator interface to
> query entities.
> Rather than taking all possible query parameters into a single method as the
> delegator does, this implementation instead builds a query through a
> succession of distinct method calls.
> A simple example:
> {code}
> // Using the Delegator interface directly
> eli = delegator.find("FinAccountTrans", condition, null, null,
> UtilMisc.toList("-transactionDate"), null);
> // Using the new implementation
> eli =
> EntityBuilderUtil.list(delegator).from("FinAccountTrans").where(condition).orderBy("-transactionDate").iterator();
> {code}
> A more complex example:
> {code}
> // Delegator
> EntityCondition queryConditionsList =
> EntityCondition.makeCondition(allConditions, EntityOperator.AND);
> EntityFindOptions options = new EntityFindOptions(true,
> EntityFindOptions.TYPE_SCROLL_INSENSITIVE,
> EntityFindOptions.CONCUR_READ_ONLY, true);
> options.setMaxRows(viewSize * (viewIndex + 1));
> EntityListIterator iterator = delegator.find("OrderHeader",
> queryConditionsList, null, null, UtilMisc.toList("orderDate DESC"), options);
> // becomes
> EntityListIterator iterator = EntityBuilderUtil.list(delegator).distinct()
>
> .from("OrderHeader")
>
> .where(allConditions)
>
> .orderBy("orderDate DESC")
>
> .maxRows(viewSize * (viewIndex + 1))
>
> .cursorScrollInsensitive()
> .iterator();
> {code}
> A couple of issues with the implementation so far that I'm not entirely happy
> with:
> - I'm not so sure that I like EntityBuilderUtil.list(delegator) in place of
> something like EntityList.use(delegator). The latter requires less typing
> and I think is more intuitive than typing EntityBuilderUtil because of its
> similarities to the corresponding minilang method calls, I actually kept
> having trouble remembering what it was called when converting some delegator
> calls over. It also requires a little more typing (16-17 characters vs.
> 12-13), not a big deal but every little bit helps with what would be a very
> commonly used class.
> - I'm struggling to see the point of having the GenericQueryBuilder
> interface, the two classes share very little in the way of API and its use
> seems a little superfluous to me.
> Opinions on the above points or anything else to do with the implementation
> are most welcome. I'd like to get the API locked down (and hopefully some
> javadocs in place) before committing.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)