/** * Copyright (C) 2013-2014 EaseMob Technologies. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.ccxt.whl.db; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.text.TextUtils; import com.ccxt.whl.Constant; import com.ccxt.whl.domain.User; import com.ccxt.whl.utils.CommonUtils; import com.easemob.util.HanziToPinyin; public class UserDao { public static final String TABLE_NAME = "uers"; public static final String COLUMN_NAME_ID = "username"; public static final String COLUMN_NAME_NICK = "nick"; public static final String COLUMN_HEAD_PIC = "headpic"; public static final String COLUMN_NAME_IS_STRANGER = "is_stranger";//0是陌生人 2是好友 (1应该是关注的人,3是关注自己的) private DbOpenHelper dbHelper; public UserDao(Context context) { dbHelper = DbOpenHelper.getInstance(context); } /** * 保存陌生人list * * @param contactList */ public void saveContactList_m(List<User> contactList_m) { SQLiteDatabase db = dbHelper.getWritableDatabase(); if (db.isOpen()) { db.delete(TABLE_NAME, null, null); for (User user : contactList_m) { ContentValues values = new ContentValues(); values.put(COLUMN_NAME_ID, user.getUsername()); values.put(COLUMN_HEAD_PIC, user.getHeaderurl()); values.put(COLUMN_NAME_IS_STRANGER, "0");//0是陌生人 2是好友 if(user.getNick() != null) values.put(COLUMN_NAME_NICK, user.getNick()); db.insert(TABLE_NAME, null, values); } } } /** * 获取所有联系人list * 待做 * @return */ /*public Map<String, User> getContactList() { SQLiteDatabase db = dbHelper.getReadableDatabase(); Map<String, User> users = new HashMap<String, User>(); if (db.isOpen()) { Cursor cursor = db.rawQuery("select * from " + TABLE_NAME +"WHERE " + COLUMN_NAME_IS_STRANGER +"=2" + " desc" , null); while (cursor.moveToNext()) { String username = cursor.getString(cursor.getColumnIndex(COLUMN_NAME_ID)); String nick = cursor.getString(cursor.getColumnIndex(COLUMN_NAME_NICK)); User user = new User(); user.setUsername(username); user.setNick(nick); String headerName = null; if (!TextUtils.isEmpty(user.getNick())) { headerName = user.getNick(); } else { headerName = user.getUsername(); } if (username.equals(Constant.NEW_FRIENDS_USERNAME) || username.equals(Constant.GROUP_USERNAME)) { user.setHeader(""); } else if (Character.isDigit(headerName.charAt(0))) { user.setHeader("#"); } else { user.setHeader(HanziToPinyin.getInstance().get(headerName.substring(0, 1)) .get(0).target.substring(0, 1).toUpperCase()); char header = user.getHeader().toLowerCase().charAt(0); if (header < 'a' || header > 'z') { user.setHeader("#"); } } users.put(username, user); } cursor.close(); } return users; }*/ /** * 保存好友list * * @param contactList */ public void saveContactList(List<User> contactList) { SQLiteDatabase db = dbHelper.getWritableDatabase(); if (db.isOpen()) { db.delete(TABLE_NAME, null, null); for (User user : contactList) { ContentValues values = new ContentValues(); values.put(COLUMN_NAME_ID, user.getUsername()); values.put(COLUMN_HEAD_PIC, user.getHeaderurl()); values.put(COLUMN_NAME_IS_STRANGER, "2");//0是陌生人 2是好友 if(user.getNick() != null) values.put(COLUMN_NAME_NICK, user.getNick()); db.insert(TABLE_NAME, null, values); } } } /** * 获取好友list * * @return */ public Map<String, User> getContactList() { SQLiteDatabase db = dbHelper.getReadableDatabase(); Map<String, User> users = new HashMap<String, User>(); if (db.isOpen()) { Cursor cursor = db.rawQuery("select * from " + TABLE_NAME +" WHERE " + COLUMN_NAME_IS_STRANGER +" = '2' "/* + " desc" */, null); while (cursor.moveToNext()) { String username = cursor.getString(cursor.getColumnIndex(COLUMN_NAME_ID)); String nick = cursor.getString(cursor.getColumnIndex(COLUMN_NAME_NICK)); User user = new User(); user.setUsername(username); user.setNick(nick); String headerName = null; if (!TextUtils.isEmpty(user.getNick())) { headerName = user.getNick(); } else { headerName = user.getUsername(); } if (username.equals(Constant.NEW_FRIENDS_USERNAME) || username.equals(Constant.GROUP_USERNAME)) { user.setHeader(""); } else if (Character.isDigit(headerName.charAt(0))) { user.setHeader("#"); } else { user.setHeader(HanziToPinyin.getInstance().get(headerName.substring(0, 1)) .get(0).target.substring(0, 1).toUpperCase()); char header = user.getHeader().toLowerCase().charAt(0); if (header < 'a' || header > 'z') { user.setHeader("#"); } } users.put(username, user); } cursor.close(); } return users; } /** * 删除一个联系人 * @param username */ public void deleteContact(String username){ SQLiteDatabase db = dbHelper.getWritableDatabase(); if(db.isOpen()){ //System.out.println("==============================delete"+username); db.delete(TABLE_NAME, COLUMN_NAME_ID + " = ?", new String[]{username}); } } /** * 保存一个陌生人 * @param user */ public void saveContact_m(User user){ SQLiteDatabase db = dbHelper.getWritableDatabase(); ContentValues values = new ContentValues(); //User user_tmp = getUser(user.getUsername()); //判断是否有昵称和头像,有则删除原来的(这里没有判断原来是否存在) //if(!CommonUtils.isNullOrEmpty(user.getNick())){ if(!CommonUtils.isNullOrEmpty(user.getNick())&&!CommonUtils.isNullOrEmpty(user.getHeaderurl())){ db.delete(TABLE_NAME, COLUMN_NAME_ID + " = ?", new String[]{user.getUsername()}); //System.out.println("==============================delete"+user.getUsername()); values.put(COLUMN_NAME_ID, user.getUsername()); values.put(COLUMN_HEAD_PIC, user.getHeaderurl()); values.put(COLUMN_NAME_IS_STRANGER, "0");//0是陌生人 2是好友 values.put(COLUMN_NAME_NICK, user.getNick()); if(db.isOpen()){ db.insert(TABLE_NAME, null, values); } }else{ values.put(COLUMN_NAME_ID, user.getUsername()); values.put(COLUMN_HEAD_PIC, user.getHeaderurl()); values.put(COLUMN_NAME_IS_STRANGER, "0");//0是陌生人 2是好友 if(user.getNick() != null) values.put(COLUMN_NAME_NICK, user.getNick()); if(db.isOpen()){ db.insert(TABLE_NAME, null, values); } } } /** * 保存一个联系人 * @param user */ public void saveContact(User user){ SQLiteDatabase db = dbHelper.getWritableDatabase(); ContentValues values = new ContentValues(); //User user_tmp = getUser(user.getUsername()); //判断是否有昵称和头像,有则删除原来的(这里没有判断原来是否存在) //if(!CommonUtils.isNullOrEmpty(user.getNick())){ if(!CommonUtils.isNullOrEmpty(user.getNick())||!CommonUtils.isNullOrEmpty(user.getHeaderurl())){ db.delete(TABLE_NAME, COLUMN_NAME_ID + " = ?", new String[]{user.getUsername()}); values.put(COLUMN_NAME_ID, user.getUsername()); values.put(COLUMN_HEAD_PIC, user.getHeaderurl()); values.put(COLUMN_NAME_IS_STRANGER, "2");//0是陌生人 2是好友 values.put(COLUMN_NAME_NICK, user.getNick()); if(db.isOpen()){ db.insert(TABLE_NAME, null, values); } }else{ values.put(COLUMN_NAME_ID, user.getUsername()); values.put(COLUMN_HEAD_PIC, user.getHeaderurl()); values.put(COLUMN_NAME_IS_STRANGER, "2");//0是陌生人 2是好友 if(user.getNick() != null) values.put(COLUMN_NAME_NICK, user.getNick()); if(db.isOpen()){ db.insert(TABLE_NAME, null, values); } } /*Cursor cursor = db.rawQuery("select * from " + TABLE_NAME +" WHERE " + COLUMN_NAME_ID +" = '"+user.getUsername()+"'" + " desc" , null); //没有 if (cursor.moveToFirst() == false) { values.put(COLUMN_NAME_ID, user.getUsername()); values.put(COLUMN_HEAD_PIC, user.getHeaderurl()); values.put(COLUMN_NAME_IS_STRANGER, "2");//0是陌生人 2是好友 if(user.getNick() != null) values.put(COLUMN_NAME_NICK, user.getNick()); if(db.isOpen()){ db.insert(TABLE_NAME, null, values); } }else{ }*/ } /** * 查询指定user的信息 * * @return */ public User getUser(String username) { SQLiteDatabase db = dbHelper.getReadableDatabase(); User user = new User(); if (db.isOpen()) { Cursor cursor = db.rawQuery("select * from " + TABLE_NAME +" WHERE " + COLUMN_NAME_ID +" = '"+username+"'"/* + " desc" */, null); if (cursor.moveToFirst() == false) { //为空的Cursor //return; //没有数据 //user = null; }else{ //String username = cursor.getString(cursor.getColumnIndex(COLUMN_NAME_ID)); String nick = cursor.getString(cursor.getColumnIndex(COLUMN_NAME_NICK)); String headpic = cursor.getString(cursor.getColumnIndex(COLUMN_HEAD_PIC)); String is_stranger = cursor.getString(cursor.getColumnIndex(COLUMN_NAME_IS_STRANGER)); user.setUsername(username); user.setNick(nick); user.setHeaderurl(headpic); user.setIs_stranger(is_stranger); } /*while (cursor.moveToNext()) { String username = cursor.getString(cursor.getColumnIndex(COLUMN_NAME_ID)); String nick = cursor.getString(cursor.getColumnIndex(COLUMN_NAME_NICK)); User user = new User(); user.setUsername(username); user.setNick(nick); String headerName = null; if (!TextUtils.isEmpty(user.getNick())) { headerName = user.getNick(); } else { headerName = user.getUsername(); } if (username.equals(Constant.NEW_FRIENDS_USERNAME) || username.equals(Constant.GROUP_USERNAME)) { user.setHeader(""); } else if (Character.isDigit(headerName.charAt(0))) { user.setHeader("#"); } else { user.setHeader(HanziToPinyin.getInstance().get(headerName.substring(0, 1)) .get(0).target.substring(0, 1).toUpperCase()); char header = user.getHeader().toLowerCase().charAt(0); if (header < 'a' || header > 'z') { user.setHeader("#"); } } users.put(username, user); }*/ cursor.close(); } return user; } }