@Override public AggregateBuilder<?> createAggregateBuilder() { return _delegate.createAggregateBuilder(); }
@Override public String getFunctionName() { return _delegate.getFunctionName(); }
@Override public Object evaluate(Object... values) { return _delegate.evaluate(values); } }
@Override public ColumnType getExpectedColumnType(ColumnType type) { return _delegate.getExpectedColumnType(type); }
@Override public ColumnType getExpectedColumnType(ColumnType type) { return _delegate.getExpectedColumnType(type); }
@Override public AggregateBuilder<?> createAggregateBuilder() { return _delegate.createAggregateBuilder(); }
@Override public String getFunctionName() { return _delegate.getFunctionName(); }
@Override public Object evaluate(Object... values) { return _delegate.evaluate(values); } }
public AggregateBuilder<?> createAggregateBuilder(final SortationType sortationType, final boolean skipNulls, final String concatenationSeparator) { switch (this) { case CONCAT_VALUES: return new ConcatAggregateBuilder(sortationType, skipNulls, concatenationSeparator); case CREATE_LIST: return new CreateListAggregateBuilder(sortationType, skipNulls); case FIRST_VALUE: return FunctionType.FIRST.createAggregateBuilder(); case LAST_VALUE: return FunctionType.LAST.createAggregateBuilder(); case SUM: return FunctionType.SUM.createAggregateBuilder(); case AVG: return FunctionType.AVG.createAggregateBuilder(); case RANDOM_VALUE: return FunctionType.RANDOM.createAggregateBuilder(); default: throw new UnsupportedOperationException(); } }
final AggregateFunction aggregateFunction = selectItem.getAggregateFunction(); if (aggregateFunction != null && !_queryRewriter.isAggregateFunctionSupported(aggregateFunction)) { throw new MetaModelException("Aggregate function '" + aggregateFunction.getFunctionName() + "' is not supported on this JDBC database. Query rejected: " + query);
Object functionResult = item.getAggregateFunction().evaluate(objects.toArray()); resultRow[i] = functionResult; } else {
private List<AggregateBuilder<?>> getAggregateBuilders(final Object key) { List<AggregateBuilder<?>> collectionOfAggregateBuilders = _aggregateBuilders.get(key); if (collectionOfAggregateBuilders == null) { final List<AggregateBuilder<?>> newCollectionOfValues = new ArrayList<>(aggregationTypes.length); // add COUNT aggregation as first newCollectionOfValues.add(FunctionType.COUNT.createAggregateBuilder()); for (final AggregationType aggregationType : aggregationTypes) { final AggregateBuilder<?> aggregateBuilder = aggregationType.createAggregateBuilder(valueSortation, skipNullValues, concatenationSeparator); newCollectionOfValues.add(aggregateBuilder); } final List<AggregateBuilder<?>> previousCollectionOfValues = _aggregateBuilders.putIfAbsent(key, newCollectionOfValues); if (previousCollectionOfValues == null) { collectionOfAggregateBuilders = newCollectionOfValues; } else { collectionOfAggregateBuilders = previousCollectionOfValues; } } return collectionOfAggregateBuilders; }
final AggregateFunction aggregateFunction = selectItem.getAggregateFunction(); if (aggregateFunction != null && !_queryRewriter.isAggregateFunctionSupported(aggregateFunction)) { throw new MetaModelException("Aggregate function '" + aggregateFunction.getFunctionName() + "' is not supported on this JDBC database. Query rejected: " + query);
Object functionResult = item.getAggregateFunction().evaluate(objects.toArray()); resultRow[i] = functionResult; } else {
aggregateBuilders.put(item, item.getAggregateFunction().createAggregateBuilder());
aggregateBuilders.put(item, item.getAggregateFunction().createAggregateBuilder());