package com.partynetwork.iparty.app.entities;
import java.util.Date;
import com.lidroid.xutils.db.annotation.Column;
import com.lidroid.xutils.db.annotation.Table;
import com.partynetwork.dataprovider.util.TimeUtil;
import com.partynetwork.iparty.imessage.OpenfireConstant;
import android.os.Parcel;
import android.os.Parcelable;
/**
* 消息实体
*
* @author DongCeMedia
*
*/
@Table(name = "imessage")
// 建议加上注解, 混淆后表名不受影响
public class IMessage extends EntityBase implements Parcelable,
Comparable<IMessage> {
public static final String IMMESSAGE_KEY = "imessage.key";
public static final String KEY_TIME = "imessage.time";
public static final String CONTENT_TYPE = "imessage.type";
public static final int TEXT = 0;
public static final int PICTURE = 1;
public static final int VOICE = 2;
@Column(column = "msg_content")
private String content; // 内容
@Column(column = "msg_contentType")
private int contentType; // 内容类别 0:文本;1:图片;2:音频
@Column(column = "msg_withUser")
private String withUser; // 聊天用户
@Column(column = "msg_isCome")
private int isCome; // 是否是收到的消息
@Column(column = "msg_time")
private String time; // 消息时间
@Column(column = "msg_voiceTime")
private int voiceTime; // 语音时长
@Column(column = "msg_needTime")
private int needTime = 0; // 是否显示时间
@Column(column = "msg_state")
private int state; // 消息状态 -1:失败;0:未读;1:已读
public IMessage() {
this.state = 0;
}
public int getState() {
return state;
}
public void setState(int state) {
this.state = state;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public int getContentType() {
return contentType;
}
public void setContentType(int contentType) {
this.contentType = contentType;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public int getVoiceTime() {
return voiceTime;
}
public void setVoiceTime(int voiceTime) {
this.voiceTime = voiceTime;
}
public String getWithUser() {
return withUser;
}
public void setWithUser(String withUser) {
this.withUser = withUser;
}
public int getIsCome() {
return isCome;
}
public void setIsCome(int isCome) {
this.isCome = isCome;
}
public int getNeedTime() {
return needTime;
}
public void setNeedTime(int needTime) {
this.needTime = needTime;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(state);
dest.writeString(content);
dest.writeInt(contentType);
dest.writeString(time);
dest.writeInt(voiceTime);
dest.writeString(withUser);
dest.writeInt(isCome);
dest.writeInt(needTime);
}
public static final Parcelable.Creator<IMessage> CREATOR = new Parcelable.Creator<IMessage>() {
@Override
public IMessage createFromParcel(Parcel source) {
IMessage message = new IMessage();
message.setState(source.readInt());
message.setContent(source.readString());
message.setContentType(source.readInt());
message.setTime(source.readString());
message.setVoiceTime(source.readInt());
message.setWithUser(source.readString());
message.setIsCome(source.readInt());
message.setNeedTime(source.readInt());
return message;
}
@Override
public IMessage[] newArray(int size) {
return new IMessage[size];
}
};
/**
* 新消息的构造方法.
*
* @param content
* @param time
*/
public IMessage(String content, int contentType, String withUser,
String time) {
super();
this.content = content;
this.contentType = contentType;
this.withUser = withUser;
this.time = time;
}
/**
* shimiso 按时间降序排列
*/
@Override
public int compareTo(IMessage oth) {
if (null == this.getTime() || null == oth.getTime()) {
return 0;
}
String format = null;
String time1 = "";
String time2 = "";
if (this.getTime().length() == oth.getTime().length()
&& this.getTime().length() == 23) {
time1 = this.getTime();
time2 = oth.getTime();
format = OpenfireConstant.MS_FORMART;
} else {
time1 = this.getTime().substring(0, 18);
time2 = oth.getTime().substring(0, 18);
}
Date da1 = TimeUtil.str2Date(time1, format);
Date da2 = TimeUtil.str2Date(time2, format);
if (da1.before(da2)) {
return -1;
}
if (da2.before(da1)) {
return 1;
}
return 0;
}
}