package com.ztspeech.simutalk2.data; import java.io.File; import java.util.ArrayList; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; import com.ztspeech.simutalk2.R; import com.ztspeech.simutalk2.dictionary.dom.InitDataBase; import com.ztspeech.simutalk2.dictionary.dom.SQLiteDom; import com.ztspeech.simutalk2.dictionary.util.Util; public class TransDataBase extends SQLiteOpenHelper { private static TransDataBase mInstance = null; private Context context; private ArrayList<DBTable> tables = new ArrayList<DBTable>(); public TransDataBase(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); // TODO Auto-generated constructor stub this.context = context; } public synchronized static TransDataBase getInstance(Context context, String name, int version) { if(mInstance==null){ mInstance = new TransDataBase(context, name, version); } return mInstance; } private String databaseFilename2 = Util.DATABASE_PATH + "/" + Util.DATABASE_FILENAME2; public TransDataBase(Context context, String dbName, int version) { // ��һ��������Ӧ�õ������� // �ڶ���������Ӧ�õ����ݿ����� // ����������CursorFactoryָ����ִ�в�ѯʱ���һ���α�ʵ���Ĺ�����,����Ϊnull,����ʹ��ϵͳĬ�ϵĹ����� // ���ĸ����������ݿ�汾�������Ǵ���0��int�����Ǹ����� super(context, dbName, null, version); mInstance = this; } /** * �����¼���ݿ��ʼ�� * */ private String isok2 = null; public String getUserDatabaseInittedResult() { File dir = new File(Util.DATABASE_PATH); if (!dir.exists()) { dir.mkdirs(); } File dd = new File(databaseFilename2); if (dd.exists()) { isok2 = context.getResources().getString(R.string.dbInit_Successfull); } else { isok2 = null; } return isok2; } /** * �����¼���ݿ��ʼ�� * */ @SuppressWarnings("unused") private void initUserDatabase() { InitDataBase writeDBtoSDCard = new InitDataBase(context); isok2 = writeDBtoSDCard.writeDatabaseToPhone(); if (isok2.equals(context.getResources().getString(R.string.dbInit_Successfull))) { new SQLiteDom().openDB2(); } } @Override public void onCreate(SQLiteDatabase db) { File dir = new File(Util.DATABASE_PATH); if (!dir.exists()) { dir.mkdirs(); } File dd = new File(databaseFilename2); if (dd.exists()) { dd.delete(); } // initUserDatabase(); for (int i = 0; i < tables.size(); i++) { tables.get(i).onCreate(db); } } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub if (newVersion > oldVersion && oldVersion <= 4) { SQLiteDom ss = new SQLiteDom(); ss.openDB2(); ss.updateUserDatabaseVersion(); } for (int i = 0; i < tables.size(); i++) { tables.get(i).onUpgrade(db, oldVersion, newVersion); } } public void addTable(DBTable tb) { for (int i = 0; i < tables.size(); i++) { if (tb == tables.get(i)) { return; } } tb.setDataBase(this); tables.add(tb); } }