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; } }