package com.qmusic.dal; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import android.content.ContentValues; import android.database.Cursor; import android.net.Uri; import com.qmusic.entities.BAlarm; import com.qmusic.uitls.BLog; public class AlarmTable extends BaseTable { static final String TAG = AlarmTable.class.getSimpleName(); public static final String TABLE_NAME = "alarm"; public static final String FIELD_TITLE = "title"; public static final String FIELD_SUB_TITLE = "subTitle"; public static final String FIELD_OPTIONS = "options"; public static final String FIELD_TIME = "time"; public static final String FIELD_STATUS = "status"; public static final Uri CONTENT_URL = Uri.parse("content://" + BContentProvider.AUTHORITY + "/" + TABLE_NAME); public static final String[] PROJECTION = new String[] { _ID, FIELD_TITLE, FIELD_SUB_TITLE, FIELD_TIME, FIELD_STATUS, FIELD_OPTIONS }; @Override protected String getTableName() { return TABLE_NAME; } @Override protected void initField(HashMap<String, Class<?>> fields) { fields.put(FIELD_TITLE, String.class); fields.put(FIELD_SUB_TITLE, String.class); fields.put(FIELD_OPTIONS, String.class); fields.put(FIELD_TIME, Integer.class); fields.put(FIELD_STATUS, Integer.class); } public List<BAlarm> queryAlarm() { ArrayList<BAlarm> alarmList = new ArrayList<BAlarm>(); Cursor mCursor = null; try { mCursor = query(PROJECTION, null, null, null, null, null, null); while (mCursor.moveToNext()) { BAlarm alarm = cursorToObject(mCursor); alarmList.add(alarm); } } catch (Exception ex) { ex.printStackTrace(); } finally { if (mCursor != null) { mCursor.close(); } } return alarmList; } public void insert(BAlarm alarm) { ContentValues cv = new ContentValues(); cv.put(FIELD_TITLE, alarm.title); cv.put(FIELD_SUB_TITLE, alarm.subTitle); cv.put(FIELD_OPTIONS, alarm.options); cv.put(FIELD_TIME, alarm.time); cv.put(FIELD_STATUS, alarm.status); alarm.id = insert(cv); BLog.i(TAG, "insert a new alarm with id:" + alarm.id); } public void update(BAlarm alarm) { int result; ContentValues cv = new ContentValues(); // cv.put("[_id]", alarm.id); cv.put(FIELD_TITLE, alarm.title); cv.put(FIELD_SUB_TITLE, alarm.subTitle); cv.put(FIELD_OPTIONS, alarm.options); cv.put(FIELD_TIME, alarm.time); cv.put(FIELD_STATUS, alarm.status); result = update(cv, _ID + "=?", new String[] { String.valueOf(alarm.id) }); BLog.i(TAG, "update alarm with taskId:" + alarm.id + ";result:" + result); } public BAlarm pop() { BAlarm alarm = null; Cursor mCursor = query( PROJECTION, "([status]=? or [status]=?) and [time]>=?", new String[] { String.valueOf(BAlarm.STATUS_SCHEDUING), String.valueOf(BAlarm.STATUS_SCHEDUE), String.valueOf(System.currentTimeMillis() - 1 * 60 * 1000) }, null, null, "[time] ASC", null); // while (mCursor.moveToNext()) { // alarm = cursorToObject(mCursor); // EdoLog.e(TAG, alarm.toString()); // } if (mCursor.moveToFirst()) { alarm = cursorToObject(mCursor); } mCursor.close(); return alarm; } public BAlarm current() { BAlarm alarm = null; Cursor mCursor = query(PROJECTION, "[status]=?", new String[] { "" + BAlarm.STATUS_SCHEDUING }, null, null, "[time] DESC", null); if (mCursor.moveToFirst()) { alarm = cursorToObject(mCursor); } mCursor.close(); return alarm; } public BAlarm query(long id) { BAlarm alarm = null; Cursor mCursor = query(PROJECTION, _ID + "=?", new String[] { String.valueOf(id) }, null, null, null, null); if (mCursor.moveToFirst()) { alarm = cursorToObject(mCursor); } mCursor.close(); return alarm; } private BAlarm cursorToObject(Cursor mCursor) { BAlarm alarm = new BAlarm(); alarm.id = mCursor.getInt(0); alarm.title = mCursor.getString(1); alarm.subTitle = mCursor.getString(2); alarm.time = mCursor.getLong(3); alarm.status = mCursor.getInt(4); alarm.options = mCursor.getString(5); return alarm; } }