package com.evancharlton.mileage.provider.tables;
import com.evancharlton.mileage.R;
import com.evancharlton.mileage.dao.Dao;
import com.evancharlton.mileage.dao.Fillup;
import com.evancharlton.mileage.provider.FillUpsProvider;
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteQueryBuilder;
import android.net.Uri;
import android.text.TextUtils;
public class FillupsTable extends ContentTable {
// make sure it's globally unique
private static final int FILLUPS = 10;
private static final int FILLUP_ID = 11;
private static final String CONTENT_TYPE = "vnd.android.cursor.dir/vnd.evancharlton.fillup";
private static final String CONTENT_ITEM_TYPE =
"vnd.android.cursor.item/vnd.evancharlton.fillup";
public static final String TABLE_NAME = "fillups";
public static final String URI = "fillups/";
public static final Uri BASE_URI = Uri.withAppendedPath(FillUpsProvider.BASE_URI, URI);
public static final String[] PROJECTION = new String[] {
Fillup._ID, Fillup.TOTAL_COST, Fillup.UNIT_PRICE, Fillup.VOLUME, Fillup.ODOMETER,
Fillup.ECONOMY, Fillup.VEHICLE_ID, Fillup.DATE, Fillup.LATITUDE, Fillup.LONGITUDE,
Fillup.PARTIAL, Fillup.RESTART
};
public static final String[] CSV_PROJECTION = new String[] {
Fillup._ID, Fillup.TOTAL_COST, Fillup.UNIT_PRICE, Fillup.VOLUME, Fillup.ODOMETER,
Fillup.ECONOMY, Fillup.VEHICLE_ID, Fillup.DATE, Fillup.LATITUDE, Fillup.LONGITUDE,
Fillup.PARTIAL, Fillup.RESTART
};
public static final int[] PLAINTEXT = new int[] {
R.string.column_id, R.string.column_total_cost, R.string.column_unit_price,
R.string.column_volume, R.string.column_odometer, R.string.column_economy,
R.string.column_vehicle, R.string.column_date, R.string.column_latitude,
R.string.column_longitude, R.string.column_partial, R.string.column_restart
};
@Override
protected Class<? extends Dao> getDaoType() {
return Fillup.class;
}
@Override
public String getTableName() {
return TABLE_NAME;
}
@Override
public void registerUris() {
FillUpsProvider.registerUri(this, URI, FILLUPS);
FillUpsProvider.registerUri(this, URI + "#", FILLUP_ID);
}
@Override
public String getType(final int type) {
switch (type) {
case FILLUPS:
return CONTENT_TYPE;
case FILLUP_ID:
return CONTENT_ITEM_TYPE;
}
return null;
}
@Override
public long insert(int type, SQLiteDatabase db, ContentValues initialValues) {
switch (type) {
case FILLUPS:
return db.insert(getTableName(), null, initialValues);
}
return -1L;
}
@Override
public boolean query(final int type, Uri uri, SQLiteQueryBuilder queryBuilder, Context context,
String[] projection) {
switch (type) {
case FILLUP_ID:
queryBuilder.appendWhere(TABLE_NAME + "." + Fillup._ID + " = "
+ uri.getPathSegments().get(1));
case FILLUPS:
queryBuilder.setTables(getTableName());
queryBuilder.setProjectionMap(buildProjectionMap(PROJECTION));
return true;
}
return false;
}
@Override
public int update(int match, SQLiteDatabase db, Uri uri, ContentValues values,
String selection, String[] selectionArgs) {
switch (match) {
case FILLUPS:
return db.update(getTableName(), values, selection, selectionArgs);
case FILLUP_ID:
String fillUpId = uri.getPathSegments().get(1);
String clause =
Fillup._ID + " = " + fillUpId
+ (!TextUtils.isEmpty(selection) ? " AND (" + selection + ")" : "");
return db.update(getTableName(), values, clause, selectionArgs);
}
return -1;
}
@Override
public String[] init(boolean isUpgrade) {
return null;
}
@Override
public String getDefaultSortOrder() {
return Fillup.ODOMETER + " desc";
}
@Override
public String[] getProjection() {
return PROJECTION;
}
}