package com.flickr4java.flickr.photos;
/**
* Represents either a photo pool or a photo set with it's id and title. Instances of this class are distinguished as set or pool by their <em>kind</em>
* property. There are two possible kinds represented as public int constants:
* <ul>
* <li>SET this is a photo set</li>
* <li>POOL this is a groups photo pool</li>
* </ul>
*
* @author till (Till Krech) flickr:extranoise
* @version $Id: PhotoPlace.java,v 1.3 2009/07/12 22:43:07 x-mago Exp $
*/
public class PhotoPlace {
public static final int SET = 1;
public static final int POOL = 2;
private String id;
private int kind;
private String title;
/**
* creates a new one.
*
* @param kind
* either SET or POOL
* @param id
* id of the pool or set
* @param title
* name of the pool or set
* @throws IllegalArgumentException
* if kind is invalid
*/
public PhotoPlace(int kind, String id, String title) {
setKind(kind);
this.id = id;
this.title = title;
}
/**
* creates a new one where the kind may be specified as String "set" or "pool"
*
* @param kind
* either "set" or "pool"
* @param id
* id of the pool or set
* @param title
* name of the pool or set
* @throws IllegalArgumentException
* if kind is invalid
*/
public PhotoPlace(String kind, String id, String title) {
setKind(kind);
this.id = id;
this.title = title;
}
/**
* @return the pool or set id
*/
public String getId() {
return id;
}
/**
* @return what I am
*/
public int getKind() {
return kind;
}
protected void setKind(int kind) {
this.kind = kind;
}
protected void setKind(String kindStr) {
if ("pool".equalsIgnoreCase(kindStr)) {
setKind(POOL);
} else if ("set".equalsIgnoreCase(kindStr)) {
setKind(SET);
} else {
throw new IllegalArgumentException("Invalid kind [" + kindStr + "]");
}
}
/**
* @return the name of the pool or set
*/
public String getTitle() {
return title;
}
/**
* @return what I am as String
*/
public String getKindAsString() {
String s;
switch (kind) {
case SET:
s = "set";
break;
case POOL:
s = "pool";
break;
default:
s = "unknown(" + kind + ")";
break;
}
return s;
}
/**
* compares this to another object. Makes is possible to put PhotPlaces into a Java Set.
*/
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (obj == this) {
return true;
}
if (!(obj instanceof PhotoPlace)) {
return false;
}
PhotoPlace other = (PhotoPlace) obj;
if (other.kind != kind) {
return false;
}
if (this.id != null) {
if (!this.id.equals(other.id)) {
return false;
}
} else if (other.id != null) {
return false;
}
if (this.title != null) {
if (!this.title.equals(other.title)) {
return false;
}
} else if (other.title != null) {
return false;
}
return true;
}
/**
* primitive hashCode. Makes is possible to put PhotPlaces into a Java Set.
*/
public int hashCode() {
return id != null ? id.hashCode() : 0;
}
/**
* returns a human readable but ugly representation of this object
*/
public String toString() {
return getClass().getName() + "[" + getKindAsString() + " id=\"" + id + "\" title=\"" + title + "\"]";
}
}