From: <qd...@us...> - 2009-06-19 05:59:41
|
Revision: 9498 http://wonder.svn.sourceforge.net/wonder/?rev=9498&view=rev Author: qdolan Date: 2009-06-19 05:59:39 +0000 (Fri, 19 Jun 2009) Log Message: ----------- Changed ERMemoryAdaptor.expressionFactory to return null instead of throwing. Changed ERXEOControlUtilities so the aggregate count methods fallback to full fetches for adaptors without expression support Modified Paths: -------------- trunk/Wonder/Frameworks/Core/ERExtensions/Sources/er/extensions/eof/ERXEOControlUtilities.java trunk/Wonder/Frameworks/EOAdaptors/JavaMemoryAdaptor/Sources/er/memoryadaptor/ERMemoryAdaptor.java Modified: trunk/Wonder/Frameworks/Core/ERExtensions/Sources/er/extensions/eof/ERXEOControlUtilities.java =================================================================== --- trunk/Wonder/Frameworks/Core/ERExtensions/Sources/er/extensions/eof/ERXEOControlUtilities.java 2009-06-18 23:24:35 UTC (rev 9497) +++ trunk/Wonder/Frameworks/Core/ERExtensions/Sources/er/extensions/eof/ERXEOControlUtilities.java 2009-06-19 05:59:39 UTC (rev 9498) @@ -664,6 +664,19 @@ EOFetchSpecification fetchSpec = new EOFetchSpecification(entity.name(), schemaBasedQualifier, null); fetchSpec.setFetchesRawRows(true); + if (sqlFactory == null) { + /* if there is no expression factory we have no choice but to fetch */ + NSArray<?> array = ec.objectsWithFetchSpecification(fetchSpec); + if (aggregateAttribute == EOEnterpriseObjectClazz.objectCountAttribute()) { + return array.count(); + } + if (aggregateAttribute.name().startsWith("p_objectCountUnique")) { + String attributeName = aggregateAttribute.name().substring("p_objectCountUnique".length()); + return ERXArrayUtilities.arrayWithoutDuplicateKeyValue(array, attributeName).count(); + } + throw new UnsupportedOperationException("Unable to perform aggregate function for attribute " + aggregateAttribute.name()); + } + EOSQLExpression sqlExpr = sqlFactory.expressionForEntity(entity); sqlExpr.prepareSelectExpressionWithAttributes(new NSArray<EOAttribute>(aggregateAttribute), false, fetchSpec); Modified: trunk/Wonder/Frameworks/EOAdaptors/JavaMemoryAdaptor/Sources/er/memoryadaptor/ERMemoryAdaptor.java =================================================================== --- trunk/Wonder/Frameworks/EOAdaptors/JavaMemoryAdaptor/Sources/er/memoryadaptor/ERMemoryAdaptor.java 2009-06-18 23:24:35 UTC (rev 9497) +++ trunk/Wonder/Frameworks/EOAdaptors/JavaMemoryAdaptor/Sources/er/memoryadaptor/ERMemoryAdaptor.java 2009-06-19 05:59:39 UTC (rev 9498) @@ -49,7 +49,7 @@ @Override public EOSQLExpressionFactory expressionFactory() { - throw new UnsupportedOperationException("ERMemoryAdaptor.expressionFactory"); + return null; } @Override This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |