Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Improved: OrderReadHelper.getOrderItemAttributes as non static function
(OFBIZ-11208) Currenlty if we use the java helper class OrderReadHelper to resolve the orderItemAttributes, it didn't use the a local cache and call each time the delegator throw a static function. I added a non static function to optimise database calling when you have multiple get to do. public String getOrderItemAttribute(String orderItemSeqId, String attributeName) { GenericValue orderItemAttribute = null; if (orderHeader != null) { if (orderItemAttributes == null) { try{ orderItemAttributes = EntityQuery.use(orderHeader.getDelegator()) .from("OrderItemAttribute") .where("orderId", getOrderId()) .queryList(); } catch (GenericEntityException e) { Debug.logError(e, module); } } orderItemAttribute = EntityUtil.getFirst( EntityUtil.filterByAnd(orderItemAttributes, UtilMisc.toMap("orderItemSeqId", orderItemSeqId, "attrName", attributeName))); } return orderItemAttribute != null ? orderItemAttribute.getString("attrValue"): null; } At the first call, we populate the OrderReadHelper with all orderItemAttributes liked to an order, and after just filter with the orderItemSeqId and the attribute name wanted Example: OrderReadHelper orh = new OrderReadHelper(orderHeader) ... for (GenericValue orderItem : orh.getOrderItems()) { listAttr << [startValue : orh.getOrderItemAttribute(orderItem.orderItemSeqId, "MyStartValue"), endValue : orh.getOrderItemAttribute(orderItem.orderItemSeqId, "MyEndValue")] } We request only for the first passage, after for all other line we use the local OrderReadHelper cache. Added also the same logical for OrderReadHelper.getOrderAttributes git-svn-id: https://svn.apache.org/repos/asf/ofbiz/ofbiz-framework/trunk@1867590 13f79535-47bb-0310-9956-ffa450edef68
- Loading branch information