It turned out that using the generic DocsService class to retrieve spreadsheets' feeds yields feed URLs that couldn't be used with SpreadsheetService. And we needed to use SpreadsheetService so we can retrieve row counts for worksheets. DocsService for some reason always returns zero for row count.
git-svn-id: http://google-refine.googlecode.com/svn/trunk@2200 7d457c2a-affb-35e4-300a-418c747d4874
This commit is contained in:
parent
8ded93008a
commit
680b8c989e
@ -56,7 +56,8 @@ Refine.GDataImportingController.prototype.startImportingDocument = function(doc)
|
||||
"/command/core/importing-controller?" + $.param({
|
||||
"controller": "gdata/gdata-importing-controller",
|
||||
"subCommand": "initialize-parser-ui",
|
||||
"docUrl": doc.docSelfLink
|
||||
"docUrl": doc.docSelfLink,
|
||||
"docType": doc.type
|
||||
}),
|
||||
null,
|
||||
function(data2) {
|
||||
@ -82,6 +83,7 @@ Refine.GDataImportingController.prototype.startImportingDocument = function(doc)
|
||||
Refine.GDataImportingController.prototype.getOptions = function() {
|
||||
var options = {
|
||||
docUrl: this._doc.docSelfLink,
|
||||
docType: this._doc.type,
|
||||
sheetUrl: this._sheetUrl
|
||||
};
|
||||
|
||||
|
@ -49,15 +49,12 @@ import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
import org.json.JSONWriter;
|
||||
|
||||
import com.google.gdata.client.Query;
|
||||
import com.google.gdata.client.docs.DocsService;
|
||||
import com.google.gdata.client.spreadsheet.SpreadsheetService;
|
||||
import com.google.gdata.data.Category;
|
||||
import com.google.gdata.data.DateTime;
|
||||
import com.google.gdata.data.Person;
|
||||
import com.google.gdata.data.docs.DocumentListEntry;
|
||||
import com.google.gdata.data.docs.DocumentListFeed;
|
||||
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.util.ServiceException;
|
||||
|
||||
@ -124,10 +121,10 @@ public class GDataImportingController implements ImportingController {
|
||||
|
||||
try {
|
||||
DocsService service = getDocsService(token);
|
||||
listDocumentsOfType(service, writer, "http://schemas.google.com/docs/2007#spreadsheet");
|
||||
listSpreadsheets(service, writer);
|
||||
//listDocumentsOfType(service, writer, "http://schemas.google.com/docs/2007#???");
|
||||
} catch (ServiceException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
// TODO: just ignore?
|
||||
}
|
||||
|
||||
writer.endArray();
|
||||
@ -140,6 +137,34 @@ public class GDataImportingController implements ImportingController {
|
||||
}
|
||||
}
|
||||
|
||||
private void listSpreadsheets(DocsService service, JSONWriter writer)
|
||||
throws IOException, ServiceException, JSONException {
|
||||
URL metafeedUrl = new URL("https://spreadsheets.google.com/feeds/spreadsheets/private/full");
|
||||
SpreadsheetFeed feed = service.getFeed(metafeedUrl, SpreadsheetFeed.class);
|
||||
for (SpreadsheetEntry entry : feed.getEntries()) {
|
||||
writer.object();
|
||||
writer.key("docId"); writer.value(entry.getId());
|
||||
writer.key("docLink"); writer.value(entry.getHtmlLink().getHref());
|
||||
writer.key("docSelfLink"); writer.value(entry.getSelfLink().getHref());
|
||||
writer.key("title"); writer.value(entry.getTitle().getPlainText());
|
||||
writer.key("type"); writer.value("spreadsheet");
|
||||
|
||||
DateTime updated = entry.getUpdated();
|
||||
if (updated != null) {
|
||||
writer.key("updated"); writer.value(updated.toStringRfc822());
|
||||
}
|
||||
|
||||
writer.key("authors"); writer.array();
|
||||
for (Person person : entry.getAuthors()) {
|
||||
writer.value(person.getName());
|
||||
}
|
||||
writer.endArray();
|
||||
|
||||
writer.endObject();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
private void listDocumentsOfType(DocsService service, JSONWriter writer, String type)
|
||||
throws IOException, ServiceException, JSONException {
|
||||
URL feedUrl = new URL("https://docs.google.com/feeds/default/private/full");
|
||||
@ -172,6 +197,7 @@ public class GDataImportingController implements ImportingController {
|
||||
writer.endObject();
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
private void doInitializeParserUI(
|
||||
HttpServletRequest request, HttpServletResponse response, Properties parameters)
|
||||
@ -183,7 +209,9 @@ public class GDataImportingController implements ImportingController {
|
||||
return;
|
||||
}
|
||||
|
||||
SpreadsheetService service = getSpreadsheetService(token);
|
||||
String type = parameters.getProperty("docType");
|
||||
String urlString = parameters.getProperty("docUrl");
|
||||
URL url = new URL(urlString);
|
||||
try {
|
||||
JSONObject result = new JSONObject();
|
||||
JSONObject options = new JSONObject();
|
||||
@ -199,10 +227,9 @@ public class GDataImportingController implements ImportingController {
|
||||
JSONArray worksheets = new JSONArray();
|
||||
JSONUtilities.safePut(options, "worksheets", worksheets);
|
||||
|
||||
String urlString = parameters.getProperty("docUrl");
|
||||
URL url = new URL(urlString);
|
||||
|
||||
SpreadsheetEntry spreadsheetEntry = service.getEntry(url, SpreadsheetEntry.class);
|
||||
if ("spreadsheet".equals(type)) {
|
||||
SpreadsheetService spreadsheetService = getSpreadsheetService(token);
|
||||
SpreadsheetEntry spreadsheetEntry = spreadsheetService.getEntry(url, SpreadsheetEntry.class);
|
||||
for (WorksheetEntry worksheetEntry : spreadsheetEntry.getWorksheets()) {
|
||||
JSONObject worksheetO = new JSONObject();
|
||||
JSONUtilities.safePut(worksheetO, "name", worksheetEntry.getTitle().getPlainText());
|
||||
@ -211,6 +238,9 @@ public class GDataImportingController implements ImportingController {
|
||||
|
||||
JSONUtilities.append(worksheets, worksheetO);
|
||||
}
|
||||
}
|
||||
/* TODO: else */
|
||||
|
||||
HttpUtilities.respond(response, result.toString());
|
||||
} catch (ServiceException e) {
|
||||
e.printStackTrace();
|
||||
|
Loading…
Reference in New Issue
Block a user