package pl.llp.aircasting.tracking;
import pl.llp.aircasting.model.Measurement;
import pl.llp.aircasting.model.MeasurementStream;
import pl.llp.aircasting.storage.DatabaseTaskQueue;
import pl.llp.aircasting.storage.db.WritableDatabaseTask;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import static pl.llp.aircasting.storage.db.DBConstants.*;
/**
* Created by ags on 27/03/2013 at 00:42
*/
class ActualMeasurementTracker implements MeasurementTracker
{
final DatabaseTaskQueue dbQueue;
ActualMeasurementTracker(DatabaseTaskQueue taskQueue)
{
this.dbQueue = taskQueue;
}
@Override
public void add(final MeasurementStream stream, final Measurement measurement)
{
stream.add(measurement);
dbQueue.add(new WritableDatabaseTask<Void>()
{
@Override
public Void execute(SQLiteDatabase writableDatabase)
{
ContentValues values = new ContentValues(7);
values.put(MEASUREMENT_SESSION_ID, stream.getSessionId());
values.put(MEASUREMENT_STREAM_ID, stream.getId());
values.put(MEASUREMENT_LONGITUDE, measurement.getLongitude());
values.put(MEASUREMENT_LATITUDE, measurement.getLatitude());
values.put(MEASUREMENT_VALUE, measurement.getValue());
values.put(MEASUREMENT_MEASURED_VALUE, measurement.getMeasuredValue());
values.put(MEASUREMENT_TIME, measurement.getTime().getTime());
writableDatabase.insertOrThrow(MEASUREMENT_TABLE_NAME, null, values);
return null;
}
});
}
}