package edu.vanderbilt.cs282.feisele.lab06.provider; import edu.vanderbilt.cs282.feisele.lab06.provider.DownloadContentProviderSchema.ImageTable; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; /** * This object is used to manage the lifecycle of the download database. * * @author "Fred Eisele" <phreed@gmail.com> */ public class DownloadDatabaseHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "downloaded.db"; private static final int DATABASE_VERSION = 3; private DownloadDatabaseHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); } public static DownloadDatabaseHelper newInstance(Context context) { return new DownloadDatabaseHelper(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(DownloadDatabaseHelper.sqlCreateTable()); } /** * This method is provided to support the mock provider. * * @return sql create table statement */ static public String sqlCreateTable() { final StringBuilder builder = new StringBuilder("CREATE TABLE") .append(' ').append('"').append(ImageTable.NAME).append('"') .append(' ').append('('); for (ImageTable field : ImageTable.values()) { builder.append("'").append(field.title).append("'").append(' ') .append(field.type).append(' ').append(field.props) .append(',').append(' '); } builder.append("UNIQUE (\"").append(ImageTable.ID.title) .append("\") ON CONFLICT REPLACE)"); return builder.toString(); } /** * Upgrades are a simple drop and recreate. No effort is made to reclaim * data from the previous build. */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { if (oldVersion >= newVersion) return; db.execSQL(DownloadDatabaseHelper.sqlDropTable()); this.onCreate(db); } /** * This method is provided to support the mock provider. * * @return sql create table statement */ static public String sqlDropTable() { return new StringBuilder("DROP TABLE IF EXISTS").append(' ') .append('"').append(ImageTable.NAME).append('"').toString(); } }