/* Copyright (c) 2008 Google Inc.
*
* 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.google.gdata.client.spreadsheet;
import com.google.gdata.client.Query;
import java.net.URL;
/**
* Simple class for cells-feed-specific queries.
*
* The main features include minimum and maximum row and column
* numbers.
*
* For instance, you could select only cells in the range of
* rows 2 through 5 and columns 3 and beyond. This would
* correspond to:
*
* query.setMinimumRow(2);
* query.setMaximumRow(5);
* query.setMinimumCol(3);
*
*
*
*
*/
public class CellQuery extends Query {
/** String property for minimum row number. */
public static final String MINIMUM_ROW = "min-row";
/** String property for maximum row number. */
public static final String MAXIMUM_ROW = "max-row";
/** String property for minimum column number. */
public static final String MINIMUM_COL = "min-col";
/** String property for maximum column number. */
public static final String MAXIMUM_COL = "max-col";
/** String property for a cell range. */
public static final String RANGE = "range";
/** String porperty for flag to return empty cells. */
public static final String RETURN_EMPTY = "return-empty";
/**
* Constructs an object representing a to-be-executed query on cells.
*
* @param feedUrl the URI of the particular worksheet's cells feed
*/
public CellQuery(URL feedUrl) {
super(feedUrl);
}
/**
* Sets the minimum row number of cells that are returned.
* @param value the row number, or null if there is no minimum
*/
public void setMinimumRow(Integer value) {
if ( value != null && value.intValue() > 0 ) {
setIntegerCustomParameter(MINIMUM_ROW, value);
} else {
setIntegerCustomParameter(MINIMUM_ROW, null);
}
}
/**
* Sets the maximum row number of cells that are returned.
* @param value the row number, or null if there is no maximum
*/
public void setMaximumRow(Integer value) {
if ( value != null && value.intValue() > 0 ) {
setIntegerCustomParameter(MAXIMUM_ROW, value);
} else {
setIntegerCustomParameter(MAXIMUM_ROW, null);
}
}
/**
* Sets the minimum column number of cells that are returned.
* @param value the column numer, or null if there is no minimum
*/
public void setMinimumCol(Integer value) {
if ( value != null && value.intValue() > 0 ) {
setIntegerCustomParameter(MINIMUM_COL, value);
} else {
setIntegerCustomParameter(MINIMUM_COL, null);
}
}
/**
* Sets the maximum column number of cells that are returned.
* @param value the column number, of null if there is no maximum
*/
public void setMaximumCol(Integer value) {
if ( value != null && value.intValue() > 0 ) {
setIntegerCustomParameter(MAXIMUM_COL, value);
} else {
setIntegerCustomParameter(MAXIMUM_COL, null);
}
}
/**
* Sets the range for the cells to return.
* @param value the range in A1 or R1C1 for the cells to be returned.
*/
public void setRange(String value) {
setStringCustomParameter(RANGE, value);
}
/**
* Sets whether to return empty cells.
* @param value if true, then empty cells will be returned in the feed.
*/
public void setReturnEmpty(boolean value) {
setStringCustomParameter(RETURN_EMPTY, "" + value);
}
/**
* Gets the smallest row number possible in the cells to be returned.
*/
public Integer getMinimumRow() {
return getIntegerCustomParameter(MINIMUM_ROW);
}
/**
* Gets the largest row number possible in the cells to be returned.
*/
public Integer getMaximumRow() {
return getIntegerCustomParameter(MAXIMUM_ROW);
}
/**
* Gets the smallest column number possible in the cells to be returned.
*/
public Integer getMinimumCol() {
return getIntegerCustomParameter(MINIMUM_COL);
}
/**
* Gets the largest column number possible in the cells to be returned.
*/
public Integer getMaximumCol() {
return getIntegerCustomParameter(MAXIMUM_COL);
}
/**
* Gets the range of the cells to be returned.
*/
public String getRange() {
return getStringCustomParameter(RANGE);
}
/**
* Gets whether the empty cells should be returned.
*/
public boolean getReturnEmpty() {
return Boolean.parseBoolean(getStringCustomParameter(RETURN_EMPTY));
}
}