package org.ohmage.loader;
import android.content.Context;
import android.database.Cursor;
import android.support.v4.content.CursorLoader;
import org.ohmage.mobility.glue.MobilityInterface;
public class MobilityAggregateLoader extends CursorLoader {
private long mTimeActive = 0;
/**
* Calculates the average aggregate time for this user
* @param context
* @param startTime inclusive
* @param endTime inclusive
* @param username
*/
public MobilityAggregateLoader(Context context, long startTime, long endTime, String username) {
super(context, MobilityInterface.AGGREGATES_URI,
new String[] { MobilityInterface.KEY_MODE, "AVG(" + MobilityInterface.KEY_DURATION + ")", MobilityInterface.KEY_DAY },
MobilityInterface.KEY_DAY + " >= date('" + startTime/1000 + "', 'unixepoch', 'localtime')"
+ " AND " + MobilityInterface.KEY_DAY + " <= date('" + endTime/1000 + "', 'unixepoch', 'localtime')"
+ " AND " + MobilityInterface.KEY_USERNAME + "=?", new String[] { username},
MobilityInterface.KEY_DAY + " DESC");
}
@Override
public Cursor loadInBackground() {
mTimeActive = 0;
Cursor data = super.loadInBackground();
if (data != null) {
while(data.moveToNext()) {
String mode = data.getString(0);
if(MobilityInterface.WALK.equals(mode) || MobilityInterface.RUN.equals(mode) || MobilityInterface.BIKE.equals(mode))
mTimeActive += data.getLong(1);
}
}
return data;
}
@Override
public void onReset() {
super.onReset();
mTimeActive = 0;
}
public long getTimeActive() {
return mTimeActive ;
}
}