package sysu.androidclub.campusrichman.dataoper;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.StreamCorruptedException;
import java.util.Calendar;
import java.util.Hashtable;
import sysu.androidclub.campusrichman.mainlogic.Logicmain;
import android.R.integer;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
/**
* <b>RecordOerator</b>
*
* @author RR
*
*/
public class RecordOperator {
private SQLiteDatabase mSqLiteDatabase = null;
private DataBaseOperateHelper mBaseOperateHelper = null;
private Context mContext;
private static final String ID = "ID";
private static final String DATE = "DATE";
private static final String RECORDDATA = "RECORDDATA";
private static final String TABLE = "CAMPUSRICHMAN";
private static final String CREATE_DB = "CREATE TABLE "+TABLE
+ " ("+ID+" INTEGER PRIMARY KEY autoincrement," + DATE +" DATETIME,"
+ RECORDDATA+ " BLOB)";
/**
*
* @param mContext
*/
public RecordOperator(Context mContext)
{
this.mContext = mContext;
}
/**
*
*/
public void open()
{
mBaseOperateHelper = new DataBaseOperateHelper(mContext, null, 2);
mSqLiteDatabase = mBaseOperateHelper.getWritableDatabase();
}
/**
*
*/
public void close()
{
mBaseOperateHelper.close();
}
/**
*
* @param maindata
* @return
*/
public long insertRecord(Logicmain maindata)
{
ByteArrayOutputStream bao = new ByteArrayOutputStream();
ObjectOutputStream oos;
try {
oos = new ObjectOutputStream(bao);
oos.writeObject(maindata);
oos.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return -1;
}
ContentValues cv = new ContentValues();
cv.put(DATE, Calendar.getInstance().getTime().toLocaleString());
cv.put(RECORDDATA,bao.toByteArray());
return mSqLiteDatabase.insert(TABLE, ID, cv);
}
/**
*
* @param id
* @return
*/
private boolean deleteData(int id)
{
return mSqLiteDatabase.delete(TABLE, ID+"="+id, null)>0;
}
/**
*
* @return
*/
private Cursor getAllData()
{
Cursor mCursor = mSqLiteDatabase.query(true, TABLE, new String[]{ID,DATE,RECORDDATA},null, null,null, null, null, null);
return mCursor;
}
/**
*
* @param id
* @return
*/
private Cursor getData(int id)
{
Cursor mCursor = mSqLiteDatabase.query(true, TABLE, new String[]{ID,DATE,RECORDDATA},ID+"="+id, null,null, null, null, null);
if (mCursor!=null) {
mCursor.moveToFirst();
}
return mCursor;
}
/**
*
* @return
*/
public Hashtable<Integer, String> getAllRecordInfo()
{
Hashtable<Integer, String> table = new Hashtable<Integer, String>();
Cursor mCursor =getAllData();
while (mCursor.moveToNext()) {
table.put(mCursor.getInt(0), mCursor.getString(1));
}
return table;
}
/**
* IDlogicmain
* @param id
* @return
*/
public Logicmain getMainData(int id)
{
Cursor mCursor = getData(id);
if (mCursor!=null) {
mCursor.moveToFirst();
ByteArrayInputStream in = new ByteArrayInputStream(mCursor.getBlob(2));
ObjectInputStream ois;
try {
ois = new ObjectInputStream(in);
return (Logicmain)ois.readObject();
} catch (StreamCorruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
return null;
}
/**
*
* @param id
* @return
*/
public boolean deleteRecordData(int id)
{
return deleteData(id);
}
/**
* <b>DataBaseOperateHelper</b>
*
* @author RR
*
*/
public class DataBaseOperateHelper extends SQLiteOpenHelper
{
public DataBaseOperateHelper(Context context,CursorFactory factory,int version)
{
super(context, "CampusRichManRecord.db", factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_DB);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS notes");
onCreate(db);
}
}
}
|