130 lines
4.3 KiB
Java
130 lines
4.3 KiB
Java
/* 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 sample.spreadsheet.gui;
|
|
|
|
import com.google.gdata.client.spreadsheet.ListQuery;
|
|
import com.google.gdata.client.spreadsheet.SpreadsheetService;
|
|
import com.google.gdata.data.spreadsheet.ListEntry;
|
|
import com.google.gdata.data.spreadsheet.ListFeed;
|
|
import com.google.gdata.util.ServiceException;
|
|
|
|
import java.io.IOException;
|
|
import java.net.URL;
|
|
import java.util.List;
|
|
|
|
/**
|
|
* This class helps you access your spreadsheet like a list or like a
|
|
* database.
|
|
*
|
|
*
|
|
* In this model, each row is treated like a separate entry, with multiple
|
|
* fields. Each field is named based on the top row of your speradsheet.
|
|
*
|
|
*
|
|
*/
|
|
public class ListFeedHelper {
|
|
|
|
/** The SpreadsheetService to contact Google with. */
|
|
private SpreadsheetService service;
|
|
|
|
/** List feed URL. */
|
|
private URL feedUrl;
|
|
|
|
|
|
/**
|
|
* Creates a list feed helper for a particular URL.
|
|
*
|
|
* @param inService the SpreadsheetService to contact Google with
|
|
* @param inFeedUrl the URL of the list feed; to get this URL, you can
|
|
* use SpreadsheetFeedHelper, or if you have a WorksheetEntry
|
|
* you can use its method to get the list feed URL
|
|
*/
|
|
public ListFeedHelper(SpreadsheetService inService, URL inFeedUrl) {
|
|
service = inService;
|
|
feedUrl = inFeedUrl;
|
|
}
|
|
|
|
/**
|
|
* Adds a new list entry to the spreadsheet.
|
|
*
|
|
* @param entry the new entry
|
|
* @throws IOException if there was a problem contacting Google
|
|
* @throws ServiceException if there was an error processnig the request
|
|
*/
|
|
public ListEntry addListEntry(ListEntry entry)
|
|
throws IOException, ServiceException {
|
|
return service.insert(feedUrl, entry);
|
|
}
|
|
|
|
/**
|
|
* Gets a list of all the list entries.
|
|
*
|
|
* @return a list of all non-empty rows in the spreadsheet
|
|
* @throws IOException if there was a problem contacting Google
|
|
* @throws ServiceException if there was an error processnig the request
|
|
*/
|
|
public List<ListEntry> getAllListEntries()
|
|
throws IOException, ServiceException {
|
|
ListQuery query = new ListQuery(feedUrl);
|
|
ListFeed feed = service.query(query, ListFeed.class);
|
|
return feed.getEntries();
|
|
}
|
|
|
|
/**
|
|
* Gets a list of all entries that match a full-text search.
|
|
*
|
|
* Full-text searches look for the keywords you specify, that may
|
|
* occur in any order in the row. Right now only the simplest syntax
|
|
* is supported, as a convenience feature.
|
|
*
|
|
* @param search the search string like "adam technical writer"
|
|
* @return all matching entries
|
|
* @throws IOException if there was a problem contacting Google
|
|
* @throws ServiceException if there was an error processnig the request
|
|
*/
|
|
public List<ListEntry> getFullTextSearch(String search)
|
|
throws IOException, ServiceException {
|
|
ListQuery query = new ListQuery(feedUrl);
|
|
query.setFullTextQuery(search);
|
|
ListFeed feed = service.query(query, ListFeed.class);
|
|
return feed.getEntries();
|
|
}
|
|
|
|
/**
|
|
* Gets a list of all entries that match a structured query.
|
|
*
|
|
* Structured queries are in format:
|
|
* name = 'adam' and (job = 'technical writer' or job = 'artist')
|
|
*
|
|
* In short, it is case-insensitive, supporting both SQL-like and
|
|
* C-like syntaxes for all varieties of new and seasoned programmers.
|
|
*
|
|
* @param structuredQuery the search string
|
|
* @return all matching entries
|
|
* @throws IOException if there was a problem contacting Google
|
|
* @throws ServiceException if there was an error processnig the request
|
|
*/
|
|
public List<ListEntry> getStructuredQuery(
|
|
String structuredQuery)
|
|
throws IOException, ServiceException {
|
|
ListQuery query = new ListQuery(feedUrl);
|
|
query.setFullTextQuery(structuredQuery);
|
|
ListFeed feed = service.query(query, ListFeed.class);
|
|
return feed.getEntries();
|
|
}
|
|
}
|