package org.wikipedia.readinglist.page.database;
import android.content.ContentValues;
import android.database.Cursor;
import android.support.annotation.NonNull;
import org.wikipedia.database.async.AsyncTable;
import org.wikipedia.database.column.Column;
import org.wikipedia.database.contract.ReadingListPageContract;
import org.wikipedia.readinglist.page.ReadingListPageRow;
import org.wikipedia.readinglist.page.database.disk.DiskRow;
import org.wikipedia.readinglist.page.database.disk.DiskStatus;
import org.wikipedia.readinglist.page.database.disk.ReadingListPageDiskRow;
public class ReadingListPageDiskTable
extends AsyncTable<DiskStatus, ReadingListPageRow, DiskRow<ReadingListPageRow>> {
private static final int DATABASE_VERSION = 12;
public ReadingListPageDiskTable() {
super(ReadingListPageContract.TABLE_DISK, ReadingListPageContract.Disk.URI,
ReadingListPageContract.DISK_COLS);
}
@Override public ReadingListPageDiskRow fromCursor(@NonNull Cursor cursor) {
DiskRow<ReadingListPageRow> diskRow = ReadingListPageContract.DISK_COLS.val(cursor);
return new ReadingListPageDiskRow(diskRow, null);
}
@NonNull @Override public Column<?>[] getColumnsAdded(int version) {
switch (version) {
case DATABASE_VERSION:
Column<?>[] diskCols = super.getColumnsAdded(version);
Column<?>[] cols = new Column<?>[diskCols.length + 1];
System.arraycopy(diskCols, 0, cols, 0, diskCols.length);
cols[diskCols.length] = ReadingListPageContract.DiskCol.FILENAME;
return cols;
default:
return super.getColumnsAdded(version);
}
}
@Override protected ContentValues toContentValues(@NonNull DiskRow<ReadingListPageRow> row) {
return ReadingListPageContract.DISK_COLS.toContentValues(row);
}
@Override protected int getDBVersionIntroducedAt() {
return DATABASE_VERSION;
}
}