/*
* Copyright (C) 2012-2014 Jamie Nicol <jamie@thenicols.net>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.jamienicol.episodes.db;
import android.database.sqlite.SQLiteDatabase;
import android.provider.BaseColumns;
import android.util.Log;
public class ShowsTable
{
private static final String TAG = "ShowsTable";
public static final String TABLE_NAME = "shows";
public static final String COLUMN_ID = BaseColumns._ID;
public static final String COLUMN_TVDB_ID = "tvdb_id";
public static final String COLUMN_LANGUAGE = "language";
public static final String COLUMN_NAME = "name";
public static final String COLUMN_OVERVIEW = "overview";
public static final String COLUMN_FIRST_AIRED = "first_aired";
public static final String COLUMN_STARRED = "starred";
public static final String COLUMN_BANNER_PATH = "banner_path";
public static final String COLUMN_FANART_PATH = "fanart_path";
public static final String COLUMN_POSTER_PATH = "poster_path";
public static final String COLUMN_NOTES = "notes";
public static final String COLUMN_TYPE_ID = "INTEGER PRIMARY KEY";
public static final String COLUMN_TYPE_TVDB_ID = "INTEGER UNIQUE NOT NULL";
public static final String COLUMN_TYPE_LANGUAGE = "TEXT";
public static final String COLUMN_TYPE_NAME = "TEXT NOT NULL";
public static final String COLUMN_TYPE_OVERVIEW = "TEXT";
public static final String COLUMN_TYPE_FIRST_AIRED = "DATE";
public static final String COLUMN_TYPE_STARRED = "BOOLEAN DEFAULT 0";
public static final String COLUMN_TYPE_BANNER_PATH = "TEXT";
public static final String COLUMN_TYPE_FANART_PATH = "TEXT";
public static final String COLUMN_TYPE_POSTER_PATH = "TEXT";
public static final String COLUMN_TYPE_NOTES = "TEXT";
public static void onCreate(SQLiteDatabase db) {
String create =
String.format("CREATE TABLE %s (" +
" %s %s," +
" %s %s," +
" %s %s," +
" %s %s," +
" %s %s," +
" %s %s," +
" %s %s," +
" %s %s," +
" %s %s," +
" %s %s," +
" %s %s" +
");",
TABLE_NAME,
COLUMN_ID, COLUMN_TYPE_ID,
COLUMN_TVDB_ID, COLUMN_TYPE_TVDB_ID,
COLUMN_LANGUAGE, COLUMN_TYPE_LANGUAGE,
COLUMN_NAME, COLUMN_TYPE_NAME,
COLUMN_OVERVIEW, COLUMN_TYPE_OVERVIEW,
COLUMN_FIRST_AIRED, COLUMN_TYPE_FIRST_AIRED,
COLUMN_STARRED, COLUMN_TYPE_STARRED,
COLUMN_BANNER_PATH, COLUMN_TYPE_BANNER_PATH,
COLUMN_FANART_PATH, COLUMN_TYPE_FANART_PATH,
COLUMN_POSTER_PATH, COLUMN_TYPE_POSTER_PATH,
COLUMN_NOTES, COLUMN_TYPE_NOTES);
Log.d(TAG, String.format("creating shows table: %s", create));
db.execSQL(create);
}
public static void onUpgrade(SQLiteDatabase db,
int oldVersion,
int newVersion) {
switch (oldVersion) {
case 1:
// Add starred column
Log.d(TAG, "upgrading shows table: adding starred column");
db.execSQL(String.format("ALTER TABLE %s ADD COLUMN %s %s",
TABLE_NAME,
COLUMN_STARRED,
COLUMN_TYPE_STARRED));
// fall through
case 2:
// Add banner path column
Log.d(TAG, "upgrading shows table: adding banner path column");
db.execSQL(String.format("ALTER TABLE %s ADD COLUMN %s %s",
TABLE_NAME,
COLUMN_BANNER_PATH,
COLUMN_TYPE_BANNER_PATH));
// fall through
case 3:
// Add fanart path and poster path columns
Log.d(TAG, "upgrading shows table: adding fanart path column");
db.execSQL(String.format("ALTER TABLE %s ADD COLUMN %s %s",
TABLE_NAME,
COLUMN_FANART_PATH,
COLUMN_TYPE_FANART_PATH));
Log.d(TAG, "upgrading shows table: adding poster path column");
db.execSQL(String.format("ALTER TABLE %s ADD COLUMN %s %s",
TABLE_NAME,
COLUMN_POSTER_PATH,
COLUMN_TYPE_POSTER_PATH));
// fall through
case 4:
// Add notes column
Log.d(TAG, "upgrading shows table: adding notes column");
db.execSQL(String.format("ALTER TABLE %s ADD COLUMN %s %s",
TABLE_NAME,
COLUMN_NOTES,
COLUMN_TYPE_NOTES));
// fall through
case 5:
// Add language column
Log.d(TAG, "upgrading shows table: adding language column");
db.execSQL(String.format("ALTER TABLE %s ADD COLUMN %s %s",
TABLE_NAME,
COLUMN_LANGUAGE,
COLUMN_TYPE_LANGUAGE));
// fall through
}
}
}