Inital commit
This commit is contained in:
@@ -0,0 +1,234 @@
|
||||
/* 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;
|
||||
|
||||
import sample.util.SimpleCommandLineParser;
|
||||
import com.google.gdata.client.spreadsheet.FeedURLFactory;
|
||||
import com.google.gdata.client.spreadsheet.SpreadsheetQuery;
|
||||
import com.google.gdata.client.spreadsheet.SpreadsheetService;
|
||||
import com.google.gdata.client.spreadsheet.WorksheetQuery;
|
||||
import com.google.gdata.data.Link;
|
||||
import com.google.gdata.data.spreadsheet.CellEntry;
|
||||
import com.google.gdata.data.spreadsheet.CellFeed;
|
||||
import com.google.gdata.data.spreadsheet.SpreadsheetEntry;
|
||||
import com.google.gdata.data.spreadsheet.SpreadsheetFeed;
|
||||
import com.google.gdata.data.spreadsheet.WorksheetEntry;
|
||||
import com.google.gdata.data.spreadsheet.WorksheetFeed;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.FileReader;
|
||||
import java.net.URL;
|
||||
import java.util.List;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* An application that serves as a sample to show how the SpreadsheetService
|
||||
* can be used to import delimited text file to a spreadsheet.
|
||||
*
|
||||
*
|
||||
*/
|
||||
public class ImportClient {
|
||||
|
||||
private SpreadsheetService service;
|
||||
|
||||
private FeedURLFactory factory;
|
||||
|
||||
public ImportClient() throws Exception {
|
||||
factory = FeedURLFactory.getDefault();
|
||||
service = new SpreadsheetService("gdata-sample-spreadsheetimport");
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a client object for which the provided username and password
|
||||
* produces a valid authentication.
|
||||
*
|
||||
* @param username the Google service user name
|
||||
* @param password the corresponding password for the user name
|
||||
* @throws Exception if error is encountered, such as invalid username and
|
||||
* password pair
|
||||
*/
|
||||
public ImportClient(String username, String password) throws Exception {
|
||||
this();
|
||||
service.setUserCredentials(username, password);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the SpreadsheetEntry for the first spreadsheet with that name
|
||||
* retrieved in the feed.
|
||||
*
|
||||
* @param spreadsheet the name of the spreadsheet
|
||||
* @return the first SpreadsheetEntry in the returned feed, so latest
|
||||
* spreadsheet with the specified name
|
||||
* @throws Exception if error is encountered, such as no spreadsheets with the
|
||||
* name
|
||||
*/
|
||||
public SpreadsheetEntry getSpreadsheet(String spreadsheet)
|
||||
throws Exception {
|
||||
|
||||
SpreadsheetQuery spreadsheetQuery
|
||||
= new SpreadsheetQuery(factory.getSpreadsheetsFeedUrl());
|
||||
spreadsheetQuery.setTitleQuery(spreadsheet);
|
||||
SpreadsheetFeed spreadsheetFeed = service.query(spreadsheetQuery,
|
||||
SpreadsheetFeed.class);
|
||||
List<SpreadsheetEntry> spreadsheets = spreadsheetFeed.getEntries();
|
||||
if (spreadsheets.isEmpty()) {
|
||||
throw new Exception("No spreadsheets with that name");
|
||||
}
|
||||
|
||||
return spreadsheets.get(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the WorksheetEntry for the worksheet in the spreadsheet with the
|
||||
* specified name.
|
||||
*
|
||||
* @param spreadsheet the name of the spreadsheet
|
||||
* @param worksheet the name of the worksheet in the spreadsheet
|
||||
* @return worksheet with the specified name in the spreadsheet with the
|
||||
* specified name
|
||||
* @throws Exception if error is encountered, such as no spreadsheets with the
|
||||
* name, or no worksheet wiht the name in the spreadsheet
|
||||
*/
|
||||
public WorksheetEntry getWorksheet(String spreadsheet, String worksheet)
|
||||
throws Exception {
|
||||
|
||||
SpreadsheetEntry spreadsheetEntry = getSpreadsheet(spreadsheet);
|
||||
|
||||
WorksheetQuery worksheetQuery
|
||||
= new WorksheetQuery(spreadsheetEntry.getWorksheetFeedUrl());
|
||||
|
||||
worksheetQuery.setTitleQuery(worksheet);
|
||||
WorksheetFeed worksheetFeed = service.query(worksheetQuery,
|
||||
WorksheetFeed.class);
|
||||
List<WorksheetEntry> worksheets = worksheetFeed.getEntries();
|
||||
if (worksheets.isEmpty()) {
|
||||
throw new Exception("No worksheets with that name in spreadhsheet "
|
||||
+ spreadsheetEntry.getTitle().getPlainText());
|
||||
}
|
||||
|
||||
return worksheets.get(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Clears all the cell entries in the worksheet.
|
||||
*
|
||||
* @param spreadsheet the name of the spreadsheet
|
||||
* @param worksheet the name of the worksheet
|
||||
* @throws Exception if error is encountered, such as bad permissions
|
||||
*/
|
||||
public void purgeWorksheet(String spreadsheet, String worksheet)
|
||||
throws Exception {
|
||||
|
||||
WorksheetEntry worksheetEntry = getWorksheet(spreadsheet, worksheet);
|
||||
CellFeed cellFeed = service.getFeed(worksheetEntry.getCellFeedUrl(),
|
||||
CellFeed.class);
|
||||
|
||||
List<CellEntry> cells = cellFeed.getEntries();
|
||||
for (CellEntry cell : cells) {
|
||||
Link editLink = cell.getEditLink();
|
||||
service.delete(new URL(editLink.getHref()));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Inserts a cell entry in the worksheet.
|
||||
*
|
||||
* @param spreadsheet the name of the spreadsheet
|
||||
* @param worksheet the name of the worksheet
|
||||
* @param row the index of the row
|
||||
* @param column the index of the column
|
||||
* @param input the input string for the cell
|
||||
* @throws Exception if error is encountered, such as bad permissions
|
||||
*/
|
||||
public void insertCellEntry(String spreadsheet, String worksheet,
|
||||
int row, int column, String input) throws Exception {
|
||||
|
||||
URL cellFeedUrl = getWorksheet(spreadsheet, worksheet).getCellFeedUrl();
|
||||
|
||||
CellEntry newEntry = new CellEntry(row, column, input);
|
||||
|
||||
service.insert(cellFeedUrl, newEntry);
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints the usage of this application.
|
||||
*/
|
||||
private static void usage() {
|
||||
System.out.println("Usage: java ImportClient --username [user] "
|
||||
+ "--password [pass] --filename [file] --spreadsheet [name] "
|
||||
+ "--worksheet [name] --delimiter [regex]");
|
||||
System.out.println("\nA simple application that uses the provided Google\n"
|
||||
+ "Account username and password to locate the\n"
|
||||
+ "spreadsheet and worksheet in user's Google\n"
|
||||
+ "Spreadsheet account, and import the provided\n"
|
||||
+ "delimited text file into the worksheet.");
|
||||
}
|
||||
|
||||
/**
|
||||
* Main entry point. Parses arguments and creates and invokes the
|
||||
* ImportClient.
|
||||
*/
|
||||
public static void main(String[] args) throws Exception {
|
||||
|
||||
SimpleCommandLineParser parser = new SimpleCommandLineParser(args);
|
||||
String username = parser.getValue("username", "user", "u");
|
||||
String password = parser.getValue("password", "pass", "passwd", "pw", "p");
|
||||
String filename = parser.getValue("filename", "file", "f");
|
||||
String spreadsheet = parser.getValue("spreadsheet", "s");
|
||||
String worksheet = parser.getValue("worksheet", "w");
|
||||
String delimiter = parser.getValue("delimiter", "delimit", "d");
|
||||
boolean help = parser.containsKey("help", "h");
|
||||
if (help || (username == null) || (password == null)
|
||||
|| (spreadsheet == null) || (worksheet == null)
|
||||
|| (delimiter == null)) {
|
||||
usage();
|
||||
System.exit(1);
|
||||
}
|
||||
|
||||
ImportClient client = new ImportClient(username, password);
|
||||
|
||||
client.purgeWorksheet(spreadsheet, worksheet);
|
||||
|
||||
Pattern delim = Pattern.compile(delimiter);
|
||||
|
||||
BufferedReader reader = null;
|
||||
try {
|
||||
reader = new BufferedReader(new FileReader(filename));
|
||||
String line = reader.readLine();
|
||||
int row = 0;
|
||||
while (line != null) {
|
||||
|
||||
// Break up the line by the delimiter and insert the cells
|
||||
String[] cells = delim.split(line, -1);
|
||||
for (int col = 0; col < cells.length; col++) {
|
||||
client.insertCellEntry(spreadsheet, worksheet,
|
||||
row + 1, col + 1, cells[col]);
|
||||
}
|
||||
|
||||
// Advance the loop
|
||||
line = reader.readLine();
|
||||
row++;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw e;
|
||||
} finally {
|
||||
if (reader != null) {
|
||||
reader.close();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user