package org.wikipedia.database.async;
import android.content.ContentValues;
import android.net.Uri;
import android.support.annotation.NonNull;
import org.wikipedia.database.DatabaseTable;
import org.wikipedia.database.column.Column;
import org.wikipedia.model.EnumCode;
import java.util.ArrayList;
import java.util.List;
public abstract class AsyncTable<Status extends EnumCode, Dat, Row extends AsyncRow<Status, Dat>>
extends DatabaseTable<Row> {
@NonNull private final AsyncColumns<Status, Dat, Row> cols;
public AsyncTable(@NonNull String tbl, @NonNull Uri baseUri,
@NonNull AsyncColumns<Status, Dat, Row> cols) {
super(tbl, baseUri);
this.cols = cols;
}
@NonNull @Override public Column<?>[] getColumnsAdded(int version) {
if (version == getDBVersionIntroducedAt()) {
List<Column<?>> added = new ArrayList<>();
added.add(cols.id());
added.add(cols.key());
added.add(cols.status());
added.add(cols.timestamp());
added.add(cols.transactionId());
return added.toArray(new Column<?>[added.size()]);
}
return super.getColumnsAdded(version);
}
@Override protected ContentValues toContentValues(@NonNull Row row) {
return cols.toContentValues(row);
}
@Override protected String getPrimaryKeySelection(@NonNull Row row,
@NonNull String[] selectionArgs) {
return super.getPrimaryKeySelection(row, new String[] {cols.key().getName()});
}
@Override protected String[] getUnfilteredPrimaryKeySelectionArgs(@NonNull Row row) {
return new String[] {row.key()};
}
}