package net.coding.program.common;
import net.coding.program.model.Maopao;
import net.coding.program.model.TaskObject;
import net.coding.program.model.TopicObject;
import java.util.HashMap;
/**
* Created by chaochen on 15/1/27.
*/
public class CommentBackup {
public enum Type {
Maopao, Topic, Task
}
public static class BackupParam {
Type type;
int id;
int owner_id;
public BackupParam(Type type, int id, int owner_id) {
this.type = type;
this.id = id;
this.owner_id = owner_id;
}
public static BackupParam create(Object object) {
if (object == null) {
return null;
}
if (object instanceof Maopao.Comment) {
Maopao.Comment maopaoComment = (Maopao.Comment) object;
int ownerId = maopaoComment.owner_id;
if (maopaoComment.id == 0) { // 表示直接回复冒泡,没有@某人
ownerId = 0;
}
return new BackupParam(Type.Maopao, maopaoComment.tweet_id, ownerId);
} else if (object instanceof TopicObject) {
TopicObject topicObject = (TopicObject) object;
int parentId = topicObject.parent_id;
if (parentId == 0) {
parentId = topicObject.id;
}
return new BackupParam(Type.Topic, parentId, topicObject.owner_id);
} else if (object instanceof TaskObject.TaskComment) {
TaskObject.TaskComment comment = (TaskObject.TaskComment) object;
return new BackupParam(Type.Task, comment.taskId, comment.owner_id);
} else if (object instanceof BackupParam) {
return (BackupParam) object;
}
return null;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof BackupParam)) return false;
BackupParam param = (BackupParam) o;
if (id != param.id) return false;
if (owner_id != param.owner_id) return false;
if (type != param.type) return false;
return true;
}
@Override
public int hashCode() {
int result = type.hashCode();
result = 31 * result + id;
result = 31 * result + owner_id;
return result;
}
}
private CommentBackup() {
}
private static CommentBackup sCommentBackup;
public static CommentBackup getInstance() {
if (sCommentBackup == null) {
sCommentBackup = new CommentBackup();
}
return sCommentBackup;
}
private HashMap<BackupParam, String> mData = new HashMap();
public void save(BackupParam param, String comment) {
mData.put(param, comment);
}
public String load(BackupParam param) {
String comment = mData.get(param);
if (comment == null) {
comment = "";
}
return comment;
}
public void delete(BackupParam param) {
mData.remove(param);
}
}