/* * Copyright 2014 Red Hat, Inc. and/or its affiliates. * * 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 org.dashbuilder.dataset.engine.group; import org.dashbuilder.dataset.DataColumn; import org.dashbuilder.dataset.engine.DataSetHandler; import org.dashbuilder.dataset.group.ColumnGroup; import org.dashbuilder.dataset.group.Interval; /** * Group operations requires to split the values of a column into intervals. This interface provides an abstraction * for the different group strategy implementations. */ public interface IntervalBuilder { /** * Build a list of intervals according to the column group settings. The resulting intervals contain the row references belonging to it. * @param ctx The current operation engine data set handler context. * @param columnGroup The column group operation to apply. * * @return A list of intervals containing a split of all the values for the given column. */ IntervalList build(DataSetHandler ctx, ColumnGroup columnGroup); /** * Build a list of intervals according to the column group settings. The resulting intervals are empty (no row references in). * @param groupedColumn The data set grouped column * * @return A list of intervals containing a split of all the values for the given column. */ IntervalList build(DataColumn groupedColumn); /** * Given a grouped column, locate the interval at the position specified. * * @param column The grouped column. * @param intervalIndex The target interval index we want to select. * * @return The target interval */ Interval locate(DataColumn column, Integer intervalIndex); }