OSDN Git Service

過去記録表示を作りこむ。(データの削除はまだ。)
[gokigen/JoggingTimer.git] / wear / src / main / java / net / osdn / gokigen / joggingtimer / recordlist / RecordSummarySetup.java
1 package net.osdn.gokigen.joggingtimer.recordlist;
2
3 import android.database.Cursor;
4 import android.support.wearable.activity.WearableActivity;
5 import android.util.Log;
6
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.utilities.IconIdProvider;
11 import net.osdn.gokigen.joggingtimer.utilities.TimeStringConvert;
12
13 import static android.provider.BaseColumns._ID;
14 import static net.osdn.gokigen.joggingtimer.storage.contract.TimeEntryIndex.EntryIndex.COLUMN_NAME_ICON_ID;
15 import static net.osdn.gokigen.joggingtimer.storage.contract.TimeEntryIndex.EntryIndex.COLUMN_NAME_TIME_DURATION;
16 import static net.osdn.gokigen.joggingtimer.storage.contract.TimeEntryIndex.EntryIndex.COLUMN_NAME_TITLE;
17
18 /**
19  *
20  *
21  */
22 class RecordSummarySetup implements ITimeEntryDatabaseCallback
23 {
24     private final String TAG = toString();
25     private final WearableActivity activity;
26     private final IDatabaseReadyNotify callback;
27     private final IDetailLauncher detailLauncher;
28     private final IRecordOperation operation;
29     private ITimeEntryDatabase database = null;
30
31     RecordSummarySetup(WearableActivity activity, IDatabaseReadyNotify callback, IDetailLauncher detailLauncher, IRecordOperation operation)
32     {
33         this.activity = activity;
34         this.callback = callback;
35         this.detailLauncher = detailLauncher;
36         this.operation = operation;
37     }
38
39     void setup()
40     {
41         Log.v(TAG, "setup()");
42         database = new TimeEntryDatabaseFactory(activity, this).getEntryDatabase();
43         Thread thread = new Thread(new Runnable() {
44             @Override
45             public void run()
46             {
47                 try
48                 {
49                     database.prepare();
50                 }
51                 catch (Exception e)
52                 {
53                     e.printStackTrace();
54                 }
55             }
56         });
57         thread.start();
58     }
59
60     @Override
61     public void prepareFinished(boolean isReady)
62     {
63         if (!isReady)
64         {
65             callback.databaseSetupFinished(false);
66             return;
67         }
68         Thread thread = new Thread(new Runnable() {
69             @Override
70             public void run()
71             {
72                 boolean ret = false;
73                 try
74                 {
75                     operation.clearRecord();
76                     Cursor cursor = database.getAllIndexData();
77                     while (cursor.moveToNext())
78                     {
79                         long dataId = cursor.getLong(cursor.getColumnIndex(_ID));
80                         String title = cursor.getString(cursor.getColumnIndex(COLUMN_NAME_TITLE));
81                         //String memo = cursor.getString(cursor.getColumnIndex(COLUMN_NAME_MEMO));
82                         int iconId = IconIdProvider.getIconResourceId(cursor.getInt(cursor.getColumnIndex(COLUMN_NAME_ICON_ID)));
83                         //long startTime = cursor.getLong(cursor.getColumnIndex(COLUMN_NAME_START_TIME));
84                         long duration = cursor.getLong(cursor.getColumnIndex(COLUMN_NAME_TIME_DURATION));
85                         String memo = TimeStringConvert.getTimeString(duration).toString();
86                         operation.addRecord(new DataRecord(dataId, iconId, title, memo, detailLauncher));
87                     }
88                     activity.runOnUiThread(new Runnable()
89                     {
90                         @Override
91                         public void run()
92                         {
93                             operation.dataSetChangeFinished();
94                         }
95                     });
96                     ret = true;
97                 }
98                 catch (Exception e)
99                 {
100                     e.printStackTrace();
101                 }
102                 callback.databaseSetupFinished(ret);
103             }
104         });
105         thread.start();
106     }
107
108     @Override
109     public void dataEntryFinished(OperationType operationType, boolean result, long id, String title)
110     {
111         //
112     }
113
114     @Override
115     public void timeEntryFinished(OperationType operationType, boolean result, long indexId, long dataId)
116     {
117         //
118     }
119
120     /**
121      *
122      */
123     void closeDatabase()
124     {
125         try
126         {
127             database.close();
128         }
129         catch (Exception e)
130         {
131             e.printStackTrace();
132         }
133     }
134
135     /**
136      *
137      */
138     interface IDatabaseReadyNotify
139     {
140         void databaseSetupFinished(boolean result);
141     }
142 }