package org.wikipedia.database;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import org.wikipedia.WikipediaApp;
import org.wikipedia.edit.summaries.EditSummary;
import org.wikipedia.history.HistoryEntry;
import org.wikipedia.pageimages.PageImage;
import org.wikipedia.readinglist.database.ReadingListRow;
import org.wikipedia.readinglist.page.ReadingListPageRow;
import org.wikipedia.savedpages.SavedPage;
import org.wikipedia.search.RecentSearch;
import org.wikipedia.useroption.database.UserOptionRow;
import org.wikipedia.util.log.L;
public class Database extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "wikipedia.db";
private static final int DATABASE_VERSION = 17;
private final DatabaseTable<?>[] databaseTables = {
HistoryEntry.DATABASE_TABLE,
PageImage.DATABASE_TABLE,
RecentSearch.DATABASE_TABLE,
SavedPage.DATABASE_TABLE,
EditSummary.DATABASE_TABLE,
// Order matters. UserOptionDatabaseTable has a dependency on
// UserOptionHttpDatabaseTable table when upgrading so this table must appear before it.
UserOptionRow.HTTP_DATABASE_TABLE,
UserOptionRow.DATABASE_TABLE,
ReadingListPageRow.DISK_DATABASE_TABLE,
ReadingListPageRow.HTTP_DATABASE_TABLE,
ReadingListPageRow.DATABASE_TABLE,
ReadingListRow.DATABASE_TABLE
};
public Database(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
for (DatabaseTable<?> table : databaseTables) {
table.upgradeSchema(sqLiteDatabase, 0, DATABASE_VERSION);
}
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int from, int to) {
L.i("Upgrading from=" + from + " to=" + to);
WikipediaApp.getInstance().putCrashReportProperty("fromDatabaseVersion", String.valueOf(from));
for (DatabaseTable<?> table : databaseTables) {
table.upgradeSchema(sqLiteDatabase, from, to);
}
}
}