package com.maxiee.heartbeat.provider;
import android.content.ContentUris;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import com.maxiee.heartbeat.database.api.GetCountByNameApi;
import com.maxiee.heartbeat.database.tables.EventsTable;
import com.maxiee.heartbeat.database.utils.DatabaseUtils;
import java.util.Random;
/**
* Created by maxiee on 16/1/10.
*/
public class ProviderEventDelegate implements IProviderEventDelegate {
@Override
public Cursor dispatchQuery(int code, Context context, Uri uri) {
switch (code) {
case Constant.API_EVENT_RANDOM_CODE: {
return random(context);
}
case Constant.API_EVENT_ID_CODE: {
long id = ContentUris.parseId(uri);
return byId(context, id);
}
default: {
return null;
}
}
}
@Override
public Cursor random(Context context) {
long eventCount = new GetCountByNameApi(context).exec(GetCountByNameApi.EVENT);
int randIndex = (int) (new Random().nextDouble() * eventCount);
Cursor cursor = DatabaseUtils.getReadableDatabase(context).rawQuery(
"SELECT " + EventsTable.ID + ", " + EventsTable.EVENT + ", " + EventsTable.TIMESTAMP
+ " FROM " + EventsTable.NAME + " LIMIT 1 OFFSET " + String.valueOf(randIndex), null);
return cursor;
}
@Override
public Cursor byId(Context context, long id) {
Cursor cursor = DatabaseUtils.getReadableDatabase(context).rawQuery(
"SELECT " + EventsTable.ID + ", " + EventsTable.EVENT + ", " + EventsTable.TIMESTAMP
+ " FROM " + EventsTable.NAME + " LIMIT 1 OFFSET " + String.valueOf(id), null);
return cursor;
}
}