All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.javaclub.cdl.client.matrix.merger.aggregation.AggregationResultSet Maven / Gradle / Ivy

The newest version!
/**
 * Copyright 1999-2015 dangdang.com.
 * 

* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *

*/ package com.github.javaclub.cdl.client.matrix.merger.aggregation; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Collection; import java.util.LinkedHashSet; import java.util.List; import com.github.javaclub.cdl.client.matrix.jdbc.AbstractShardingResultSet; import com.github.javaclub.cdl.client.matrix.merger.common.ResultSetUtil; import com.github.javaclub.cdl.client.matrix.parser.result.merger.AggregationColumn; import com.github.javaclub.cdl.client.matrix.parser.result.merger.MergeContext; import lombok.Getter; /** * 聚合结果集. * * @author gaohongtao, zhangliang */ @Getter public final class AggregationResultSet extends AbstractShardingResultSet { private final Collection effectivedResultSets; private final List aggregationColumns; private boolean hasIndexesForAggregationColumns; public AggregationResultSet(final List resultSets, final MergeContext mergeContext) { super(resultSets, mergeContext.getLimit()); aggregationColumns = mergeContext.getAggregationColumns(); effectivedResultSets = new LinkedHashSet<>(resultSets.size()); } @Override public boolean nextForSharding() throws SQLException { if (!hasIndexesForAggregationColumns) { ResultSetUtil.fillIndexesForDerivedAggregationColumns(getResultSets().iterator().next(), aggregationColumns); hasIndexesForAggregationColumns = true; } for (ResultSet each : getResultSets()) { if (!each.next()) { effectivedResultSets.remove(each); continue; } effectivedResultSets.add(each); } return !effectivedResultSets.isEmpty(); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy