Inital commit
This commit is contained in:
@@ -0,0 +1,210 @@
|
||||
/* 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.photos;
|
||||
|
||||
import com.google.gdata.client.Query;
|
||||
import com.google.gdata.client.photos.PicasawebService;
|
||||
import com.google.gdata.data.photos.AlbumEntry;
|
||||
import com.google.gdata.data.photos.AlbumFeed;
|
||||
import com.google.gdata.data.photos.GphotoEntry;
|
||||
import com.google.gdata.util.ServiceException;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.PrintStream;
|
||||
import java.net.URL;
|
||||
|
||||
/**
|
||||
* Demo of partial response and partial patch to change location on photo
|
||||
* albums.
|
||||
*
|
||||
*
|
||||
*/
|
||||
public class PicasawebPartialDemo {
|
||||
|
||||
/** Picasaweb feed url prefix. */
|
||||
private static final String API_PREFIX
|
||||
= "https://picasaweb.google.com/data/feed/api/user/";
|
||||
|
||||
/** Input stream for reading user input. */
|
||||
private static final BufferedReader IN
|
||||
= new BufferedReader(new InputStreamReader(System.in));
|
||||
|
||||
/** Output stream to write program output. */
|
||||
private static final PrintStream OUT = System.out;
|
||||
|
||||
/** Picasaweb service to talk to the server */
|
||||
private PicasawebService service;
|
||||
|
||||
/** Constructor */
|
||||
private PicasawebPartialDemo(PicasawebService service) {
|
||||
this.service = service;
|
||||
}
|
||||
|
||||
/**
|
||||
* Displays a menu of the main activities a user can perform.
|
||||
*/
|
||||
private void printMenu() {
|
||||
OUT.println("\n");
|
||||
OUT.println("Choose one of the following demo options:");
|
||||
OUT.println("\t1) Retrieve my albums with location");
|
||||
OUT.println("\t2) Update location for an album");
|
||||
OUT.println("\t0) Exit");
|
||||
OUT.println("\nEnter Number (0-2): ");
|
||||
}
|
||||
|
||||
/**
|
||||
* Demonstrates use of partial query to retrieve album title and location
|
||||
* information for user's albums.
|
||||
*/
|
||||
private void printAlbumLocation(String uname)
|
||||
throws IOException, ServiceException {
|
||||
String albumsUrl = API_PREFIX + uname;
|
||||
String fields = "entry(title,gphoto:id,gphoto:location)";
|
||||
|
||||
Query albumQuery = new Query(new URL(albumsUrl));
|
||||
albumQuery.setFields(fields);
|
||||
|
||||
AlbumFeed feed = service.query(albumQuery, AlbumFeed.class);
|
||||
for (GphotoEntry entry : feed.getEntries()) {
|
||||
if (entry instanceof AlbumEntry) {
|
||||
AlbumEntry albumEntry = (AlbumEntry) entry;
|
||||
OUT.println(albumEntry.getGphotoId() + ":"
|
||||
+ albumEntry.getTitle().getPlainText()
|
||||
+ " (" + albumEntry.getLocation() + ")");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Demonstrates update operation using partial patch to update location
|
||||
* string for specified album.
|
||||
*/
|
||||
private void updateAlbumLocation(String uname)
|
||||
throws IOException, ServiceException {
|
||||
OUT.println("Enter album id to update:");
|
||||
String albumId = IN.readLine();
|
||||
|
||||
// Get the current album entry
|
||||
String albumEntryUrl = API_PREFIX + uname + "/" + albumId;
|
||||
String fields = "@gd:etag,gphoto:location";
|
||||
Query patchQuery = new Query(new URL(albumEntryUrl));
|
||||
patchQuery.setFields(fields);
|
||||
AlbumEntry entry = service.getEntry(patchQuery.getUrl(), AlbumEntry.class);
|
||||
OUT.println("Current location: " + entry.getLocation());
|
||||
|
||||
// Update the location in the album entry
|
||||
OUT.println("Specify new location: ");
|
||||
String newLocation = IN.readLine();
|
||||
entry.setLocation(newLocation);
|
||||
entry.setSelectedFields("gphoto:location");
|
||||
AlbumEntry updated = service.patch(new URL(albumEntryUrl), fields, entry);
|
||||
OUT.println("Location set to: " + updated.getLocation());
|
||||
}
|
||||
|
||||
/** Program entry point. */
|
||||
public static void main(String args[]) throws IOException, ServiceException {
|
||||
// parse user input
|
||||
String uname, passwd;
|
||||
if (args.length == 2) {
|
||||
uname = args[0];
|
||||
passwd = args[1];
|
||||
} else if (args.length != 0) {
|
||||
OUT.println(
|
||||
"Syntax: PicasawebCommandLine <username> <password>");
|
||||
return;
|
||||
} else {
|
||||
uname = getString("Username");
|
||||
passwd = getString("Password");
|
||||
}
|
||||
|
||||
PicasawebService service = new PicasawebService("gdata-PhotosPartialDemo");
|
||||
service.setUserCredentials(uname, passwd);
|
||||
|
||||
PicasawebPartialDemo demo = new PicasawebPartialDemo(service);
|
||||
while (true) {
|
||||
try {
|
||||
demo.printMenu();
|
||||
int choice = readInt();
|
||||
|
||||
switch (choice) {
|
||||
case 1:
|
||||
// Prints out the user's uploaded videos
|
||||
demo.printAlbumLocation(uname);
|
||||
break;
|
||||
case 2:
|
||||
demo.updateAlbumLocation(uname);
|
||||
break;
|
||||
case 0:
|
||||
System.exit(1);
|
||||
break;
|
||||
}
|
||||
} catch (IOException e) {
|
||||
// Communications error
|
||||
System.err.println(
|
||||
"There was a problem communicating with the service.");
|
||||
e.printStackTrace();
|
||||
} catch (ServiceException e) {
|
||||
// Server side error
|
||||
System.err.println("The server had a problem handling your request.");
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** Reads a user string input. */
|
||||
private static String getString(String name) throws IOException {
|
||||
OUT.print("Please enter ");
|
||||
OUT.print(name);
|
||||
OUT.println(":");
|
||||
OUT.flush();
|
||||
String result = IN.readLine();
|
||||
result = result.trim();
|
||||
if (result.length() == 0) {
|
||||
return "-1";
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reads a line of text from the standard input.
|
||||
*
|
||||
* @throws IOException If unable to read a line from the standard input.
|
||||
* @return A line of text read from the standard input.
|
||||
*/
|
||||
private static String readLine() throws IOException {
|
||||
return IN.readLine();
|
||||
}
|
||||
|
||||
/**
|
||||
* Reads a line of text from the standard input and returns the parsed
|
||||
* integer representation.
|
||||
*
|
||||
* @throws IOException If unable to read a line from the standard input.
|
||||
* @return An integer read from the standard input.
|
||||
*/
|
||||
private static int readInt() throws IOException {
|
||||
String input = readLine();
|
||||
|
||||
try {
|
||||
return Integer.parseInt(input);
|
||||
} catch (NumberFormatException nfe) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user