package net.cgt.weixin.db.dao;

import java.util.ArrayList;
import java.util.List;

import net.cgt.weixin.db.ChatInfoDBOpenHelper;
import net.cgt.weixin.domain.ChatMsgEntity;
import net.cgt.weixin.utils.LogUtil;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.SystemClock;

/**
 * 聊天信息的增删改查业务类
 */
public class ChatInfoDao {

	private static final String LOGTAG = LogUtil.makeLogTag(ChatInfoDao.class);

	private ChatInfoDBOpenHelper helper;

	public ChatInfoDao(Context context) {
		helper = new ChatInfoDBOpenHelper(context);
	}

	/**
	 * 添加一条聊天数据
	 * 
	 * @param entity 聊天数据bean
	 */
	public void add(ChatMsgEntity entity) {
		SQLiteDatabase db = helper.getWritableDatabase();
		ContentValues values = new ContentValues();
		values.put("time", String.valueOf(entity.getTime()));
		String is_show_time;
		if (entity.isShowTime()) {
			is_show_time = "1";
		} else {
			is_show_time = "0";
		}
		values.put("is_show_time", is_show_time);
		values.put("user_name", entity.getUserName());
		values.put("user_img", entity.getUserImg());
		values.put("text_msg", entity.getTextMsg());
		values.put("img_msg", entity.getImgMsg());
		values.put("voice_msg", entity.getVoiceMsg());
		values.put("msg_type", String.valueOf(entity.getMsgType()));
		String is_me_msg;
		if (entity.isMeMsg()) {
			is_me_msg = "1";
		} else {
			is_me_msg = "0";
		}
		values.put("is_me_msg", is_me_msg);
		db.insert(ChatInfoDBOpenHelper.TABLE_NAME, null, values);
		db.close();
	}

	/**
	 * 删除一条聊天数据
	 * 
	 * @param id
	 */
	public void delete(String id) {
		SQLiteDatabase db = helper.getWritableDatabase();
		db.delete(ChatInfoDBOpenHelper.TABLE_NAME, "_id=?", new String[] { id });
		db.close();
	}

	/**
	 * 查询部分的聊天数据
	 * 
	 * @param maxNumber 最多返回多少条数据
	 * @param startIndex 从哪个位置开始获取数据
	 * @return
	 */
	public List<ChatMsgEntity> findPart(int maxNumber, int startIndex) {
		SystemClock.sleep(300);
		SQLiteDatabase db = helper.getWritableDatabase();
		//select _id,location,areacode from mob_location limit 20,10
		Cursor cursor = db.rawQuery("select * from info order by _id desc limit ? offset ?", new String[] { String.valueOf(maxNumber), String.valueOf(startIndex) });
		List<ChatMsgEntity> list = new ArrayList<ChatMsgEntity>();
		String id;
		long time;
		String isShowTime;
		String userName;
		String userImg;
		String textMsg;
		String imgMsg;
		String voiceMsg;
		int msgType;
		String isMeMsg;
		while (cursor.moveToNext()) {
			id = String.valueOf(cursor.getInt(0));
			time = Long.parseLong(cursor.getString(1));
			isShowTime = cursor.getString(2);
			userName = cursor.getString(3);
			userImg = cursor.getString(4);
			textMsg = cursor.getString(5);
			imgMsg = cursor.getString(6);
			voiceMsg = cursor.getString(7);
			msgType = Integer.parseInt(cursor.getString(8));
			isMeMsg = cursor.getString(9);

			ChatMsgEntity entity = new ChatMsgEntity();
			entity.setId(id);
			entity.setTime(time);
			if ("0".equals(isShowTime)) {
				entity.setShowTime(false);
			} else {
				entity.setShowTime(true);
			}
			entity.setUserName(userName);
			entity.setUserImg(Integer.parseInt(userImg));
			entity.setTextMsg(textMsg);
			entity.setImgMsg(imgMsg);
			entity.setVoiceMsg(voiceMsg);
			entity.setMsgType(msgType);
			if ("0".equals(isMeMsg)) {
				entity.setMeMsg(false);
			} else {
				entity.setMeMsg(true);
			}
			list.add(0, entity);
		}
		cursor.close();
		db.close();
		return list;
	}
}