package com.ztspeech.simutalk2.qa.data;
import java.util.Date;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import cn.ac.ia.directtrans.json.QuestionInfo;
import com.ztspeech.simutalk2.data.DataListObejct;
import com.ztspeech.simutalk2.data.QuestionTable;
public class QuestionDataList extends DataListObejct {
private QuestionTable mTable = QuestionTable.getInstanse();
public boolean isChanged = false;
private static QuestionDataList mInstance = null;
public static QuestionDataList getInstance(){
if(mInstance == null){
mInstance = new QuestionDataList();
}
return mInstance;
}
public void add(QuestionData data) {
isChanged = true;
super.add(data);
}
public QuestionData get(int n) {
return (QuestionData)super.get(n);
}
public QuestionData findByAskId(long askId){
int nCount = size();
for(int i=0; i < nCount; i ++){
QuestionData data = get(i);
if(data.ask.id == askId) {
return data;
}
}
return null;
}
public QuestionData findBySolveId(long solveId){
int nCount = 0;
for(int i=0; i < nCount; i ++){
QuestionData data = (QuestionData) items.get(i);
if(data.solve.id == solveId) {
return data;
}
}
return null;
}
public QuestionData findById(long id) {
return (QuestionData) super.findById(id);
}
public void updateItem(QuestionData data){
isChanged = true;
SQLiteDatabase writer = mTable.getWritableDatabase();
QuestionInfo solve = data.solve;
QuestionInfo ask = data.ask;
ContentValues cv =new ContentValues();
cv.put("dataid", data.id);
cv.put("aid", ask.id);
cv.put("senderId", ask.senderId);
cv.put("sender_name", ask.senderName);
cv.put("ask_time", ask.time.getTime());
cv.put("text", ask.text);
cv.put("ask_len", ask.vLen);
cv.put("state", data.state);
cv.put("type", ask.type);
cv.put("sid", solve.id);
cv.put("solver_id", solve.senderId);
cv.put("solver_name", solve.senderName);
cv.put("solver_time", solve.time.getTime());
cv.put("solver_time", solve.text);
cv.put("solver_len", solve.vLen);
cv.put("look_over", data.look_over? 1:0);
writer.replace(mTable.tableName, null, cv);
}
public void addToDB(QuestionData data) {
SQLiteDatabase writer = mTable.getWritableDatabase();
QuestionInfo ask = data.ask;
QuestionInfo solve = data.solve;
ContentValues cv =new ContentValues();
cv.put("aid", ask.id);
cv.put("senderId", ask.senderId);
cv.put("sender_name", ask.senderName);
cv.put("ask_time", ask.time.getTime());
cv.put("text", ask.text);
cv.put("ask_len", ask.vLen);
cv.put("state", data.state);
cv.put("type", ask.type);
cv.put("sid", solve.id);
cv.put("solver_id", solve.senderId);
cv.put("solver_name", solve.senderName);
cv.put("solver_time", solve.time.getTime());
cv.put("solver_text", solve.text);
cv.put("solver_len", solve.vLen);
cv.put("look_over", data.look_over? 1:0);
writer.insert(mTable.tableName, null, cv);
}
public void delete(Integer... ids) {
if (ids.length > 0) {
StringBuffer sb = new StringBuffer();
for (Integer id : ids) {
sb.append('?').append(',');
}
sb.deleteCharAt(sb.length() - 1);
SQLiteDatabase database = mTable.getWritableDatabase();
database.execSQL(
"delete from " + mTable.tableName +" where dataid in(" + sb.toString()
+ ")", ids);
}
}
public void loadDB() {
items.clear();
SQLiteDatabase database = mTable.getReadableDatabase();
Cursor cursor = database.rawQuery( "select * from " + mTable.tableName, null);
QuestionData data = null;
// " (dataid integer primary key autoincrement, aid integer, senderId integer," +
// " sender_name varchar(50), ask_time integer, text varchar(250), ask_len integer," +
// " sid integer, solver_id integer,solver_name varchar(50), solver_time integer, " +
// " solver_text varchar(250), solver_time integer, state integer, type varchar(20))");
QuestionInfo solve = null;
while (cursor.moveToNext()) {
data = new QuestionData();
// ask
int i=0;
data.id = cursor.getInt(i++);
data.ask.id = cursor.getInt(i++);
data.ask.senderId = cursor.getInt(i++);
data.ask.senderName = cursor.getString(i++);
data.ask.time = new Date( cursor.getLong(i++));
data.ask.text = cursor.getString(i++);
data.ask.vLen = cursor.getInt(i++);
// solve
solve = data.solve;
solve.id = cursor.getInt(i++);
solve.senderId = cursor.getInt(i++);
solve.senderName = cursor.getString(i++);
solve.time = new Date(cursor.getLong(i++));
solve.text = cursor.getString(i++);
solve.vLen = cursor.getInt(i++);
data.state = cursor.getInt(i++);
data.ask.type = cursor.getString(i++);
data.look_over = cursor.getInt(i++) == 1;
data.type = QuestionData.TYPE_QUESTION;
add(data);
}
}
}