package com.partynetwork.iparty.app.manager;
import java.util.ArrayList;
import java.util.List;
import com.lidroid.xutils.db.sqlite.Selector;
import com.lidroid.xutils.db.sqlite.WhereBuilder;
import com.lidroid.xutils.db.table.DbModel;
import com.lidroid.xutils.exception.DbException;
import com.partynetwork.iparty.app.entities.ChartHisBean;
import com.partynetwork.iparty.app.entities.IMessage;
import android.content.Context;
/**
*
* 消息管理
*
*/
public class MessageManager extends BaseManager {
private static MessageManager messageManager = null;
private MessageManager(Context context) {
super(context);
}
public static MessageManager getInstance(Context context) {
if (messageManager == null) {
messageManager = new MessageManager(context);
}
return messageManager;
}
/**
*
* 保存消息.
*
*/
public void saveIMessage(IMessage msg) {
try {
db.saveBindingId(msg);
} catch (DbException e) {
e.printStackTrace();
}
}
/**
*
* 更新消息.
*
*/
public void updataIMessage(IMessage msg) {
try {
db.update(msg);
} catch (DbException e) {
e.printStackTrace();
}
}
/**
*
* 更新状态.
*
*/
public void updateStatus(IMessage iMessage) {
try {
iMessage.setState(1);
db.update(iMessage, "msg_state");
} catch (DbException e) {
e.printStackTrace();
}
}
/**
* 跟新默认的所有记录
*
* @param to
*/
public void updateStatusByFrom(String from) {
List<IMessage> lists;
try {
lists = db.findAll(Selector.from(IMessage.class).where(
"msg_withUser", "=", from));
if (lists == null) {
return;
}
for (IMessage message : lists) {
if (message.getState() == 0) {
message.setState(1);
}
}
db.updateAll(lists, "msg_state");
} catch (DbException e) {
}
}
/**
*
* 查找与某人的聊天记录聊天记录
*
* @param pageNum
* 第几页
* @param pageSize
* 要查的记录条数
* @return
* @throws DbException
*/
public List<IMessage> getMessageListByFrom(String fromUser, int pageNum,
int pageSize) {
List<IMessage> list = new ArrayList<IMessage>();
try {
list = db.findAll(Selector.from(IMessage.class)
.where("msg_withUser", "=", fromUser).orderBy("id"));
} catch (DbException e) {
e.printStackTrace();
}
return list;
}
/**
*
* 查找与某人的聊天记录总数
*
* @throws DbException
*
*/
public long getChatCountWithSb(String fromUser) {
long result = 0;
try {
result = db.count(Selector.from(IMessage.class).where(
"msg_withUser", "=", fromUser));
} catch (DbException e) {
e.printStackTrace();
}
return result;
}
/**
* 删除与某人的聊天记录 author shimiso
*
* @param fromUser
*/
public void delChatHisWithSb(String fromUser) {
List<IMessage> list;
try {
list = db.findAll(Selector.from(IMessage.class).where(
"msg_withUser", "=", fromUser));
db.deleteAll(list);
} catch (DbException e) {
e.printStackTrace();
}
}
public void delLastChatWithSb(IMessage iMessage) {
try {
db.delete(iMessage);
} catch (DbException e) {
e.printStackTrace();
}
}
/**
* 获取最近聊天人聊天最后一条消息和未读消息总数
*
* @return
* @throws DbException
*/
public List<ChartHisBean> getRecentContactsWithLastMsg() {
List<ChartHisBean> list = new ArrayList<ChartHisBean>();
try {
List<DbModel> dbModels = db.findDbModelAll(Selector
.from(IMessage.class)
.groupBy("msg_withUser")
.select("msg_withUser", "max(msg_time) as msg_time",
"msg_content"));
if (dbModels == null) {
return list;
}
for (DbModel model : dbModels) {
ChartHisBean bean = new ChartHisBean();
bean.setFrom(model.getString("msg_withUser"));
bean.setNoticeTime(model.getString("msg_time"));
bean.setContent(model.getString("msg_content"));
bean.setNoticeSum((int) db.count(Selector
.from(IMessage.class)
.where("msg_state", "=", "0")
.and("msg_withUser", "=",
model.getString("msg_withUser"))));
bean.setNoticeType(ChartHisBean.CHAT_MSG);
list.add(bean);
}
} catch (DbException e) {
}
return list;
}
public void cleanManager() {
messageManager=null;
}
}