139 lines
4.8 KiB
Java
139 lines
4.8 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.
|
|
*/
|
|
|
|
// All Rights Reserved.
|
|
|
|
package sample.tester;
|
|
|
|
import com.google.gdata.client.GoogleService;
|
|
import com.google.gdata.data.BaseEntry;
|
|
import com.google.gdata.data.Entry;
|
|
import com.google.gdata.data.Feed;
|
|
import com.google.gdata.data.PlainTextConstruct;
|
|
import com.google.gdata.data.TextContent;
|
|
import com.google.gdata.util.ServiceException;
|
|
import sample.util.SimpleCommandLineParser;
|
|
|
|
import java.net.URL;
|
|
|
|
/**
|
|
* An application that serves as a sample to show how the GData
|
|
* Service object can be used to create/read/update/delete data
|
|
* in a Google service.
|
|
*
|
|
*
|
|
*/
|
|
public class Tester {
|
|
|
|
public static void main(String[] args) throws Exception {
|
|
|
|
SimpleCommandLineParser parser = new SimpleCommandLineParser(args);
|
|
String serviceName = parser.getValue("serviceName", "service", "s");
|
|
String appName = parser.getValue("appName", "app", "a");
|
|
String feedUrlString = parser.getValue("feedUrl", "feed", "f");
|
|
String username = parser.getValue("username", "user", "u");
|
|
String password = parser.getValue("password", "pass", "p");
|
|
boolean updateEntry = parser.containsKey("update");
|
|
boolean help = parser.containsKey("help", "h");
|
|
|
|
if (help) {
|
|
usage();
|
|
System.exit(1);
|
|
}
|
|
|
|
if (serviceName == null) {
|
|
throw new IllegalArgumentException("Must specify service name");
|
|
}
|
|
|
|
if (appName == null) {
|
|
throw new IllegalArgumentException("Must specify application name");
|
|
}
|
|
|
|
if (feedUrlString == null) {
|
|
throw new IllegalArgumentException("Must specify feed URL");
|
|
}
|
|
|
|
GoogleService service = new GoogleService(serviceName, appName);
|
|
|
|
try {
|
|
|
|
// URL of service endpoint.
|
|
URL feedUrl = new URL(feedUrlString);
|
|
|
|
// Set up authentication.
|
|
if (username != null) {
|
|
if (password == null) {
|
|
throw new IllegalArgumentException("Must specify password");
|
|
}
|
|
service.setUserCredentials(username, password);
|
|
}
|
|
|
|
// Send the query request and receive the response.
|
|
Feed feed = service.getFeed(feedUrl, Feed.class);
|
|
|
|
// Print the title and update time of the returned feed.
|
|
System.out.println("Feed title " + feed.getTitle().getPlainText() +
|
|
" (" + feed.getUpdated() + ")");
|
|
|
|
// Print the title and update time and body of each entry.
|
|
System.out.println("Entries:");
|
|
for (Entry e : feed.getEntries()) {
|
|
String content =
|
|
(e.getContent() != null ?
|
|
((TextContent) e.getContent()).getContent().getPlainText() :
|
|
"");
|
|
System.out.println(" " + e.getTitle().getPlainText() +
|
|
" (" + e.getUpdated() + ")" +
|
|
(content.length() > 0 ? ": " : "") + content);
|
|
}
|
|
|
|
// Insert, update, and delete an entry if so requested.
|
|
if (updateEntry) {
|
|
BaseEntry newEntry = new Entry();
|
|
newEntry.setTitle(new PlainTextConstruct("Sample entry title"));
|
|
newEntry.setContent(new PlainTextConstruct("Sample entry content"));
|
|
BaseEntry e = service.insert(feedUrl, newEntry);
|
|
System.out.println("Inserted an entry, ID is " + e.getId());
|
|
e.setContent(new PlainTextConstruct("New sample entry content"));
|
|
service.update(new URL(e.getEditLink().getHref()), e);
|
|
System.out.println("Updated the entry");
|
|
service.delete(new URL(e.getEditLink().getHref()));
|
|
System.out.println("Deleted the entry");
|
|
}
|
|
|
|
} catch (ServiceException e) {
|
|
throw new RuntimeException(e.getMessage() + "\n" + e.getResponseBody());
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* Prints usage of this application.
|
|
*/
|
|
private static void usage() {
|
|
System.out.println("Usage: java Tester --serviceName [service] " +
|
|
"--appName [app] --feedUrl [feed] --username [user] " +
|
|
"--password [pass] --update");
|
|
System.out.println(
|
|
"\nA generic client for querying a GData feed and optionally\n" +
|
|
"inserting/updating/deleting entries.\n\n" +
|
|
"It uses the specified Google Account username and password to\n" +
|
|
"query the specified feed URL and displays the title and content\n" +
|
|
"of each entry returned. If --update is specified, it will insert\n" +
|
|
"an entry, update it, and then delete it.\n");
|
|
}
|
|
|
|
}
|