package cn.net.caoyao.cpzshandset.db;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class CommonEggDBHelper extends SQLiteOpenHelper {
	/**
	 * VERSION:2 (增加激活打包表)
	 */
	private static final int VERSION = 1;// 提交状态增加一个生产功能
	public final static String db_name = "commonEggHandset.db";
	/**
	 * 产品信息表
	 */
	public static final String tb_product_info = "productInfo";

	/**
	 * 激活信息表
	 */
	public static final String tb_activate_info = "activateInfo";
	/**
	 * 激活打包
	 */
	public static final String tb_activate_pack_info = "activatePackInfo";
	/**
	 * 单标操作表
	 */
	public static final String tb_single_label_option = "singleLabelOption";
	/**
	 * 批量标签操作表
	 */
	public static final String tb_batch_label_option = "batchLabelOption";
	/**
	 * 出库、入库、返库表
	 */
	public static final String tb_warehouse_option = "warehouseOption";
	
	/**
	 * 销售
	 */
	public static final String tb_sales_info = "salesInfo";
	/**
	 * 打包
	 */
	public static final String tb_pack_info = "packInfo";
	/**
	 * 拆包
	 */
	public static final String tb_unpack_info = "unpackInfo";
	/**
	 * 上传记录
	 */
	public static final String tb_upload_status = "uploadStatus";
	/**
	 * 打包的包标签表
	 */
	public static final String tb_pack_package_info="packPackageInfo";//打包的包标签表
	/**
	 * 打包的子标签表
	 */
	public static final String tb_pack_sub_label_info="packSubLabelInfo";//打包的子标签表
	


	public CommonEggDBHelper(Context context) {
		super(context, db_name, null, VERSION);
	}

	@Override
	public void onCreate(SQLiteDatabase db) {
		createProductInfo(db);
		createActivateInfo(db);
		createSingleLabelOption(db);
		createBatchLabelOption(db);
		createWarehouseOption(db);
		createSalesInfo(db);
		createPackInfo(db);
		createUnpackInfo(db);
		createUploadStatus(db);
		createActivatePackInfo(db);
		createPackPackageInfo(db);
		createPackSubLabelInfo(db);
	}
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
	}
	

	private void createPackSubLabelInfo(SQLiteDatabase db) {
		String sql = "CREATE TABLE if not exists " + tb_pack_sub_label_info + " (id INTEGER PRIMARY KEY AUTOINCREMENT,label_id bigint,package_id INTEGER,option_id INTEGER,option_type INTEGER,labelStatus INTEGER default 0)";
		db.execSQL(sql);
	}
	private void createPackPackageInfo(SQLiteDatabase db) {
		String sql = "CREATE TABLE if not exists " + tb_pack_package_info+" (id INTEGER PRIMARY KEY AUTOINCREMENT, package_label_id bigint,option_id INTEGER, option_type INTEGER, count INTEGER,status INTEGER,error_code INTEGER,createDate DATE DEFAULT (date('now','localtime')))";
		db.execSQL(sql);
	}
	private void createActivatePackInfo(SQLiteDatabase db) {
		String sql = "CREATE TABLE if not exists " + tb_activate_pack_info + " (id INTEGER PRIMARY KEY AUTOINCREMENT,product_id VARCHAR(20),product_date VARCHAR(20),product_batch_number VARCHAR(20),producer VARCHAR(20),option_mode INTEGER,package_label_id VARCHAR(20),count INTEGER,status INTEGER,error_code INTEGER,createDate DATE DEFAULT (date('now','localtime')))";
		db.execSQL(sql);
	}

	/**
	 * id：表ID,主键自增
	 * option_type：操作类型（其中的插入值对应于HansetOperationConstant类中的值）
	 * label_count：上传的标签数量
	 * status：提交状态  0：上传成功 1：上传失败
	 * error_code：服务器返回的错误码
	 * upload_date：创建时间
	 * @param db
	 */
	private void createUploadStatus(SQLiteDatabase db) {
		String sql = "CREATE TABLE " + tb_upload_status + " (id INTEGER PRIMARY KEY AUTOINCREMENT,option_type INTEGER,label_count INTEGER,status INTEGER,error_code INTEGER,upload_date DATE DEFAULT (date('now','localtime')))";
		db.execSQL(sql);
	}

	/**
	 * label_id：要拆包的labelID
	 * status：提交状态  0：未提交  1：提交失败
	 * error_code：服务器返回的错误码
	 * createDate：创建时间
	 * @param db
	 */
	private void createUnpackInfo(SQLiteDatabase db) {
		String sql = "CREATE TABLE " + tb_unpack_info + " (id INTEGER PRIMARY KEY AUTOINCREMENT,label_id VARCHAR(20),status INTEGER,error_code INTEGER,createDate DATE DEFAULT (date('now','localtime')))";
		db.execSQL(sql);
	}

	/**
	 * id：表ID,主键自增
	 * describe：描述
	 * count：预设数量
	 * package_label_id：包标签
	 * option_mode：0：单标激活 1：批量激活
	 * status：提交状态  0：未提交  1：提交失败
	 * error_code：服务器返回的错误码
	 * createDate：创建时间
	 * @param db
	 */
	private void createPackInfo(SQLiteDatabase db) {
		String sql = "CREATE TABLE " + tb_pack_info + " (id INTEGER PRIMARY KEY AUTOINCREMENT,describe VARCHAR(20),count INTEGER,package_label_id VARCHAR(20),option_mode INTEGER,status INTEGER,error_code INTEGER,createDate DATE DEFAULT (date('now','localtime')))";
		db.execSQL(sql);
	}

	/**
	 * id：表ID,主键自增
	 * describe：描述
	 * sales_area：销售区域
	 * option_mode：0：单标激活 1：批量激活
	 * status：提交状态  0：未提交  1：提交失败
	 * error_code：服务器返回的错误码
	 * createDate：创建时间
	 * @param db
	 */
	private void createSalesInfo(SQLiteDatabase db) {
		String sql = "CREATE TABLE " + tb_sales_info + " (id INTEGER PRIMARY KEY AUTOINCREMENT,describe VARCHAR(20),sales_area INTEGER,option_mode INTEGER,status INTEGER,error_code INTEGER,createDate DATE DEFAULT (date('now','localtime')))";
		db.execSQL(sql);
	}

	/**
	 * id：表ID,主键自增
	 * describe：描述
	 * option_type：操作类型（其中的插入值对应于HansetOperationConstant类中的值）
	 * option_mode：0：单标激活 1：批量激活
	 * sale_area_code:销售区域
	 * status：提交状态  0：未提交  1：提交失败
	 * error_code：服务器返回的错误码
	 * createDate：创建时间
	 * @param db
	 */
	private void createWarehouseOption(SQLiteDatabase db) {
		String sql = "CREATE TABLE " + tb_warehouse_option + " (id INTEGER PRIMARY KEY AUTOINCREMENT,describe VARCHAR(20),option_type INTEGER,option_mode INTEGER,sale_area_code INTEGER default 0,status INTEGER,error_code INTEGER,createDate DATE DEFAULT (date('now','localtime')))";
		db.execSQL(sql);
	}

	/**
	 * start_label_id：起始标签
	 * end_label_id：结束标签
	 * option_type：操作类型（其中的插入值对应于HansetOperationConstant类中的值）
	 * option_id：关联的表的id
	 * @param db
	 */
	private void createBatchLabelOption(SQLiteDatabase db) {
		String sql = "CREATE TABLE " + tb_batch_label_option + " (id INTEGER PRIMARY KEY AUTOINCREMENT,start_label_id bigint,end_label_id bigint,option_type INTEGER,option_id INTEGER)";
		db.execSQL(sql);
	}

	/**
	 * label_id：扫描的标签id   
	 * option_type：操作类型（其中的插入值对应于HansetOperationConstant类中的值）
	 * option_id：关联的表的id
	 * labelStatus：当前标签的状态   0:默认值    1:不合法标签    2:重复激活标签     3:未激活标签
	 * @param db
	 */
	private void createSingleLabelOption(SQLiteDatabase db) {
		String sql = "CREATE TABLE " + tb_single_label_option + " (id INTEGER PRIMARY KEY AUTOINCREMENT,label_id bigint,option_type INTEGER,option_id INTEGER,labelStatus INTEGER default 0)";
		db.execSQL(sql);	
	}

	/**
	 * id:激活表ID,主键自增
	 * product_id：对应的产品表中的产品ID
	 * product_date：生产日期
	 * product_batch_number：生产批号
	 * producer：生产者
	 * option_mode：操作方式   0：单标激活   1：批量激活
	 * status：提交状态  0：未提交  1：提交失败
	 * error_code：服务器返回的错误码
	 * createDate：创建时间
	 * 
	 * @param db
	 */
	private void createActivateInfo(SQLiteDatabase db) {
		String sql = "CREATE TABLE " + tb_activate_info + " (id INTEGER PRIMARY KEY AUTOINCREMENT,product_id VARCHAR(20),product_date VARCHAR(20),product_batch_number VARCHAR(20),producer VARCHAR(20),option_mode INTEGER,status INTEGER,error_code INTEGER,createDate DATE DEFAULT (date('now','localtime')))";
		db.execSQL(sql);		
	}

	/**
	 * id:产品id，服务器返回的数据直接插入
	 * name：产品名称
	 * namePY：产品名称的拼音
	 * nid：产品编号（即，商品条码）
	 * @param db
	 */
	private void createProductInfo(SQLiteDatabase db) {
		String sql = "CREATE TABLE " + tb_product_info + " (id VARCHAR(20),name VARCHAR(20), namePY VARCHAR(20),nid VARCHAR(20))";
		db.execSQL(sql);		
	}

	
	/**
	 * 检测数据库中是否存在某一列
	 * @param db
	 * @param tableName
	 * @param primaryKeyName
	 * @param columnName
	 * @return true:存在    false:不存在
	 */
	private boolean checkColumnExists(SQLiteDatabase db,String tableName, String primaryKeyName,String columnName){
		boolean b = true;
		String sql = "SELECT * from " + tableName +" where "+primaryKeyName+"=0";
		Cursor cursor = db.rawQuery(sql, null);
		int columnIndex = cursor.getColumnIndex(columnName);
		cursor.close();
		if (columnIndex < 0) {
			b = false;
		}
		return b;
	}

}
