blob: ba73f9ca3d6db6e44bfe87a672b6008b46ab577c [file] [log] [blame]
package org.wordpress.android.datasets;
import java.util.Map;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
/**
* A class to represent an database table.
*/
public abstract class SQLTable {
public abstract String getName();
protected abstract String getUniqueConstraint();
protected abstract Map<String, String> getColumnMapping();
protected static class BaseColumns {
protected final static String _ID = "_id";
}
public String toCreateQuery() {
String createQuery = "CREATE TABLE IF NOT EXISTS " + getName() + " (";
Map<String, String> columns = getColumnMapping();
for (String column : columns.keySet()) {
createQuery += column + " " + columns.get(column) + ", ";
}
createQuery += getUniqueConstraint() + ");";
return createQuery;
}
public abstract void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion);
public Cursor query(final SQLiteDatabase database, final Uri uri, final String[] projection, final String selection, final String[] selectionArgs, final String sortOrder) {
return database.query(getName(), projection, selection, selectionArgs, null, null, sortOrder);
}
public long insert(final SQLiteDatabase database, final Uri uri, final ContentValues values) {
return database.insert(getName(), null, values);
}
public long insert(final SQLiteDatabase database, final ContentValues values) {
return insert(database, null, values);
}
public int update(final SQLiteDatabase database, final Uri uri, final ContentValues values, final String selection, final String[] selectionArgs) {
return database.update(getName(), values, selection, selectionArgs);
}
public int update(final SQLiteDatabase database, final ContentValues values, final String selection, final String[] selectionArgs) {
return update(database, null, values, selection, selectionArgs);
}
public int delete(final SQLiteDatabase database, final Uri uri, final String selection, final String[] selectionArgs) {
return database.delete(getName(), selection, selectionArgs);
}
public int delete(final SQLiteDatabase database, final String selection, final String[] selectionArgs) {
return delete(database, null, selection, selectionArgs);
}
}