package com.evancharlton.mileage.tasks;
import com.evancharlton.mileage.FillupInfoActivity;
import com.evancharlton.mileage.R;
import com.evancharlton.mileage.dao.Fillup;
import com.evancharlton.mileage.tasks.FillupInfoTask.DataHolder;
public class FillupInfoTask extends AttachableAsyncTask<FillupInfoActivity, Void, DataHolder, Void> {
private final Fillup mFillup;
public FillupInfoTask(Fillup fillup) {
mFillup = fillup;
}
@Override
protected void onProgressUpdate(DataHolder... update) {
for (DataHolder info : update) {
getParent().addInformation(info);
}
}
private void publish(int key, double data) {
publishProgress(new DataHolder(key, data));
}
@Override
protected Void doInBackground(Void... params) {
Fillup prev = mFillup.loadPrevious(getParent());
mFillup.setPrevious(prev);
// do the easy stuff first
publish(R.string.column_partial, mFillup.isPartial() ? 1D : 0D);
publish(R.string.column_volume, mFillup.getVolume());
publish(R.string.column_odometer, mFillup.getOdometer());
publish(R.string.column_total_cost, mFillup.getTotalCost());
publish(R.string.column_unit_price, mFillup.getUnitPrice());
// some of the statistics
if (mFillup.hasPrevious()) {
publish(R.string.info_distance, mFillup.getDistance());
publish(R.string.info_economy, mFillup.getEconomy());
}
return null;
}
public static final class DataHolder {
public final int key;
public final double data;
public DataHolder(int key, double data) {
this.key = key;
this.data = data;
}
}
}