package com.arretadogames.pilot.database; import com.arretadogames.pilot.levels.LevelTable; import com.arretadogames.pilot.tournaments.TournamentType; import android.content.ContentValues; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class GameDatabaseOpenHelper extends SQLiteOpenHelper { private static final int DATABASE_VERSION = 60; private static final String DATABASE_NAME = "pilotproject_db"; private static final String USER_TABLE_CREATE = "CREATE TABLE " + GameDatabase.TABLE_ACCOUNT + " (" + GameDatabase.ACCOUNT_ID + " INTEGER PRIMARY KEY, " + GameDatabase.ACC_COINS + " INTEGER, " + GameDatabase.USER_NAME + " TEXT, " + GameDatabase.IMAGE + " NONE, " + GameDatabase.PROVIDER_ACC_ID + " TEXT, " + GameDatabase.ACC_PROVIDER + " TEXT); "; private static final String LEVEL_TABLE_CREATE = "CREATE TABLE " + GameDatabase.TABLE_LEVEL + " (" + GameDatabase.LEVEL_ID + " INTEGER PRIMARY KEY, " + GameDatabase.ACC_ID_RECORD_FIRST + " INTEGER, " + GameDatabase.RECORD_VALUE_FIRST + " INTEGER, " + GameDatabase.ACC_ID_RECORD_SECOND + " INTEGER, " + GameDatabase.RECORD_VALUE_SECOND + " INTEGER, " + GameDatabase.ACC_ID_RECORD_THIRD + " INTEGER, " + GameDatabase.RECORD_VALUE_THIRD + " INTEGER, " + GameDatabase.LEVEL_ENABLED + " BOOLEAN); "; private static final String REAL_ITEMS_TABLE_CREATE = "CREATE TABLE " + GameDatabase.TABLE_REAL_ITEMS + " (" + GameDatabase.R_ITEM_ID + " INTEGER PRIMARY KEY, " + GameDatabase.R_ITEM_NAME + " TEXT, " + GameDatabase.R_ITEM_DESCRIPTION + " TEXT, " + GameDatabase.R_ITEM_RES_NAME + " TEXT, " + GameDatabase.R_ITEM_PRICE + " REAL, " + GameDatabase.R_ITEM_SKU_CODE + " TEXT); "; private static final String DIGITAL_ITEMS_TABLE_CREATE = "CREATE TABLE " + GameDatabase.TABLE_DIGITAL_ITEMS + " (" + GameDatabase.R_ITEM_ID + " INTEGER PRIMARY KEY, " + GameDatabase.R_ITEM_NAME + " TEXT, " + GameDatabase.R_ITEM_DESCRIPTION + " TEXT, " + GameDatabase.R_ITEM_RES_NAME + " TEXT, " + GameDatabase.R_ITEM_PRICE + " INTEGER); "; private static final String PLAYER_ITEMS_TABLE_CREATE = "CREATE TABLE " + GameDatabase.TABLE_PLAYER_ITEMS + " (" + GameDatabase.R_ITEM_ID + " INTEGER PRIMARY KEY, " + GameDatabase.R_ITEM_NAME + " TEXT); "; private static final String PLAYER_TOURNAMENTS_TABLE_CREATE = "CREATE TABLE " + GameDatabase.TABLE_PLAYER_TOURNAMENTS + " (" + GameDatabase.TOURNAMENT_ID + " INTEGER PRIMARY KEY, " + GameDatabase.T_ENABLED + " BOOLEAN, " + GameDatabase.T_TYPE_NAME + " TEXT); "; private static final String PLAYER_TOURNAMENT_LEVELS_CREATE = "CREATE TABLE " + GameDatabase.TABLE_TOURNAMENT_LEVELS + " (" + GameDatabase.TOURNAMENT_ID + " INTEGER , " + GameDatabase.LEVEL_ID + " INTEGER ," + " FOREIGN KEY (" + GameDatabase.TOURNAMENT_ID + ") REFERENCES " + GameDatabase.TABLE_PLAYER_TOURNAMENTS + " ("+GameDatabase.TOURNAMENT_ID+")," + " FOREIGN KEY (" + GameDatabase.LEVEL_ID + ") REFERENCES " + GameDatabase.TABLE_LEVEL + " ("+GameDatabase.LEVEL_ID+"));"; public GameDatabaseOpenHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { initializeDB(db); } private void initializeDB(SQLiteDatabase db) { db.execSQL(LEVEL_TABLE_CREATE); db.execSQL(USER_TABLE_CREATE); db.execSQL(REAL_ITEMS_TABLE_CREATE); db.execSQL(DIGITAL_ITEMS_TABLE_CREATE); db.execSQL(PLAYER_ITEMS_TABLE_CREATE); db.execSQL(PLAYER_TOURNAMENTS_TABLE_CREATE); db.execSQL(PLAYER_TOURNAMENT_LEVELS_CREATE); ContentValues values = new ContentValues(); // Add Levels for(int i = 0; i < LevelTable.LEVELS.length; i++){ values.put(GameDatabase.LEVEL_ID, i); values.put(GameDatabase.LEVEL_ENABLED, true); values.put(GameDatabase.RECORD_VALUE_FIRST, -1); values.put(GameDatabase.RECORD_VALUE_SECOND, -1); values.put(GameDatabase.RECORD_VALUE_THIRD, -1); db.insert(GameDatabase.TABLE_LEVEL, null, values); values.clear(); } // Add Anonymous Account values.put(GameDatabase.ACCOUNT_ID, 0); values.put(GameDatabase.USER_NAME, "Anonymous"); values.put(GameDatabase.ACC_COINS, 0); values.put(GameDatabase.PROVIDER_ACC_ID, "self"); values.putNull(GameDatabase.IMAGE); values.put(GameDatabase.ACC_PROVIDER, "self"); db.insert(GameDatabase.TABLE_ACCOUNT, null, values); values.clear(); // Add Tournaments for(int i = 0; i < 3; i++){ System.out.println("Criando Tournament de id : " + i); values.put(GameDatabase.TOURNAMENT_ID, i); if (i == 0){ values.put(GameDatabase.T_ENABLED, true); }else{ values.put(GameDatabase.T_ENABLED, false); } switch (i) { case 0: values.put(GameDatabase.T_TYPE_NAME, TournamentType.JUNGLE.toString()); break; case 1: values.put(GameDatabase.T_TYPE_NAME, TournamentType.DESERT.toString()); break; case 2: values.put(GameDatabase.T_TYPE_NAME, TournamentType.SWAMP.toString()); break; default: break; } db.insert(GameDatabase.TABLE_PLAYER_TOURNAMENTS, null, values); values.clear(); } // Adding Levels to Tournaments for (int i = 0; i < 3; i++) { values.put(GameDatabase.TOURNAMENT_ID, 0); values.put(GameDatabase.LEVEL_ID, i); db.insert(GameDatabase.TABLE_TOURNAMENT_LEVELS, null, values); values.clear(); } StoreInitializeHelper.initializeStore(db); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { if (oldVersion < newVersion) { db.execSQL("DROP TABLE IF EXISTS " + GameDatabase.TABLE_LEVEL); db.execSQL("DROP TABLE IF EXISTS " + GameDatabase.TABLE_NEXT_LEVEL); db.execSQL("DROP TABLE IF EXISTS " + GameDatabase.TABLE_ACCOUNT); db.execSQL("DROP TABLE IF EXISTS " + GameDatabase.TABLE_REAL_ITEMS); db.execSQL("DROP TABLE IF EXISTS " + GameDatabase.TABLE_DIGITAL_ITEMS); db.execSQL("DROP TABLE IF EXISTS " + GameDatabase.TABLE_PLAYER_ITEMS); db.execSQL("DROP TABLE IF EXISTS " + GameDatabase.TABLE_PLAYER_TOURNAMENTS); db.execSQL("DROP TABLE IF EXISTS " + GameDatabase.TABLE_TOURNAMENT_LEVELS); initializeDB(db); } } @Override public void onOpen(SQLiteDatabase db) { super.onOpen(db); } }