package com.easemob.chatuidemo.db;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.parttime.pojo.MessageSet;
import java.util.LinkedHashMap;
import java.util.Map;
/**
*
* Created by luhua on 15/7/15.
*/
public class MessageSetDao {
public static final String TABLE_NAME = "message_set";
public static final String ID = "id";
//群组或者联系人的name 也是唯一的
public static final String COLUMN_NAME = "name";
//区分群聊或者联系人
public static final String COLUMN_TYPE = "type";
//是否置顶 1:置顶;0: 不置顶
public static final String COLUMN_TOP = "is_top";
//创建时间 用来做置顶排序
public static final String COLUMN_TIME = "create_time";
private DbOpenHelper dbHelper;
public MessageSetDao(Context context) {
dbHelper = DbOpenHelper.getInstance(context);
}
/**
* 保存消息列表的设置
*
* @param messageSet MessageSet
*/
public long save(MessageSet messageSet) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
if (db.isOpen()) {
ContentValues values = new ContentValues();
values.put(COLUMN_NAME, messageSet.name);
values.put(COLUMN_TYPE, messageSet.type);
values.put(COLUMN_TOP, messageSet.isTop ? 1 : 0);
values.put(COLUMN_TIME, messageSet.createTime);
return db.replace(TABLE_NAME, null, values);
}
return 0L;
}
/**
* 删除一个消息置顶设置
* @param name String
* @param type String
*/
public void delete(String name, String type){
SQLiteDatabase db = dbHelper.getWritableDatabase();
if(db.isOpen()){
db.delete(TABLE_NAME,
COLUMN_NAME + " = ? and " + COLUMN_TYPE + " = ? " ,
new String[]{name, type});
}
}
/**
* 获取消息置顶设置list
*
* @return Map<String, MessageSet>
*/
public Map<String, MessageSet> getMessageSetList() {
SQLiteDatabase db = dbHelper.getReadableDatabase();
//保证存放元素的顺序
Map<String, MessageSet> messageSetMap = new LinkedHashMap<>();
if (db.isOpen()) {
Cursor cursor = db.rawQuery("select * from " + TABLE_NAME + " order by " + COLUMN_TIME, null);
try {
while (cursor.moveToNext()) {
int id = cursor.getInt(cursor.getColumnIndex(ID));
String name = cursor.getString(cursor.getColumnIndex(COLUMN_NAME));
String type = cursor.getString(cursor.getColumnIndex(COLUMN_TYPE));
int isTop = cursor.getInt(cursor.getColumnIndex(COLUMN_TOP));
long createTime = cursor.getLong(cursor.getColumnIndex(COLUMN_TIME));
MessageSet messageSet = new MessageSet();
messageSet.id = id;
messageSet.name = name;
messageSet.type = type;
messageSet.isTop = isTop == 1;
messageSet.createTime = createTime;
messageSetMap.put(name, messageSet);
}
} finally {
cursor.close();
}
}
return messageSetMap;
}
/**
* 获取消息置顶设置list
*
* @return Map<String, MessageSet>
*/
public MessageSet getMessageSet(String name, String type) {
SQLiteDatabase db = dbHelper.getReadableDatabase();
if (db.isOpen()) {
Cursor cursor = db.rawQuery("select * from " + TABLE_NAME + " where " + COLUMN_NAME + " = ? and " + COLUMN_TYPE + " = ? ",
new String[]{name, type});
try {
if (cursor.moveToNext()) {
int id = cursor.getInt(cursor.getColumnIndex(ID));
String n = cursor.getString(cursor.getColumnIndex(COLUMN_NAME));
String t = cursor.getString(cursor.getColumnIndex(COLUMN_TYPE));
int isTop = cursor.getInt(cursor.getColumnIndex(COLUMN_TOP));
long createTime = cursor.getLong(cursor.getColumnIndex(COLUMN_TIME));
MessageSet messageSet = new MessageSet();
messageSet.id = id;
messageSet.name = n;
messageSet.type = t;
messageSet.isTop = isTop == 1;
messageSet.createTime = createTime;
return messageSet;
}
} finally {
cursor.close();
}
}
return null;
}
}