List of usage examples for org.apache.ibatis.executor.result DefaultResultContext DefaultResultContext
public DefaultResultContext()
From source file:org.alfresco.ibatis.RollupResultHandler.java
License:Open Source License
public void handleResult(ResultContext context) { // Shortcut if we have processed enough results if (maxResults > 0 && resultCount >= maxResults) { return;/* w w w .j a va 2s .com*/ } Object valueObject = context.getResultObject(); MetaObject probe = configuration.newMetaObject(valueObject); // Check if the key has changed if (lastKeyValues == null) { lastKeyValues = getKeyValues(probe); resultCount = 0; } // Check if it has changed Object[] currentKeyValues = getKeyValues(probe); if (!Arrays.deepEquals(lastKeyValues, currentKeyValues)) { // Key has changed, so handle the results Object resultObject = coalesceResults(configuration, rawResults, collectionProperty); if (resultObject != null) { DefaultResultContext resultContext = new DefaultResultContext(); resultContext.nextResultObject(resultObject); resultHandler.handleResult(resultContext); resultCount++; } rawResults.clear(); lastKeyValues = currentKeyValues; } // Add the new value to the results for next time rawResults.add(valueObject); // Done }
From source file:org.alfresco.ibatis.RollupResultHandler.java
License:Open Source License
/** * Client code <b>must</b> call this method once the query returns so that the final results * can be passed to the inner RowHandler. If a query is limited by size, then it is * possible that the unprocessed results represent an incomplete final object; in this case * it would be best to ignore the last results. If the query is complete (i.e. all results * are returned) then this method should be called. * <p>/*from w w w.ja v a2 s. c om*/ * If you want X results and each result is made up of N rows (on average), then set the query * limit to: <br/> * L = X * (N+1)<br/> * and don't call this method. */ public void processLastResults() { // Shortcut if we have processed enough results if (maxResults > 0 && resultCount >= maxResults) { return; } // Handle any outstanding results Object resultObject = coalesceResults(configuration, rawResults, collectionProperty); if (resultObject != null) { DefaultResultContext resultContext = new DefaultResultContext(); resultContext.nextResultObject(resultObject); resultHandler.handleResult(resultContext); resultCount++; rawResults.clear(); // Stop it from being used again } }
From source file:org.alfresco.repo.domain.node.ibatis.NodeDAOImpl.java
License:Open Source License
@Override public void selectChildAssocs(Long parentNodeId, QName assocTypeQName, QName assocQName, final int maxResults, ChildAssocRefQueryCallback resultsCallback) { ChildAssocEntity assoc = new ChildAssocEntity(); // Parent/* w w w . ja va 2 s .c o m*/ NodeEntity parentNode = new NodeEntity(); parentNode.setId(parentNodeId); assoc.setParentNode(parentNode); // Type QName if (assocTypeQName != null) { if (!assoc.setTypeQNameAll(qnameDAO, assocTypeQName, false)) { resultsCallback.done(); return; // Shortcut } } // QName if (assocQName != null) { if (!assoc.setQNameAll(qnameDAO, assocQName, false)) { resultsCallback.done(); return; // Shortcut } } // Order assoc.setOrdered(resultsCallback.orderResults()); ChildAssocResultHandler resultHandler = new ChildAssocResultHandler(resultsCallback); RowBounds rowBounds = new RowBounds(0, maxResults); List<?> entities = template.selectList(SELECT_CHILD_ASSOCS_OF_PARENT_LIMITED, assoc, rowBounds); final DefaultResultContext resultContext = new DefaultResultContext(); for (Object entity : entities) { resultContext.nextResultObject(entity); resultHandler.handleResult(resultContext); } resultsCallback.done(); }