/*
* Copyright (c) 2005 Aetrion LLC.
*/
package com.flickr4java.flickr.photos.notes;
import com.flickr4java.flickr.FlickrException;
import com.flickr4java.flickr.Response;
import com.flickr4java.flickr.Transport;
import com.flickr4java.flickr.photos.Note;
import org.w3c.dom.Element;
import java.awt.Rectangle;
import java.util.HashMap;
import java.util.Map;
/**
* @author Anthony Eden
*/
public class NotesInterface {
public static final String METHOD_ADD = "flickr.photos.notes.add";
public static final String METHOD_DELETE = "flickr.photos.notes.delete";
public static final String METHOD_EDIT = "flickr.photos.notes.edit";
private String apiKey;
private String sharedSecret;
private Transport transportAPI;
public NotesInterface(String apiKey, String sharedSecret, Transport transportAPI) {
this.apiKey = apiKey;
this.sharedSecret = sharedSecret;
this.transportAPI = transportAPI;
}
/**
* Add a note to a photo. The Note object bounds and text must be specified.
*
* @param photoId
* The photo ID
* @param note
* The Note object
* @return The updated Note object
*/
public Note add(String photoId, Note note) throws FlickrException {
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("method", METHOD_ADD);
parameters.put("photo_id", photoId);
Rectangle bounds = note.getBounds();
if (bounds != null) {
parameters.put("note_x", String.valueOf(bounds.x));
parameters.put("note_y", String.valueOf(bounds.y));
parameters.put("note_w", String.valueOf(bounds.width));
parameters.put("note_h", String.valueOf(bounds.height));
}
String text = note.getText();
if (text != null) {
parameters.put("note_text", text);
}
Response response = transportAPI.post(transportAPI.getPath(), parameters, apiKey, sharedSecret);
if (response.isError()) {
throw new FlickrException(response.getErrorCode(), response.getErrorMessage());
}
Element noteElement = response.getPayload();
note.setId(noteElement.getAttribute("id"));
return note;
}
/**
* Delete the specified note.
*
* @param noteId
* The node ID
* @throws FlickrException
*/
public void delete(String noteId) throws FlickrException {
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("method", METHOD_DELETE);
parameters.put("note_id", noteId);
Response response = transportAPI.post(transportAPI.getPath(), parameters, apiKey, sharedSecret);
if (response.isError()) {
throw new FlickrException(response.getErrorCode(), response.getErrorMessage());
}
}
/**
* Update a note.
*
* @param note
* The Note to update
* @throws FlickrException
*/
public void edit(Note note) throws FlickrException {
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("method", METHOD_EDIT);
parameters.put("note_id", note.getId());
Rectangle bounds = note.getBounds();
if (bounds != null) {
parameters.put("note_x", String.valueOf(bounds.x));
parameters.put("note_y", String.valueOf(bounds.y));
parameters.put("note_w", String.valueOf(bounds.width));
parameters.put("note_h", String.valueOf(bounds.height));
}
String text = note.getText();
if (text != null) {
parameters.put("note_text", text);
}
Response response = transportAPI.post(transportAPI.getPath(), parameters, apiKey, sharedSecret);
if (response.isError()) {
throw new FlickrException(response.getErrorCode(), response.getErrorMessage());
}
}
}