package com.pwp.dao;
import java.util.ArrayList;
import com.pwp.vo.ScheduleDateTag;
import com.pwp.vo.ScheduleVO;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.sax.StartElementListener;
import android.util.Log;
/**
* 对日程DAO操作
* @author jack_peng
*
*/
public class ScheduleDAO {
private DBOpenHelper dbOpenHelper = null;
//private Context context = null;
public ScheduleDAO(Context context){
//this.context = context;
dbOpenHelper = new DBOpenHelper(context, "schedules.db");
}
/**
* 保存日程信息
* @param scheduleVO
*/
public int save(ScheduleVO scheduleVO){
//dbOpenHelper = new DBOpenHelper(context, "schedules.db");
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("scheduleTypeID", scheduleVO.getScheduleTypeID());
values.put("remindID", scheduleVO.getRemindID());
values.put("scheduleContent", scheduleVO.getScheduleContent());
values.put("scheduleDate", scheduleVO.getScheduleDate());
db.beginTransaction();
int scheduleID = -1;
try{
db.insert("schedule", null, values);
Cursor cursor = db.rawQuery("select max(scheduleID) from schedule", null);
if(cursor.moveToFirst()){
scheduleID = (int) cursor.getLong(0);
}
cursor.close();
db.setTransactionSuccessful();
}finally{
db.endTransaction();
}
return scheduleID;
}
/**
* 查询某一条日程信息
* @param scheduleID
* @return
*/
public ScheduleVO getScheduleByID(int scheduleID){
//dbOpenHelper = new DBOpenHelper(context, "schedules.db");
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
Cursor cursor = db.query("schedule", new String[]{"scheduleID","scheduleTypeID","remindID","scheduleContent","scheduleDate"}, "scheduleID=?", new String[]{String.valueOf(scheduleID)}, null, null, null);
if(cursor.moveToFirst()){
int schID = cursor.getInt(cursor.getColumnIndex("scheduleID"));
int scheduleTypeID = cursor.getInt(cursor.getColumnIndex("scheduleTypeID"));
int remindID = cursor.getInt(cursor.getColumnIndex("remindID"));
String scheduleContent = cursor.getString(cursor.getColumnIndex("scheduleContent"));
String scheduleDate = cursor.getString(cursor.getColumnIndex("scheduleDate"));
cursor.close();
return new ScheduleVO(schID,scheduleTypeID,remindID,scheduleContent,scheduleDate);
}
cursor.close();
return null;
}
/**
* 查询所有的日程信息
* @return
*/
public ArrayList<ScheduleVO> getAllSchedule(){
ArrayList<ScheduleVO> list = new ArrayList<ScheduleVO>();
//dbOpenHelper = new DBOpenHelper(context, "schedules.db");
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
Cursor cursor = db.query("schedule", new String[]{"scheduleID","scheduleTypeID","remindID","scheduleContent","scheduleDate"}, null, null, null, null, "scheduleID desc");
while(cursor.moveToNext()){
int scheduleID = cursor.getInt(cursor.getColumnIndex("scheduleID"));
int scheduleTypeID = cursor.getInt(cursor.getColumnIndex("scheduleTypeID"));
int remindID = cursor.getInt(cursor.getColumnIndex("remindID"));
String scheduleContent = cursor.getString(cursor.getColumnIndex("scheduleContent"));
String scheduleDate = cursor.getString(cursor.getColumnIndex("scheduleDate"));
ScheduleVO vo = new ScheduleVO(scheduleID,scheduleTypeID,remindID,scheduleContent,scheduleDate);
list.add(vo);
}
cursor.close();
if(list != null && list.size() > 0){
return list;
}
return null;
}
/**
* 删除日程
* @param scheduleID
*/
public void delete(int scheduleID){
//dbOpenHelper = new DBOpenHelper(context, "schedules.db");
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
db.beginTransaction();
try{
db.delete("schedule", "scheduleID=?", new String[]{String.valueOf(scheduleID)});
db.delete("scheduletagdate", "scheduleID=?", new String[]{String.valueOf(scheduleID)});
db.setTransactionSuccessful();
}finally{
db.endTransaction();
}
}
/**
* 更新日程
* @param vo
*/
public void update(ScheduleVO vo){
//dbOpenHelper = new DBOpenHelper(context, "schedules.db");
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("scheduleTypeID", vo.getScheduleTypeID());
values.put("remindID", vo.getRemindID());
values.put("scheduleContent", vo.getScheduleContent());
values.put("scheduleDate", vo.getScheduleDate());
db.update("schedule", values, "scheduleID=?", new String[]{String.valueOf(vo.getScheduleID())});
}
/**
* 将日程标志日期保存到数据库中
* @param dateTagList
*/
public void saveTagDate(ArrayList<ScheduleDateTag> dateTagList){
//dbOpenHelper = new DBOpenHelper(context, "schedules.db");
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
ScheduleDateTag dateTag = new ScheduleDateTag();
for(int i = 0; i < dateTagList.size(); i++){
dateTag = dateTagList.get(i);
ContentValues values = new ContentValues();
values.put("year", dateTag.getYear());
values.put("month", dateTag.getMonth());
values.put("day", dateTag.getDay());
values.put("scheduleID", dateTag.getScheduleID());
db.insert("scheduletagdate", null, values);
}
}
/**
* 只查询出当前月的日程日期
* @param currentYear
* @param currentMonth
* @return
*/
public ArrayList<ScheduleDateTag> getTagDate(int currentYear, int currentMonth){
ArrayList<ScheduleDateTag> dateTagList = new ArrayList<ScheduleDateTag>();
//dbOpenHelper = new DBOpenHelper(context, "schedules.db");
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
Cursor cursor = db.query("scheduletagdate", new String[]{"tagID","year","month","day","scheduleID"}, "year=? and month=?", new String[]{String.valueOf(currentYear),String.valueOf(currentMonth)}, null, null, null);
while(cursor.moveToNext()){
int tagID = cursor.getInt(cursor.getColumnIndex("tagID"));
int year = cursor.getInt(cursor.getColumnIndex("year"));
int month = cursor.getInt(cursor.getColumnIndex("month"));
int day = cursor.getInt(cursor.getColumnIndex("day"));
int scheduleID = cursor.getInt(cursor.getColumnIndex("scheduleID"));
ScheduleDateTag dateTag = new ScheduleDateTag(tagID,year,month,day,scheduleID);
dateTagList.add(dateTag);
}
cursor.close();
if(dateTagList != null && dateTagList.size() > 0){
return dateTagList;
}
return null;
}
/**
* 当点击每一个gridview中item时,查询出此日期上所有的日程标记(scheduleID)
* @param year
* @param month
* @param day
* @return
*/
public String[] getScheduleByTagDate(int year, int month, int day){
ArrayList<ScheduleVO> scheduleList = new ArrayList<ScheduleVO>();
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
//根据时间查询出日程ID(scheduleID),一个日期可能对应多个日程ID
Cursor cursor = db.query("scheduletagdate", new String[]{"scheduleID"}, "year=? and month=? and day=?", new String[]{String.valueOf(year),String.valueOf(month),String.valueOf(day)}, null, null, null);
String scheduleIDs[] = null;
scheduleIDs = new String[cursor.getCount()];
int i = 0;
while(cursor.moveToNext()){
String scheduleID = cursor.getString(cursor.getColumnIndex("scheduleID"));
scheduleIDs[i] = scheduleID;
i++;
}
cursor.close();
return scheduleIDs;
}
/**
*关闭DB
*/
public void destoryDB(){
if(dbOpenHelper != null){
dbOpenHelper.close();
}
}
}