package com.example.wordbook.provider;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.provider.BaseColumns;

/**
 * DB管理クラス
 */
public final class WBHelper extends SQLiteOpenHelper {

	/** Helper */
	private static WBHelper mHelper = null;

	/**
	 * コンストラクタ
	 * 
	 * @param context
	 *            コンテキスト
	 */
	private WBHelper(Context context) {
		super(context, WBData.DATABASE_NAME, null, WBData.DATABASE_VERSION);
	}

	/**
	 * インスタンス取得処理
	 * 
	 * @param context
	 *            コンテキスト
	 * @return WBHelper
	 */
	public static synchronized WBHelper getInstance(Context context) {
		if (mHelper == null) {
			mHelper = new WBHelper(context);
		}
		return mHelper;
	}

	/**
	 * DB生成処理
	 * 
	 * @param db
	 *            SQLiteDatabase
	 */
	@Override
	public void onCreate(SQLiteDatabase db) {
		// DB定義クラスの情報から生成
		db.execSQL("CREATE TABLE IF NOT EXISTS " + WBData.TABLE_NAME_INFO
				+ " (" + BaseColumns._ID
				+ " INTEGER PRIMARY KEY AUTOINCREMENT,"
				+ WBData.InfoColumns.INFO_FILE + " "
				+ WBData.InfoColumns.INFO_FILE_TYPE + ","
				+ WBData.InfoColumns.INFO_NUM + " "
				+ WBData.InfoColumns.INFO_NUM_TYPE + ","
				+ WBData.InfoColumns.INFO_STAT + " "
				+ WBData.InfoColumns.INFO_STAT_TYPE + ","
				+ WBData.InfoColumns.INFO_LEVEL + " "
				+ WBData.InfoColumns.INFO_LEVEL_TYPE + ","
				+ WBData.InfoColumns.INFO_FLAG + " "
				+ WBData.InfoColumns.INFO_FLAG_TYPE + ","
				+ WBData.InfoColumns.INFO_OK + " "
				+ WBData.InfoColumns.INFO_OK_TYPE + ","
				+ WBData.InfoColumns.INFO_NG + " "
				+ WBData.InfoColumns.INFO_NG_TYPE + ","
				+ WBData.InfoColumns.INFO_QUESTION + " "
				+ WBData.InfoColumns.INFO_QUESTION_TYPE + ","
				+ WBData.InfoColumns.INFO_ANSWER + " "
				+ WBData.InfoColumns.INFO_ANSWER_TYPE + ","
				+ WBData.InfoColumns.INFO_DATA1 + " "
				+ WBData.InfoColumns.INFO_DATA1_TYPE + ","
				+ WBData.InfoColumns.INFO_DATA2 + " "
				+ WBData.InfoColumns.INFO_DATA2_TYPE + ")");
	}

	/**
	 * DB更新処理
	 * 
	 * @param db
	 *            SQLiteDatabase
	 * @param oldVersion
	 *            旧DBバージョン
	 * @param newVersion
	 *            新DBバージョン
	 */
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		// DBの移行は行わずに再生成
		db.execSQL("DROP TABLE IF EXISTS " + WBData.TABLE_NAME_INFO);
		onCreate(db);
	}

}