1 package net.osdn.gokigen.joggingtimer.recorddetail;
3 import android.database.Cursor;
4 import android.support.wearable.activity.WearableActivity;
5 import android.util.Log;
7 import net.osdn.gokigen.joggingtimer.storage.ITimeEntryDatabase;
8 import net.osdn.gokigen.joggingtimer.storage.ITimeEntryDatabaseCallback;
9 import net.osdn.gokigen.joggingtimer.storage.TimeEntryDatabaseFactory;
10 import net.osdn.gokigen.joggingtimer.storage.contract.TimeEntryData;
11 import net.osdn.gokigen.joggingtimer.utilities.IconIdProvider;
12 import net.osdn.gokigen.joggingtimer.utilities.TimeStringConvert;
14 import static android.provider.BaseColumns._ID;
15 import static net.osdn.gokigen.joggingtimer.storage.contract.TimeEntryData.EntryData.COLUMN_NAME_ICON_ID;
21 public class RecordDetailSetup implements ITimeEntryDatabaseCallback
23 private final String TAG = toString();
24 private final WearableActivity activity;
25 private final long indexId;
26 private final IDatabaseReadyNotify callback;
27 private final IRecordOperation operation;
28 private ITimeEntryDatabase database = null;
34 RecordDetailSetup(WearableActivity activity, long indexId, IDatabaseReadyNotify callback, IRecordOperation operation)
36 this.activity = activity;
37 this.indexId = indexId;
38 this.callback = callback;
39 this.operation = operation;
48 Log.v(TAG, "setup()");
49 database = new TimeEntryDatabaseFactory(activity, this).getEntryDatabase();
50 Thread thread = new Thread(new Runnable() {
72 public void prepareFinished(boolean isReady)
76 callback.databaseSetupFinished(false);
79 Thread thread = new Thread(new Runnable() {
86 operation.clearRecord();
87 Cursor cursor = database.getAllDetailData(indexId);
90 long previousLapTime = 0;
91 long morePreviousTime = 0;
92 while (cursor.moveToNext())
94 long dataId = cursor.getLong(cursor.getColumnIndex(_ID));
95 int iconId = IconIdProvider.getIconResourceId(cursor.getInt(cursor.getColumnIndex(COLUMN_NAME_ICON_ID)));
96 long entryTime = cursor.getLong(cursor.getColumnIndex(TimeEntryData.EntryData.COLUMN_NAME_TIME_ENTRY));
101 startTime = entryTime;
102 previousLapTime = entryTime;
103 morePreviousTime = entryTime;
107 long lapTime = entryTime - previousLapTime;
108 long overallTime = entryTime - startTime;
109 long differenceTime = (lapTime) - (previousLapTime - morePreviousTime);
110 String lapTimeString = "[" + index + "] " + TimeStringConvert.getTimeString(lapTime).toString();
111 String overallTimeString = TimeStringConvert.getTimeString(overallTime).toString() + " (" + TimeStringConvert.getDiffTimeString(differenceTime).toString() +") ";
112 operation.addRecord(new DetailRecord(dataId, iconId, lapTimeString, overallTimeString));
113 morePreviousTime = previousLapTime;
114 previousLapTime = entryTime;
118 activity.runOnUiThread(new Runnable()
123 operation.dataSetChangeFinished();
132 callback.databaseSetupFinished(ret);
144 public void dataEntryFinished(OperationType operationType, boolean result, long id, String title)
154 public void timeEntryFinished(OperationType operationType, boolean result, long indexId, long dataId)
177 interface IDatabaseReadyNotify
179 void databaseSetupFinished(boolean result);