/*
* Copyright (c) 2005 Aetrion LLC.
*/
package com.googlecode.flickr2twitter.com.aetrion.flickr.auth;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
/**
* Enum class for Permissions defined for auth results.
*
* @author Anthony Eden
*/
public class Permission implements Serializable {
/**
*
*/
private static final long serialVersionUID = -5384461370301078353L;
/**
* Type value for no permissions
* If no permissions are requested, the application will only display public photos.
*/
public static final int NONE_TYPE = 0;
/**
* Type value for Read Permission.
* You will be able to see all your photos via the application.
* (This includes your private photos.)
*/
public static final int READ_TYPE = 1;
/**
* Type value for Write Permission (and Read).
* You will be able to see all your photos, upload new photos,
* and add, edit or delete photo metadata (titles, descriptions, tags, etc.).
*/
public static final int WRITE_TYPE = 2;
/**
* Type value for Delete Permission (and Write, Read).
* You are able to delete Flickr photos via the application.
*/
public static final int DELETE_TYPE = 3;
/**
* No permissions.
* If no permissions are requested, the application will only display public photos.
*/
public static final Permission NONE = new Permission(NONE_TYPE);
/**
* Read Permission.
* You will be able to see all your photos via the application.
* (This includes your private photos.)
*/
public static final Permission READ = new Permission(READ_TYPE);
/**
* Write (and Read).
* You will be able to see all your photos, upload new photos,
* and add, edit or delete photo metadata (titles, descriptions, tags, etc.).
*/
public static final Permission WRITE = new Permission(WRITE_TYPE);
/**
* Delete (and Write, Read).
* You are able to delete Flickr photos via the application.
*/
public static final Permission DELETE = new Permission(DELETE_TYPE);
private static final Map<String, Permission> stringToPermissionMap = new HashMap<String, Permission>();
static {
stringToPermissionMap.put("none", NONE);
stringToPermissionMap.put("read", READ);
stringToPermissionMap.put("write", WRITE);
stringToPermissionMap.put("delete", DELETE);
}
private int type;
private Permission(int type) {
this.type = type;
}
public int getType() {
return type;
}
/**
* Convert the permission String to a Permission object.
*
* @param permission The permission String
* @return The Permission object
*/
public static Permission fromString(String permission) {
return (Permission) stringToPermissionMap.get(permission.toLowerCase());
}
public String toString() {
switch (type) {
case NONE_TYPE: return "none";
case READ_TYPE: return "read";
case WRITE_TYPE: return "write";
case DELETE_TYPE: return "delete";
default:
throw new IllegalStateException("Unsupported type: " + type);
}
}
}