/**
* $id$
* Copyright 2011-2012 Renren Inc. All rights reserved.
*/
package com.renren.api.connect.android.photos;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
import com.renren.api.connect.android.photos.AlbumBean;
import com.renren.api.connect.android.photos.AlbumPrivacyType;
import com.renren.api.connect.android.photos.AlbumType;
import com.renren.api.connect.android.photos.PhotoBean;
/**
* 相册实体bean的封装
*
* 注:此类不继承ResponseBean
*
* @author sunting ting.sun@renren-inc.com
*
*/
public class AlbumBean implements Parcelable {
/**
* 字段常量
*/
private static final String KEY_AID = "aid";
private static final String KEY_URL = "url";
private static final String KEY_UID = "uid";
private static final String KEY_NAME = "name";
private static final String KEY_CREATE_TIME = "createTime";
private static final String KEY_UPDATE_TIME = "updateTime";
private static final String KEY_DESCRIPTION = "description";
private static final String KEY_LOCATION = "location";
private static final String KEY_SIZE = "size";
private static final String KEY_VISIBLE = "visible";
private static final String KEY_COMMENT_COUNT = "commentCount";
private static final String KEY_TYPE = "type";
@SuppressWarnings("unused")
private static final String KEY_PHOTOS = "photos";
/**
* 相册id
*/
private long aid;
/**
* 相册封面的图片地址
*/
private String url;
/**
* 相册所有者的id
*/
private long uid;
/**
* 相册的名字
*/
private String name;
/**
* 相册的创建时间
*/
private Date createTime;
/**
* 相册的更新时间
*/
private Date updateTime;
/**
* 相册的描述
*/
private String description;
/**
* 相册的拍摄地点
*/
private String location;
/**
* 相册中照片的数量
*/
private int size;
/**
* 相册的隐私设置 注:创建相册API不支持设置密码功能,即visible为4无效,默认为EVERYONE(99)
*/
private AlbumPrivacyType visible = AlbumPrivacyType.EVERYONE;
/**
* 相册的评论数量
*/
private int commentCount;
/**
* 相册的类型
*/
private AlbumType type;
/**
* 相册中的所有照片
*/
private List<PhotoBean> photos = new ArrayList<PhotoBean>();
public AlbumBean() {
}
public AlbumBean(long aid) {
this.aid = aid;
}
public long getAid() {
return aid;
}
public void setAid(long aid) {
this.aid = aid;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public long getUid() {
return uid;
}
public void setUid(long uid) {
this.uid = uid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public AlbumPrivacyType getVisible() {
return visible;
}
public void setVisible(AlbumPrivacyType visible) {
this.visible = visible;
}
public int getCommentCount() {
return commentCount;
}
public void setCommentCount(int commentCount) {
this.commentCount = commentCount;
}
public AlbumType getType() {
return type;
}
public void setType(AlbumType type) {
this.type = type;
}
public List<PhotoBean> getPhotos() {
return photos;
}
public void setPhotos(List<PhotoBean> photos) {
this.photos = photos;
}
public void addPhoto(PhotoBean photo) {
photos.add(photo);
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
sb.append(KEY_AID).append(" = ").append(aid).append("\r\n");
sb.append(KEY_URL).append(" = ").append(url).append("\r\n");
sb.append(KEY_UID).append(" = ").append(uid).append("\r\n");
sb.append(KEY_NAME).append(" = ").append(name).append("\r\n");
sb.append(KEY_CREATE_TIME).append(" = ").append(sdf.format(createTime))
.append("\r\n");
sb.append(KEY_UPDATE_TIME).append(" = ").append(sdf.format(updateTime))
.append("\r\n");
sb.append(KEY_DESCRIPTION).append(" = ").append(description)
.append("\r\n");
sb.append(KEY_LOCATION).append(" = ").append(location).append("\r\n");
sb.append(KEY_SIZE).append(" = ").append(size).append("\r\n");
sb.append(KEY_VISIBLE).append(" = ").append(visible.getNames())
.append("\r\n");
sb.append(KEY_COMMENT_COUNT).append(" = ").append(commentCount)
.append("\r\n");
sb.append(KEY_TYPE).append(" = ").append(type.getNames())
.append("\r\n");
return sb.toString();
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
Bundle bundle = new Bundle();
if (aid != 0) {
bundle.putLong(KEY_AID, aid);
}
if (url != null) {
bundle.putString(KEY_URL, url);
}
if (uid != 0) {
bundle.putLong(KEY_UID, uid);
}
if (name != null) {
bundle.putString(KEY_NAME, name);
}
if (createTime != null) {
bundle.putSerializable(KEY_CREATE_TIME, createTime);
}
if (updateTime != null) {
bundle.putSerializable(KEY_UPDATE_TIME, updateTime);
}
if (description != null) {
bundle.putString(KEY_DESCRIPTION, description);
}
if (location != null) {
bundle.putString(KEY_LOCATION, location);
}
bundle.putInt(KEY_SIZE, size);
bundle.putInt(KEY_COMMENT_COUNT, commentCount);
bundle.putInt(KEY_VISIBLE, visible.getOunces());
if (type != null) {
bundle.putInt(KEY_TYPE, type.getOunces());
}
dest.writeBundle(bundle);
dest.writeTypedList(photos);
}
public static final Parcelable.Creator<AlbumBean> CREATOR = new Parcelable.Creator<AlbumBean>() {
public AlbumBean createFromParcel(Parcel in) {
return new AlbumBean(in);
}
public AlbumBean[] newArray(int size) {
return new AlbumBean[size];
}
};
/**
* 序列化构造函数
*
* @param in
*/
public AlbumBean(Parcel in) {
Bundle bundle = in.readBundle();
in.readTypedList(photos, PhotoBean.CREATOR);
if (bundle.containsKey(KEY_AID)) {
aid = bundle.getLong(KEY_AID);
}
if (bundle.containsKey(KEY_URL)) {
url = bundle.getString(KEY_URL);
}
if (bundle.containsKey(KEY_UID)) {
uid = bundle.getLong(KEY_UID);
}
if (bundle.containsKey(KEY_NAME)) {
name = bundle.getString(KEY_NAME);
}
if (bundle.containsKey(KEY_CREATE_TIME)) {
createTime = (Date) bundle.getSerializable(KEY_CREATE_TIME);
}
if (bundle.containsKey(KEY_UPDATE_TIME)) {
updateTime = (Date) bundle.getSerializable(KEY_UPDATE_TIME);
}
if (bundle.containsKey(KEY_DESCRIPTION)) {
description = bundle.getString(KEY_DESCRIPTION);
}
if (bundle.containsKey(KEY_LOCATION)) {
location = bundle.getString(KEY_LOCATION);
}
size = bundle.getInt(KEY_SIZE);
commentCount = bundle.getInt(KEY_COMMENT_COUNT);
visible = AlbumPrivacyType.parse(bundle.getInt(KEY_VISIBLE));
if (bundle.containsKey(KEY_TYPE)) {
type = AlbumType.parse(bundle.getInt(KEY_TYPE));
}
}
}