From: <ms...@us...> - 2010-08-16 18:34:55
|
Revision: 11127 http://wonder.svn.sourceforge.net/wonder/?rev=11127&view=rev Author: mschrag Date: 2010-08-16 18:34:49 +0000 (Mon, 16 Aug 2010) Log Message: ----------- Add an option to batching display group to fetch without raw rows when a custom query is provided Modified Paths: -------------- branches/Wonder_2_0_0_Branch/Wonder/Common/Frameworks/ERExtensions/Sources/er/extensions/batching/ERXBatchingDisplayGroup.java Modified: branches/Wonder_2_0_0_Branch/Wonder/Common/Frameworks/ERExtensions/Sources/er/extensions/batching/ERXBatchingDisplayGroup.java =================================================================== --- branches/Wonder_2_0_0_Branch/Wonder/Common/Frameworks/ERExtensions/Sources/er/extensions/batching/ERXBatchingDisplayGroup.java 2010-08-16 18:33:19 UTC (rev 11126) +++ branches/Wonder_2_0_0_Branch/Wonder/Common/Frameworks/ERExtensions/Sources/er/extensions/batching/ERXBatchingDisplayGroup.java 2010-08-16 18:34:49 UTC (rev 11127) @@ -63,6 +63,8 @@ protected int _rowCount = -1; + private boolean _rawRowsForCustomQueries = true; + /** * Creates a new ERXBatchingDisplayGroup. */ @@ -70,6 +72,24 @@ } /** + * Sets whether or not fetch specification with custom queries should use raw rows. Defaults to true for backwards compatibility. + * + * @param rawRowsForCustomQueries whether or not fetch specification with custom queries should use raw rows + */ + public void setRawRowsForCustomQueries(boolean rawRowsForCustomQueries) { + _rawRowsForCustomQueries = rawRowsForCustomQueries; + } + + /** + * Returns whether or not fetch specification with custom queries should use raw rows. + * + * @return whether or not fetch specification with custom queries should use raw rows + */ + public boolean isRawRowsForCustomQueries() { + return _rawRowsForCustomQueries; + } + + /** * Decodes an ERXBatchingDisplayGroup from the given unarchiver. * * @param unarchiver the unarchiver to construct this display group with @@ -284,7 +304,7 @@ /** * Utility to get at the number of rows when batching. */ - protected int rowCount() { + public int rowCount() { EOEditingContext ec = dataSource().editingContext(); EOFetchSpecification spec = fetchSpecification(); @@ -341,7 +361,15 @@ Object hint = spec.hints().valueForKey(EODatabaseContext.CustomQueryExpressionHintKey); String sql = sqlHelper.customQueryExpressionHintAsString(hint); sql = sqlHelper.limitExpressionForSQL(null, spec, sql, start, end); - result = EOUtilities.rawRowsForSQL(ec, model.name(), sql, null); + + if (_rawRowsForCustomQueries) { + result = EOUtilities.rawRowsForSQL(ec, model.name(), sql, null); + } + else { + EOFetchSpecification fs = new EOFetchSpecification(spec.entityName(), null, null); + fs.setHints(new NSDictionary(sql, EODatabaseContext.CustomQueryExpressionHintKey)); + result = ec.objectsWithFetchSpecification(fs); + } } // fetch the primary keys, turn them into faults, then batch-fetch all // the non-resident objects This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |