/* 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.books;
import com.google.gdata.client.Query;
import java.net.URL;
/**
* Describes a query for the feed of information about one volume.
*
*
*/
public class VolumeQuery extends Query {
/** Ebook. */
private String ebook;
/** Min-viewability. */
private MinViewability minViewability = MinViewability.NONE;
/** Min-viewability. Default value is {@link #NONE}. */
public enum MinViewability {
/** Full. */
FULL("full"),
/** None. */
NONE("none"),
/** Partial. */
PARTIAL("partial");
private final String value;
private MinViewability(String value) {
this.value = value;
}
/**
* Returns the value used in the URL.
*
* @return value used in the URL.
*/
public String toValue() {
return value;
}
}
/**
* Constructs a new query object that targets a feed. The initial state of
* the query contains no parameters, meaning all entries in the feed would be
* returned if the query was executed immediately after construction.
*
* @param feedUrl the URL of the feed against which queries will be executed.
*/
public VolumeQuery(URL feedUrl) {
super(feedUrl);
}
/**
* Returns the ebook.
*
* @return ebook or <code>null</code> to indicate that the parameter is not
* set.
*/
public String getEbook() {
return ebook;
}
/**
* Sets the ebook.
*
* @param ebook ebook or <code>null</code> to remove this parameter if set.
*/
public void setEbook(String ebook) {
// check if setting to existing value
if (this.ebook == null ? ebook != null : !this.ebook.equals(ebook)) {
// set to new value for customer parameter
this.ebook = ebook;
setStringCustomParameter("ebook", ebook);
}
}
/**
* Returns the min-viewability.
*
* @return min-viewability.
*/
public MinViewability getMinViewability() {
return minViewability;
}
/**
* Sets the min-viewability.
*
* @param minViewability min-viewability or <code>null</code> to reset this
* parameter to default value {@link MinViewability#NONE}.
*/
public void setMinViewability(MinViewability minViewability) {
if (minViewability == null) {
minViewability = MinViewability.NONE;
}
// check if setting to existing value
if (!this.minViewability.equals(minViewability)) {
// set to new value for customer parameter
this.minViewability = minViewability;
setStringCustomParameter("min-viewability",
minViewability == MinViewability.NONE ? null :
minViewability.toValue());
}
}
}