/* * 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.displayer.client; import org.dashbuilder.dataset.DataSet; import org.dashbuilder.dataset.DataSetLookup; import org.dashbuilder.dataset.client.DataSetReadyCallback; import org.dashbuilder.dataset.filter.DataSetFilter; import org.dashbuilder.dataset.group.DataSetGroup; import org.dashbuilder.dataset.group.Interval; import org.dashbuilder.dataset.sort.DataSetSort; import org.dashbuilder.dataset.sort.SortOrder; /** * Interface addressed to issue lookup requests over a data set instance. */ public interface DataSetHandler { /** * Retrieves any group operation present in the current data set lookup for the target column specified. * @param columnId The column id. to look for. * * @return The group operation that matches the given column id. Or null if no operation is found. */ DataSetGroup getGroupOperation(String columnId); /** * Get the interval at the given row for the column specified. * * <p>In case of grouped data sets, the interval may contain information * related to the group operation. For instance, for a data set grouped * by month, will return an interval containing the min/max dates of such month.</p> * * <p>For non-grouped or grouped by label data sets, will * return only an interval with the value of the row/column selected.</p> * * The interval information is useful for filtering purposes as the data provider needs * all the information related to the selected interval. * * @param columnId The column id. * @param row The row which interval we want to retrieve. * @return An interval with information related to the target row/column. Or null, if * <ul> * <li>the column does not exist,</li> * <li>the row index is out of bounds,</li> * <li>or the value is null.</li> * </ul> */ Interval getInterval(String columnId, int row); /** * Forces the underlying data set to be updated according the group interval selection filter. * * @param op The group interval selection operation to apply <i>op.getSelectedIntervalNames()</i> MUST NOT BE EMPTY. * @return false, if the target interval selection has already been applied - true, otherwise. */ boolean filter(DataSetGroup op); /** * Reverts the changes applied by a previous <i>filter</i> operation. * * @param op The operation to remove. * @return false, if no filter has been applied for the target operation - true, otherwise. */ boolean unfilter(DataSetGroup op); /** * Forces the underlying data set to be updated according the specified filter. * * @param op The filter operation to apply. * @return false, if the filter requested has already been applied - true, otherwise. */ boolean filter(DataSetFilter op); /** * Reverts the changes applied by a previous <i>filter</i> operation. * * @param op The operation to remove. * @return false, if no filter has been applied for the target operation - true, otherwise. */ boolean unfilter(DataSetFilter op); /** * Applies the specified group interval selection operation over the existing group op. * * @param op The group interval selection operation to apply <i>op.getSelectedIntervalNames()</i> MUST NOT BE EMPTY. * @return false, if drillDown is not applicable for the target operation - true, otherwise. */ boolean drillDown(DataSetGroup op); /** * Reverts the changes applied by a previous <i>drillDown</i> operation. * * @param op The operation to remove. * @return false, if no drillDown has been applied for the target operation - true, otherwise. */ boolean drillUp(DataSetGroup op); /** * Set the sort order operation to apply to the data set. * * @param columnId The name of the column to sort. * @param sortOrder The sort order. */ void sort(String columnId, SortOrder sortOrder); /** * Forces the next data set lookup request to retrieve only the specified row sub set. * * @param offset The position where the row sub set starts. * @param rows The number of rows to get. */ void limitDataSetRows(int offset, int rows); /** * Restore the current data set lookup instance to its base status. */ void resetAllOperations(); /** * Executes the current data set lookup request configured within this handler. * * @param callback The callback interface that is invoked right after the data is available. */ void lookupDataSet(DataSetReadyCallback callback) throws Exception; /** * Get the data set get on the last lookup call (if any) */ DataSet getLastDataSet(); /** * Get the current data set lookup (if any) */ DataSetLookup getCurrentDataSetLookup(); }