Map<String, Fields> resolveGroupingSelectors( Set<Scope> incomingScopes )
{
try
{
Map<String, Fields> groupingSelectors = getKeySelectors();
Map<String, Fields> groupingFields = resolveSelectorsAgainstIncoming( incomingScopes, groupingSelectors, "grouping" );
if( !verifySameSize( groupingFields ) )
throw new OperatorException( this, "all grouping fields must be same size: " + toString() );
verifySameTypes( groupingSelectors, groupingFields );
return groupingFields;
}
catch( FieldsResolverException exception )
{
throw new OperatorException( this, OperatorException.Kind.grouping, exception.getSourceFields(), exception.getSelectorFields(), exception );
}
catch( RuntimeException exception )
{
throw new OperatorException( this, "could not resolve grouping selector in: " + this, exception );
}
}