home-school-contact-app/文档/Android/app/src/main/java/com/example/nanchen/aiyaschoolpush/db/DemoDBManager.java

310 lines
14 KiB
Java

package com.example.nanchen.aiyaschoolpush.db;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.example.nanchen.aiyaschoolpush.im.Constant;
import com.example.nanchen.aiyaschoolpush.im.InviteMesageStatus;
import com.example.nanchen.aiyaschoolpush.im.InviteMessage;
import com.hyphenate.easeui.domain.EaseUser;
import com.hyphenate.easeui.utils.EaseCommonUtils;
import com.example.nanchen.aiyaschoolpush.App;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
public class DemoDBManager {
static private DemoDBManager dbMgr = new DemoDBManager();
private com.example.nanchen.aiyaschoolpush.db.DbOpenHelper dbHelper;
private DemoDBManager(){
dbHelper = com.example.nanchen.aiyaschoolpush.db.DbOpenHelper.getInstance(App.getInstance().getApplicationContext());
}
public static synchronized DemoDBManager getInstance(){
if(dbMgr == null){
dbMgr = new DemoDBManager();
}
return dbMgr;
}
/**
* save contact list
*
* @param contactList
*/
synchronized public void saveContactList(List<EaseUser> contactList) {
SQLiteDatabase db = dbHelper.getWritableDatabase();
if (db.isOpen()) {
db.delete(com.example.nanchen.aiyaschoolpush.db.UserDao.TABLE_NAME, null, null);
for (EaseUser user : contactList) {
ContentValues values = new ContentValues();
values.put(com.example.nanchen.aiyaschoolpush.db.UserDao.COLUMN_NAME_ID, user.getUsername());
if(user.getNick() != null)
values.put(com.example.nanchen.aiyaschoolpush.db.UserDao.COLUMN_NAME_NICK, user.getNick());
if(user.getAvatar() != null)
values.put(com.example.nanchen.aiyaschoolpush.db.UserDao.COLUMN_NAME_AVATAR, user.getAvatar());
db.replace(com.example.nanchen.aiyaschoolpush.db.UserDao.TABLE_NAME, null, values);
}
}
}
/**
* get contact list
*
* @return
*/
synchronized public Map<String, EaseUser> getContactList() {
SQLiteDatabase db = dbHelper.getReadableDatabase();
Map<String, EaseUser> users = new Hashtable<String, EaseUser>();
if (db.isOpen()) {
Cursor cursor = db.rawQuery("select * from " + com.example.nanchen.aiyaschoolpush.db.UserDao.TABLE_NAME /* + " desc" */, null);
while (cursor.moveToNext()) {
String username = cursor.getString(cursor.getColumnIndex(com.example.nanchen.aiyaschoolpush.db.UserDao.COLUMN_NAME_ID));
String nick = cursor.getString(cursor.getColumnIndex(com.example.nanchen.aiyaschoolpush.db.UserDao.COLUMN_NAME_NICK));
String avatar = cursor.getString(cursor.getColumnIndex(com.example.nanchen.aiyaschoolpush.db.UserDao.COLUMN_NAME_AVATAR));
EaseUser user = new EaseUser(username);
user.setNick(nick);
user.setAvatar(avatar);
if (username.equals(Constant.NEW_FRIENDS_USERNAME) || username.equals(Constant.GROUP_USERNAME)
|| username.equals(Constant.CHAT_ROOM)|| username.equals(Constant.CHAT_ROBOT)) {
user.setInitialLetter("");
} else {
EaseCommonUtils.setUserInitialLetter(user);
}
users.put(username, user);
}
cursor.close();
}
return users;
}
/**
* delete a contact
* @param username
*/
synchronized public void deleteContact(String username){
SQLiteDatabase db = dbHelper.getWritableDatabase();
if(db.isOpen()){
db.delete(com.example.nanchen.aiyaschoolpush.db.UserDao.TABLE_NAME, com.example.nanchen.aiyaschoolpush.db.UserDao.COLUMN_NAME_ID + " = ?", new String[]{username});
}
}
/**
* save a contact
* @param user
*/
synchronized public void saveContact(EaseUser user){
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(com.example.nanchen.aiyaschoolpush.db.UserDao.COLUMN_NAME_ID, user.getUsername());
if(user.getNick() != null)
values.put(com.example.nanchen.aiyaschoolpush.db.UserDao.COLUMN_NAME_NICK, user.getNick());
if(user.getAvatar() != null)
values.put(com.example.nanchen.aiyaschoolpush.db.UserDao.COLUMN_NAME_AVATAR, user.getAvatar());
if(db.isOpen()){
db.replace(com.example.nanchen.aiyaschoolpush.db.UserDao.TABLE_NAME, null, values);
}
}
public void setDisabledGroups(List<String> groups){
setList(com.example.nanchen.aiyaschoolpush.db.UserDao.COLUMN_NAME_DISABLED_GROUPS, groups);
}
public List<String> getDisabledGroups(){
return getList(com.example.nanchen.aiyaschoolpush.db.UserDao.COLUMN_NAME_DISABLED_GROUPS);
}
public void setDisabledIds(List<String> ids){
setList(com.example.nanchen.aiyaschoolpush.db.UserDao.COLUMN_NAME_DISABLED_IDS, ids);
}
public List<String> getDisabledIds(){
return getList(com.example.nanchen.aiyaschoolpush.db.UserDao.COLUMN_NAME_DISABLED_IDS);
}
synchronized private void setList(String column, List<String> strList){
StringBuilder strBuilder = new StringBuilder();
for(String hxid:strList){
strBuilder.append(hxid).append("$");
}
SQLiteDatabase db = dbHelper.getWritableDatabase();
if (db.isOpen()) {
ContentValues values = new ContentValues();
values.put(column, strBuilder.toString());
db.update(com.example.nanchen.aiyaschoolpush.db.UserDao.PREF_TABLE_NAME, values, null,null);
}
}
synchronized private List<String> getList(String column){
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cursor = db.rawQuery("select " + column + " from " + com.example.nanchen.aiyaschoolpush.db.UserDao.PREF_TABLE_NAME,null);
if (!cursor.moveToFirst()) {
cursor.close();
return null;
}
String strVal = cursor.getString(0);
if (strVal == null || strVal.equals("")) {
return null;
}
cursor.close();
String[] array = strVal.split("$");
if(array.length > 0){
List<String> list = new ArrayList<String>();
Collections.addAll(list, array);
return list;
}
return null;
}
/**
* save a message
* @param message
* @return return cursor of the message
*/
public synchronized Integer saveMessage(InviteMessage message){
SQLiteDatabase db = dbHelper.getWritableDatabase();
int id = -1;
if(db.isOpen()){
ContentValues values = new ContentValues();
values.put(com.example.nanchen.aiyaschoolpush.db.InviteMessgeDao.COLUMN_NAME_FROM, message.getFrom());
values.put(com.example.nanchen.aiyaschoolpush.db.InviteMessgeDao.COLUMN_NAME_GROUP_ID, message.getGroupId());
values.put(com.example.nanchen.aiyaschoolpush.db.InviteMessgeDao.COLUMN_NAME_GROUP_Name, message.getGroupName());
values.put(com.example.nanchen.aiyaschoolpush.db.InviteMessgeDao.COLUMN_NAME_REASON, message.getReason());
values.put(com.example.nanchen.aiyaschoolpush.db.InviteMessgeDao.COLUMN_NAME_TIME, message.getTime());
values.put(com.example.nanchen.aiyaschoolpush.db.InviteMessgeDao.COLUMN_NAME_STATUS, message.getStatus().ordinal());
values.put(com.example.nanchen.aiyaschoolpush.db.InviteMessgeDao.COLUMN_NAME_GROUPINVITER, message.getGroupInviter());
db.insert(com.example.nanchen.aiyaschoolpush.db.InviteMessgeDao.TABLE_NAME, null, values);
Cursor cursor = db.rawQuery("select last_insert_rowid() from " + com.example.nanchen.aiyaschoolpush.db.InviteMessgeDao.TABLE_NAME,null);
if(cursor.moveToFirst()){
id = cursor.getInt(0);
}
cursor.close();
}
return id;
}
/**
* update message
* @param msgId
* @param values
*/
synchronized public void updateMessage(int msgId,ContentValues values){
SQLiteDatabase db = dbHelper.getWritableDatabase();
if(db.isOpen()){
db.update(com.example.nanchen.aiyaschoolpush.db.InviteMessgeDao.TABLE_NAME, values, com.example.nanchen.aiyaschoolpush.db.InviteMessgeDao.COLUMN_NAME_ID + " = ?", new String[]{String.valueOf(msgId)});
}
}
/**
* get messges
* @return
*/
synchronized public List<InviteMessage> getMessagesList(){
SQLiteDatabase db = dbHelper.getReadableDatabase();
List<InviteMessage> msgs = new ArrayList<InviteMessage>();
if(db.isOpen()){
Cursor cursor = db.rawQuery("select * from " + com.example.nanchen.aiyaschoolpush.db.InviteMessgeDao.TABLE_NAME + " desc",null);
while(cursor.moveToNext()){
InviteMessage msg = new InviteMessage();
int id = cursor.getInt(cursor.getColumnIndex(com.example.nanchen.aiyaschoolpush.db.InviteMessgeDao.COLUMN_NAME_ID));
String from = cursor.getString(cursor.getColumnIndex(com.example.nanchen.aiyaschoolpush.db.InviteMessgeDao.COLUMN_NAME_FROM));
String groupid = cursor.getString(cursor.getColumnIndex(com.example.nanchen.aiyaschoolpush.db.InviteMessgeDao.COLUMN_NAME_GROUP_ID));
String groupname = cursor.getString(cursor.getColumnIndex(com.example.nanchen.aiyaschoolpush.db.InviteMessgeDao.COLUMN_NAME_GROUP_Name));
String reason = cursor.getString(cursor.getColumnIndex(com.example.nanchen.aiyaschoolpush.db.InviteMessgeDao.COLUMN_NAME_REASON));
long time = cursor.getLong(cursor.getColumnIndex(com.example.nanchen.aiyaschoolpush.db.InviteMessgeDao.COLUMN_NAME_TIME));
int status = cursor.getInt(cursor.getColumnIndex(com.example.nanchen.aiyaschoolpush.db.InviteMessgeDao.COLUMN_NAME_STATUS));
String groupInviter = cursor.getString(cursor.getColumnIndex(com.example.nanchen.aiyaschoolpush.db.InviteMessgeDao.COLUMN_NAME_GROUPINVITER));
msg.setId(id);
msg.setFrom(from);
msg.setGroupId(groupid);
msg.setGroupName(groupname);
msg.setReason(reason);
msg.setTime(time);
msg.setGroupInviter(groupInviter);
if(status == InviteMesageStatus.BEINVITEED.ordinal())
msg.setStatus(InviteMesageStatus.BEINVITEED);
else if(status == InviteMesageStatus.BEAGREED.ordinal())
msg.setStatus(InviteMesageStatus.BEAGREED);
else if(status == InviteMesageStatus.BEREFUSED.ordinal())
msg.setStatus(InviteMesageStatus.BEREFUSED);
else if(status == InviteMesageStatus.AGREED.ordinal())
msg.setStatus(InviteMesageStatus.AGREED);
else if(status == InviteMesageStatus.REFUSED.ordinal())
msg.setStatus(InviteMesageStatus.REFUSED);
else if(status == InviteMesageStatus.BEAPPLYED.ordinal())
msg.setStatus(InviteMesageStatus.BEAPPLYED);
else if(status == InviteMesageStatus.GROUPINVITATION.ordinal())
msg.setStatus(InviteMesageStatus.GROUPINVITATION);
else if(status == InviteMesageStatus.GROUPINVITATION_ACCEPTED.ordinal())
msg.setStatus(InviteMesageStatus.GROUPINVITATION_ACCEPTED);
else if(status == InviteMesageStatus.GROUPINVITATION_DECLINED.ordinal())
msg.setStatus(InviteMesageStatus.GROUPINVITATION_DECLINED);
msgs.add(msg);
}
cursor.close();
}
return msgs;
}
/**
* delete invitation message
* @param from
*/
synchronized public void deleteMessage(String from){
SQLiteDatabase db = dbHelper.getWritableDatabase();
if(db.isOpen()){
db.delete(com.example.nanchen.aiyaschoolpush.db.InviteMessgeDao.TABLE_NAME, com.example.nanchen.aiyaschoolpush.db.InviteMessgeDao.COLUMN_NAME_FROM + " = ?", new String[]{from});
}
}
synchronized int getUnreadNotifyCount(){
int count = 0;
SQLiteDatabase db = dbHelper.getReadableDatabase();
if(db.isOpen()){
Cursor cursor = db.rawQuery("select " + com.example.nanchen.aiyaschoolpush.db.InviteMessgeDao.COLUMN_NAME_UNREAD_MSG_COUNT + " from " + com.example.nanchen.aiyaschoolpush.db.InviteMessgeDao.TABLE_NAME, null);
if(cursor.moveToFirst()){
count = cursor.getInt(0);
}
cursor.close();
}
return count;
}
synchronized void setUnreadNotifyCount(int count){
SQLiteDatabase db = dbHelper.getWritableDatabase();
if(db.isOpen()){
ContentValues values = new ContentValues();
values.put(com.example.nanchen.aiyaschoolpush.db.InviteMessgeDao.COLUMN_NAME_UNREAD_MSG_COUNT, count);
db.update(com.example.nanchen.aiyaschoolpush.db.InviteMessgeDao.TABLE_NAME, values, null,null);
}
}
synchronized public void closeDB(){
if(dbHelper != null){
dbHelper.closeDB();
}
dbMgr = null;
}
}