package com.ztspeech.simutalk2.data;
import java.util.ArrayList;
import java.util.List;
import android.database.sqlite.SQLiteDatabase;
import com.ztspeech.simutalk2.dictionary.dom.SQLiteDom;
import com.ztspeech.simutalk2.dictionary.entity.KouyiRecord;
import com.ztspeech.simutalk2.trans.speak.SpeakItemData;
public class TransTextTable extends DBTable {
public static final String LANGUAGE_CH = "i=ch"; // ��������
public static final String LANGUAGE_EN = "i=en"; // ��������
public static final String LANGUAGE_LE = "i=le"; // ��������
public static Integer record_id = null;
private SQLiteDom sqlLiteDom;
public TransTextTable(String tbName) {
tableName = tbName;
sqlLiteDom = new SQLiteDom();
}
public List<SpeakItemData> mItems = new ArrayList<SpeakItemData>();
private int maxId = 1;
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE IF NOT EXISTS " + tableName + "(dataid integer primary key, "
+ "text varchar(256), type integer,language varchar(10))");
}
/**
* ɾ�������¼�й��������
*/
private void clearVoiceBuffer() {
int MAX_SIZE = 100;
int nSize = mItems.size();
SpeakItemData data = null;
for (int i = MAX_SIZE; i < nSize; i++) {
data = mItems.get(i);
data.speakStream = null;
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion == 1) {
// db.execSQL("DROP TABLE IF EXISTS "+ tableName);
// onCreate(db);
}
// db.execSQL("DROP TABLE IF EXISTS "+ tableName);
// onCreate(db);
}
public void initRecord_Id() {
record_id = sqlLiteDom.getLastRecordId();
if (record_id == null) {
record_id = 0;
}
}
public void insert(SpeakItemData obj) {
// SQLiteDatabase writer = getWritableDatabase();
// ContentValues cv =new ContentValues();
// obj.id = ++ maxId;
// int type = obj.type;
//
// if(type == SpeakItemData.Define.SPEAK_TYPE_SPEAK){
// type = SpeakItemData.Define.SPEAK_TYPE_TEXT;
// }
//
// cv.put("type", type);
// cv.put("dataid", obj.id);
// cv.put("text",obj.speak);
// cv.put("language", obj.languageSpeak);
//
// writer.insert(tableName, null, cv);
record_id++;
KouyiRecord kouyi = new KouyiRecord();
kouyi.setRecordId(record_id);
kouyi.setId(obj.taskId);
kouyi.setSaid(obj.speak);
kouyi.setTranslated(obj.trans);
kouyi.setType(obj.type);
kouyi.setDateTime(obj.datetime);
kouyi.setComment(obj.flag + "");
sqlLiteDom.insertRecord(kouyi);
}
public SpeakItemData get(int arg0) {
return mItems.get(arg0);
}
/**
* ������м�¼
*/
public void clear() {
// SQLiteDatabase writer = getWritableDatabase();
// writer.execSQL("delete from " + tableName + " where 1=?",new Object[]
// {1});
//
sqlLiteDom.deleteAllRecord();
mItems.clear();
// SpeakItemData full = new SpeakItemData();
// full.type = SpeakItemData.Define.SPEAK_TYPE_FULL;
// full.speak = " ";
// mItems.add(full);
}
// /**
// * ���ҷ�����
// * @param f
// * @return
// */
// public SpeakItemData findTrans(SpeakItemData f) {
//
// int nSize = mItems.size();
// for( int i=0; i < nSize; i ++){
// SpeakItemData data = mItems.get(i);
// if(data.id == f.id){
// if(data.type == SpeakItemData.Define.SPEAK_TYPE_TRANS){
// i--;
// if(i >=0){
// data = mItems.get(i);
// if( data.type == SpeakItemData.Define.SPEAK_TYPE_SPEAK ||
// data.type == SpeakItemData.Define.SPEAK_TYPE_TEXT){
// return data;
// }
// }
// }
// else {
// i++;
// if(i < nSize) {
// data = mItems.get(i);
// if( data.type == SpeakItemData.Define.SPEAK_TYPE_TRANS){
// return data;
// }
// }
// }
// break;
// }
// }
// return null;
// }
// public String findSaid(SpeakItemData del){
// String text = "";
// if(del.type == SpeakItemData.Define.SPEAK_TYPE_TEXT ||
// del.type == SpeakItemData.Define.SPEAK_TYPE_SPEAK){
// text = del.speak;
// }
// else if(del.type == SpeakItemData.Define.SPEAK_TYPE_TRANS){
// SpeakItemData trans = findTrans(del);
// if(trans != null){
// text = trans.speak;
// }
// }
// return text;
// }
/**
* ɾ����¼�����ض�Ӧ���� ��������0��ʼ��
*
* @param del
* @return
*/
public int remove(SpeakItemData del) {
// SpeakItemData trans = findTrans(del);
// String text = "";
// if(del.type == SpeakItemData.Define.SPEAK_TYPE_TEXT ||
// del.type == SpeakItemData.Define.SPEAK_TYPE_SPEAK){
// text = del.speak;
// }
// else if(del.type == SpeakItemData.Define.SPEAK_TYPE_TRANS){
// if(trans != null){
// text = trans.speak;
// }
// }
//
// int nSize = mItems.size();
// int nIndex = 0;
// for( int i=0; i < nSize; i ++){
// SpeakItemData data = mItems.get(i);
//
// if(data.id == del.id){
// mItems.remove(del);
// if( trans != null){
// mItems.remove(trans);
// }
// break;
// }
// if(data.speak.equals(text)) {
// nIndex ++;
// }
// }
int index = 0;
sqlLiteDom.deleteRecordById(del.recordId);
return index;
}
/**
* ��ȡ�����¼
*
* @param id
* @return KouyiRecord
*/
public KouyiRecord getRecords(int id) {
SpeakItemData obj = mItems.get(id);
KouyiRecord kouyi = new KouyiRecord();
kouyi.setRecordId(obj.id);
kouyi.setId(obj.taskId);
kouyi.setSaid(obj.speak);
kouyi.setTranslated(obj.trans);
kouyi.setType(obj.flag + "");
kouyi.setDateTime(obj.datetime);
kouyi.setComment(obj.flag + "");
// int nSize = mItems.size() - 1;
//
// for( int i=0; i < nSize; i ++){
// SpeakItemData data = mItems.get(i);
// if(data.id == id){
// if(data.type == SpeakItemData.Define.SPEAK_TYPE_TRANS){
// kouyi.setTranslated(data.speak);
// i--;
// if(i >=0){
// data = mItems.get(i);
// if( data.type == SpeakItemData.Define.SPEAK_TYPE_SPEAK ||
// data.type == SpeakItemData.Define.SPEAK_TYPE_TEXT){
// kouyi.setSaid(data.speak);
// }
// }else{
// kouyi.setSaid(" ");
// }
// }
// else {
// kouyi.setSaid(data.speak);
// i++;
// if(i < nSize) {
// data = mItems.get(i);
// if( data.type == SpeakItemData.Define.SPEAK_TYPE_TRANS){
// kouyi.setTranslated(data.speak);
// }
// }else{
// kouyi.setTranslated(" ");
// }
// }
// return kouyi;
// }
// }
return kouyi;
}
/**
* �õ���¼����
*
* @return
*/
public int size() {
return mItems.size();
}
public void add(int nIndex, SpeakItemData obj) {
clearVoiceBuffer();
insert(obj);
obj.recordId = record_id;
mItems.add(nIndex, obj);
}
public void update(int nIndex, SpeakItemData obj) {
mItems.remove(nIndex);
mItems.add(nIndex, obj);
update(obj);
}
public void commont(int nIndex, SpeakItemData obj) {
mItems.remove(nIndex);
mItems.add(nIndex, obj);
sqlLiteDom.commentRecord(obj.recordId, obj.flag);
}
public void update(SpeakItemData obj) {
KouyiRecord kouyi = new KouyiRecord();
kouyi.setRecordId(record_id);
kouyi.setSaid(obj.speak);
kouyi.setId(obj.taskId);
kouyi.setTranslated(obj.trans);
kouyi.setType(obj.type + "");
kouyi.setDateTime(obj.datetime);
kouyi.setComment(obj.flag + "");
sqlLiteDom.updateRecord(kouyi);
}
/**
* �����ݿ��м�������
*/
public void load() {
mItems.clear();
List list = sqlLiteDom.getSimilarResultInKouyi(null, 1);
KouyiRecord kouyi = null;
SpeakItemData obj = null;
for (int i = 0; i < list.size(); i++) {
kouyi = (KouyiRecord) list.get(i);
obj = new SpeakItemData();
obj.flag = Integer.parseInt(kouyi.getComment());
obj.datetime = kouyi.getDateTime();
obj.speak = kouyi.getSaid();
obj.trans = kouyi.getTranslated();
obj.recordId = kouyi.getRecordId();
obj.taskId = kouyi.getId();
obj.type = kouyi.getType();
obj.id = kouyi.getRecordId();
mItems.add(obj);
}
// SQLiteDatabase reader = this.getReadableDatabase();
// Cursor cursor = reader.rawQuery(
// "select dataid, text,type,language from " + tableName , null);
//
// if(cursor != null){
// SpeakItemData pre = null;
// while (cursor.moveToNext()) {
//
// SpeakItemData data = new SpeakItemData();
// data.id = cursor.getInt(0);
// data.speak = cursor.getString(1);
// data.type = cursor.getInt(2);
// data.languageSpeak = cursor.getString(3);
//
// if(data.type == SpeakItemData.Define.SPEAK_TYPE_SPEAK){
// data.type = SpeakItemData.Define.SPEAK_TYPE_TEXT;
// }
//
// if(data.type == SpeakItemData.Define.SPEAK_TYPE_TRANS){
// if( pre != null) {
// pre.text2 = data.text;
// data.text2 = pre.text;
// }
// }
//
// maxId = data.id;
// pre = data;
// mItems.add(data);
// }
// cursor.close();
//
// if(pre != null){
// if(pre.type == SpeakItemData.Define.SPEAK_TYPE_TEXT){
//
// }
// }
// }
// SpeakItemData full = new SpeakItemData();
// full.type = SpeakItemData.Define.SPEAK_TYPE_FULL;
// full.text = " ";
// mItems.add(full);
}
/**
* ɾ��ָ��ʶ���¼
*
* @param text
*/
// public void deleteByText(String text, int index) {
//
// int nSize = mItems.size();
// int nPos = 0;
// for( int i=0; i < nSize; i ++){
// SpeakItemData data = mItems.get(i);
// if(data.text.equals(text)){
//
// if(nPos == index) {
// mItems.remove(i);
// delete(data.id);
// nSize--;
// if(i < nSize) {
// data = mItems.get(i);
// if( data.type == SpeakItemData.Define.SPEAK_TYPE_TRANS){
// mItems.remove(i);
// delete(data.id);
// nSize--;
// }
// }
// }
// nPos++;
// }
// }
// }
// ɾ��ָ��ID����
public void delete(Integer id) {
// SQLiteDatabase writer = getWritableDatabase();
// writer.execSQL("delete from " + tableName + " where dataid=?",new
// Object[] { id });
sqlLiteDom.deleteRecordById(id);
}
}