Hi Mrs,
GenericDelegator.findCountByAnd is high cost.
One example:
// do the lookup
if (mainCond != null || "Y".equals(showAll)) {
try {
// set distinct on so we only get one row per order
EntityFindOptions findOpts = new EntityFindOptions(true,
EntityFindOptions.TYPE_SCROLL_INSENSITIVE,
EntityFindOptions.CONCUR_READ_ONLY, true);
// using list iterator
EntityListIterator pli =
delegator.findListIteratorByCondition(dynamicView, mainCond, null,
fieldsToSelect, orderBy, findOpts);
// get the indexes for the partial list
lowIndex = (((viewIndex - 1) * viewSize) + 1);
highIndex = viewIndex * viewSize;
// get the partial list for this page
partyList = pli.getPartialList(lowIndex, viewSize);
**********************************************************
*
* /**/ attempt to get the full size
FROM pli.last();
partyListSize = pli.currentIndex();
if (highIndex > partyListSize) {
highIndex = partyListSize;
}*
* **********************************************************
*
* // attempt to get the full size
TO
partyListSize = pli.getSize();*
*
if (highIndex > partyListSize) {
highIndex = partyListSize;
}*
// close the list iterator
pli.close();
} catch (GenericEntityException e) {
String errMsg = "Failure in party find operation,
rolling back transaction: " + e.toString();
Debug.logError(e, errMsg, module);
return ServiceUtil.returnError(errMsg);
}
} else {
partyListSize = 0;
}
2007/6/26, David E Jones <[EMAIL PROTECTED]>:
I'm not sure where this fits into a larger process or what intention is,
but there is a more efficient way that involves minimal data coming back
from the database when you only need a count and don't need and of the data.
For that see the GenericDelegator.findCountByAnd or findCountByCondition
methods.
-David
Rodrigo Souza wrote:
> Hi community!
>
> This is a my implementation to best performance in pagination using
> org.ofbiz.entity.util.EntityListIterator class.
>
> Add this method to get size of resultset without create GenericValue.
>
> * public int getSize()throws GenericEntityException {*
> * int result = 0;*
> * try{*
> * if( resultSet.last() )*
> * result = resultSet.getRow();*
>
> * } catch (SQLException e) {*
> * Debug.logWarning("Warning: No calculate
EntityListIterator
> size because of exception: " + e.toString(), module);*
> * }*
>
> * return result;*
> * }*
>