package org.vertexium.query; import org.vertexium.Element; import org.vertexium.VertexiumException; import org.vertexium.util.CloseableIterable; import org.vertexium.util.JoinIterable; import java.io.IOException; public class QueryResultsJoinIterable<T extends Element> extends JoinIterable<T> implements QueryResultsIterable<T> { public QueryResultsJoinIterable(Iterable<T>... iterables) { super(iterables); } @Override public <TResult extends AggregationResult> TResult getAggregationResult(String name, Class<? extends TResult> resultType) { for (Iterable<? extends T> iterable : getIterables()) { if (iterable instanceof QueryResultsIterable) { TResult aggResult = ((QueryResultsIterable<T>) iterable).getAggregationResult(name, resultType); if (aggResult != null) { return aggResult; } } } return AggregationResult.createEmptyResult(resultType); } @Override public void close() throws IOException { for (Iterable<? extends T> iterable : getIterables()) { if (iterable instanceof CloseableIterable) { ((CloseableIterable) iterable).close(); } } } @Override public long getTotalHits() { long total = 0; for (Iterable<? extends T> iterable : getIterables()) { if (iterable instanceof IterableWithTotalHits) { total += ((IterableWithTotalHits) iterable).getTotalHits(); } } return total; } }