package com.letv.watchball.db;
import java.util.ArrayList;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import com.letv.watchball.bean.PushSubscribeGame;
import com.letv.watchball.utils.LetvConstant;
import com.letv.watchball.utils.LetvUtil;
public class LiveSubscribeTraceHandler {
private Context context;
public LiveSubscribeTraceHandler(Context context) {
this.context = context;
}
/**
* 保存预定节目
* */
public void saveSubscribeGameTrace(PushSubscribeGame body) {
ContentValues contentValues = new ContentValues();
contentValues.put(LetvConstant.DataBase.SubscribeGameTrace.Field.id, body.id);
contentValues.put(LetvConstant.DataBase.SubscribeGameTrace.Field.guest, body.guest);
contentValues.put(LetvConstant.DataBase.SubscribeGameTrace.Field.home, body.home);
contentValues.put(LetvConstant.DataBase.SubscribeGameTrace.Field.level, body.level);
contentValues.put(LetvConstant.DataBase.SubscribeGameTrace.Field.playDate, body.playDate);
contentValues.put(LetvConstant.DataBase.SubscribeGameTrace.Field.playTime, body.playTime);
contentValues.put(LetvConstant.DataBase.SubscribeGameTrace.Field.playTimeMillisecond, LetvUtil.timeFormatSubscribeGame(body.playDate, body.playTime));
contentValues.put(LetvConstant.DataBase.SubscribeGameTrace.Field.status, body.status);
if (!hasSubscribeGameTrace(body.id)) {
context.getContentResolver().insert(LetvContentProvider.URI_SUBSCRIBE_GAME_TRACE, contentValues);
} else {
context.getContentResolver().update(LetvContentProvider.URI_SUBSCRIBE_GAME_TRACE, contentValues,
LetvConstant.DataBase.SubscribeGameTrace.Field.id + "=?", new String[] { body.id });
}
}
/**
* 得到离当前时间最近的一场比赛
* */
public long getNearestTrace() {
Cursor cursor = null;
try {
cursor = context.getContentResolver().query(LetvContentProvider.URI_SUBSCRIBE_GAME_TRACE, null,
LetvConstant.DataBase.SubscribeGameTrace.Field.playTimeMillisecond + ">=? AND "+
LetvConstant.DataBase.SubscribeGameTrace.Field.isNotify + "=?",
// new String[] { (System.currentTimeMillis()) + "" }, LetvConstant.DataBase.SubscribeGameTrace.Field.playTimeMillisecond);
new String[] {(System.currentTimeMillis() - 5 * 60 * 1000) + "", 0+"" }, LetvConstant.DataBase.SubscribeGameTrace.Field.playTimeMillisecond);
if (cursor != null && cursor.getCount() > 0) {
cursor.moveToFirst();
return cursor.getLong(cursor.getColumnIndexOrThrow(LetvConstant.DataBase.SubscribeGameTrace.Field.playTimeMillisecond));
}
} catch (Exception e) {
e.printStackTrace();
}finally {
LetvUtil.closeCursor(cursor);
}
return -1;
}
/**
* 得到当前时间,前10分钟,后(赛果提醒设定时间)分钟内的节目
* */
public ArrayList<PushSubscribeGame> getCurrentTrace() {
Cursor cursor = null;
ArrayList<PushSubscribeGame> list = null;
long currentTime = System.currentTimeMillis();
try {
cursor = context.getContentResolver().query(
LetvContentProvider.URI_SUBSCRIBE_GAME_TRACE,
null,
LetvConstant.DataBase.SubscribeGameTrace.Field.playTimeMillisecond + " > ? AND "
+ LetvConstant.DataBase.SubscribeGameTrace.Field.playTimeMillisecond + " < ? AND "
+ LetvConstant.DataBase.SubscribeGameTrace.Field.isNotify + " = ? ",
new String[] { (currentTime - 10 * 60 * 1000) + "", (currentTime + PreferencesManager.getInstance().getGameStartRemind() * 60 * 1000) + "",0+"" },
LetvConstant.DataBase.SubscribeGameTrace.Field.playTimeMillisecond);
list = new ArrayList<PushSubscribeGame>();
while (cursor != null && cursor.moveToNext()) {
PushSubscribeGame subscribeGame = new PushSubscribeGame();
subscribeGame.id = (cursor.getString(cursor.getColumnIndexOrThrow(LetvConstant.DataBase.SubscribeGameTrace.Field.id)));
subscribeGame.level = (cursor.getString(cursor.getColumnIndexOrThrow(LetvConstant.DataBase.SubscribeGameTrace.Field.level)));
subscribeGame.home = (cursor.getString(cursor.getColumnIndexOrThrow(LetvConstant.DataBase.SubscribeGameTrace.Field.home)));
subscribeGame.guest = (cursor.getString(cursor.getColumnIndexOrThrow(LetvConstant.DataBase.SubscribeGameTrace.Field.guest)));
subscribeGame.playDate = (cursor.getString(cursor.getColumnIndexOrThrow(LetvConstant.DataBase.SubscribeGameTrace.Field.playDate)));
subscribeGame.playTime = (cursor.getString(cursor.getColumnIndexOrThrow(LetvConstant.DataBase.SubscribeGameTrace.Field.playTime)));
subscribeGame.playTimeMillisecond = (cursor.getLong(cursor
.getColumnIndexOrThrow(LetvConstant.DataBase.SubscribeGameTrace.Field.playTimeMillisecond)));
subscribeGame.status = (cursor.getInt(cursor.getColumnIndexOrThrow(LetvConstant.DataBase.SubscribeGameTrace.Field.status)));
subscribeGame.isNotify = (cursor.getInt(cursor.getColumnIndexOrThrow(LetvConstant.DataBase.SubscribeGameTrace.Field.isNotify)));
list.add(subscribeGame);
}
} finally {
LetvUtil.closeCursor(cursor);
}
return list;
}
/**
* 得到所有预约比赛记录
* */
public ArrayList<PushSubscribeGame> getAllTrace() {
Cursor cursor = null;
ArrayList<PushSubscribeGame> list = null;
try {
cursor = context.getContentResolver().query(LetvContentProvider.URI_SUBSCRIBE_GAME_TRACE, null, null, null, null);
list = new ArrayList<PushSubscribeGame>();
while (cursor != null && cursor.moveToNext()) {
PushSubscribeGame subscribeGame = new PushSubscribeGame();
subscribeGame.id = (cursor.getString(cursor.getColumnIndexOrThrow(LetvConstant.DataBase.SubscribeGameTrace.Field.id)));
subscribeGame.level = (cursor.getString(cursor.getColumnIndexOrThrow(LetvConstant.DataBase.SubscribeGameTrace.Field.level)));
subscribeGame.home = (cursor.getString(cursor.getColumnIndexOrThrow(LetvConstant.DataBase.SubscribeGameTrace.Field.home)));
subscribeGame.guest = (cursor.getString(cursor.getColumnIndexOrThrow(LetvConstant.DataBase.SubscribeGameTrace.Field.guest)));
subscribeGame.playDate = (cursor.getString(cursor.getColumnIndexOrThrow(LetvConstant.DataBase.SubscribeGameTrace.Field.playDate)));
subscribeGame.playTime = (cursor.getString(cursor.getColumnIndexOrThrow(LetvConstant.DataBase.SubscribeGameTrace.Field.playTime)));
subscribeGame.playTimeMillisecond = (cursor.getLong(cursor
.getColumnIndexOrThrow(LetvConstant.DataBase.SubscribeGameTrace.Field.playTimeMillisecond)));
subscribeGame.status = (cursor.getInt(cursor.getColumnIndexOrThrow(LetvConstant.DataBase.SubscribeGameTrace.Field.status)));
subscribeGame.isNotify = (cursor.getInt(cursor.getColumnIndexOrThrow(LetvConstant.DataBase.SubscribeGameTrace.Field.isNotify)));
subscribeGame.isPushResult = (cursor.getInt(cursor.getColumnIndexOrThrow(LetvConstant.DataBase.SubscribeGameTrace.Field.isPushResult)));
list.add(subscribeGame);
}
} finally {
LetvUtil.closeCursor(cursor);
}
return list;
}
/**
* 清除全部预定
* */
public void clearAll() {
context.getContentResolver().delete(LetvContentProvider.URI_SUBSCRIBE_GAME_TRACE, null, null);
}
/**
* 删除一条记录
* */
public void remove(String id) {
context.getContentResolver().delete(LetvContentProvider.URI_SUBSCRIBE_GAME_TRACE, LetvConstant.DataBase.SubscribeGameTrace.Field.id + "=?",
new String[] { id });
}
/**
* 更新一条预约提醒
* */
public void updateNotity(String id, boolean isNotify) {
int in = isNotify ? 1 : 0;
ContentValues cv = new ContentValues();
cv.put(LetvConstant.DataBase.SubscribeGameTrace.Field.isNotify, in);
context.getContentResolver().update(LetvContentProvider.URI_SUBSCRIBE_GAME_TRACE, cv, LetvConstant.DataBase.SubscribeGameTrace.Field.id + "=?",
new String[] { id + "" });
}
/**
* 更新一条赛果提醒
* */
public void updatePush(String id, boolean isPush) {
int in = isPush ? 1 : 0;
ContentValues cv = new ContentValues();
cv.put(LetvConstant.DataBase.SubscribeGameTrace.Field.isPushResult, in);
context.getContentResolver().update(LetvContentProvider.URI_SUBSCRIBE_GAME_TRACE, cv, LetvConstant.DataBase.SubscribeGameTrace.Field.id + "=?",
new String[] { id + "" });
}
/**
* 判断是否记录已存在
* */
public boolean hasSubscribeGameTrace(String id) {
Cursor cursor = null;
try {
cursor = context.getContentResolver().query(LetvContentProvider.URI_SUBSCRIBE_GAME_TRACE, null,
LetvConstant.DataBase.SubscribeGameTrace.Field.id + "=?", new String[] { id + "" }, null);
int count = cursor != null ? cursor.getCount() : 0;
return count > 0;
} finally {
LetvUtil.closeCursor(cursor);
}
}
/**
* 得到所有可进行赛果轮训的记录
* */
public ArrayList<PushSubscribeGame> getAllSubscribeGamesTrace() {
Cursor cursor = null;
ArrayList<PushSubscribeGame> list = null;
try {
cursor = context.getContentResolver().query(LetvContentProvider.URI_SUBSCRIBE_GAME_TRACE, null,
LetvConstant.DataBase.SubscribeGameTrace.Field.isPushResult + "=? AND " + LetvConstant.DataBase.SubscribeGameTrace.Field.status + ">?",
new String[] {0 + "" , 1 + "" }, null);
list = new ArrayList<PushSubscribeGame>();
while (cursor != null && cursor.moveToNext()) {
PushSubscribeGame subscribeGame = new PushSubscribeGame();
subscribeGame.id = (cursor.getString(cursor.getColumnIndexOrThrow(LetvConstant.DataBase.SubscribeGameTrace.Field.id)));
subscribeGame.level = (cursor.getString(cursor.getColumnIndexOrThrow(LetvConstant.DataBase.SubscribeGameTrace.Field.level)));
subscribeGame.home = (cursor.getString(cursor.getColumnIndexOrThrow(LetvConstant.DataBase.SubscribeGameTrace.Field.home)));
subscribeGame.guest = (cursor.getString(cursor.getColumnIndexOrThrow(LetvConstant.DataBase.SubscribeGameTrace.Field.guest)));
subscribeGame.playDate = (cursor.getString(cursor.getColumnIndexOrThrow(LetvConstant.DataBase.SubscribeGameTrace.Field.playDate)));
subscribeGame.playTime = (cursor.getString(cursor.getColumnIndexOrThrow(LetvConstant.DataBase.SubscribeGameTrace.Field.playTime)));
subscribeGame.playTimeMillisecond = (cursor.getLong(cursor
.getColumnIndexOrThrow(LetvConstant.DataBase.SubscribeGameTrace.Field.playTimeMillisecond)));
subscribeGame.status = (cursor.getInt(cursor.getColumnIndexOrThrow(LetvConstant.DataBase.SubscribeGameTrace.Field.status)));
subscribeGame.isNotify = (cursor.getInt(cursor.getColumnIndexOrThrow(LetvConstant.DataBase.SubscribeGameTrace.Field.isNotify)));
subscribeGame.isPushResult = (cursor.getInt(cursor.getColumnIndexOrThrow(LetvConstant.DataBase.SubscribeGameTrace.Field.isPushResult)));
list.add(subscribeGame);
}
} finally {
LetvUtil.closeCursor(cursor);
}
return list;
}
}