OSDN Git Service

基準値データを読み込むようにしてみた。
[gokigen/JoggingTimer.git] / wear / src / main / java / net / osdn / gokigen / joggingtimer / stopwatch / MyTimerCounter.java
1 package net.osdn.gokigen.joggingtimer.stopwatch;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import android.support.annotation.NonNull;
7 import android.util.Log;
8
9 /**
10  *    My Timer counter
11  *
12  */
13 public class MyTimerCounter implements ITimerCounter, IDatabaseReloadCallback
14 {
15     private final String TAG = toString();
16     //private static final long COUNTER_UPPERLIMIT = (80 / (1000 * 60 * 60));  // 80h
17     private boolean isTimerStopped = true;
18     private ICounterStatusNotify callback = null;
19     private long startTime = 0;
20     private long stopTime = 0;
21     private List<Long> elapsedTime = null;
22     private List<Long> referenceTime = null;
23
24     MyTimerCounter()
25     {
26         elapsedTime = new ArrayList<>();
27     }
28
29
30     /**
31      *   Is my timer running?
32      *
33      * @return  true : running, false : stopped
34      */
35     @Override
36     public boolean isStarted()
37     {
38         return (!isTimerStopped);
39     }
40
41     @Override
42     public boolean isReset()
43     {
44         return ((isTimerStopped)&&(startTime == 0));
45     }
46
47     /**
48      *   Start Timer
49      *
50      */
51     @Override
52     public void start()
53     {
54         if (isTimerStopped)
55         {
56             startTime = System.currentTimeMillis();
57             stopTime = 0;
58             elapsedTime.clear();
59             elapsedTime.add(startTime);
60             isTimerStopped = false;
61             Log.v(TAG, "start() startTime : " + startTime);
62         }
63     }
64
65     @Override
66     public long timeStamp()
67     {
68         long timeToSet = 0;
69         if (!isTimerStopped)
70         {
71             timeToSet = System.currentTimeMillis();
72             elapsedTime.add(timeToSet);
73         }
74         return (timeToSet);
75     }
76
77     @Override
78     public void stop()
79     {
80         if (!isTimerStopped)
81         {
82             stopTime = System.currentTimeMillis();
83             elapsedTime.add(stopTime);
84             isTimerStopped = true;
85         }
86     }
87
88     @Override
89     public void reset()
90     {
91         if (isTimerStopped)
92         {
93             startTime = 0;
94             stopTime = 0;
95             elapsedTime.clear();
96         }
97     }
98
99     @Override
100     public List<Long> getTimerList()
101     {
102         return (elapsedTime);
103     }
104
105     @Override
106     public List<Long> getReferenceTimeList()
107     {
108         return (referenceTime);
109     }
110
111     @Override
112     public int getElapsedCount()
113     {
114         return (elapsedTime.size());
115     }
116
117     @Override
118     public long getPastTime()
119     {
120         long currentTime = System.currentTimeMillis();
121         if (isTimerStopped)
122         {
123             if (elapsedTime.size() == 0)
124             {
125                 // カウンタクリア状態なので...
126                 return (0);
127             }
128             return (getLastElapsedTime());
129         }
130         return (currentTime - startTime);
131     }
132
133     @Override
134     public long getLastElapsedTime()
135     {
136         try
137         {
138             return ((elapsedTime.get(elapsedTime.size() - 1)) - startTime);
139         }
140         catch (Exception e)
141         {
142             e.printStackTrace();
143         }
144         return (0);
145     }
146
147     @Override
148     public long getCurrentElapsedTime()
149     {
150         long currentTime = System.currentTimeMillis();
151         try
152         {
153             return (currentTime - (elapsedTime.get(elapsedTime.size() - 1)));
154         }
155         catch (Exception e)
156         {
157             e.printStackTrace();
158         }
159         return (currentTime - startTime);
160     }
161
162     @Override
163     public long getStartTime()
164     {
165         return (startTime);
166     }
167
168     @Override
169     public long getStopTime()
170     {
171         return (stopTime);
172     }
173
174     @Override
175     public void setCallback(ICounterStatusNotify callback)
176     {
177         this.callback = callback;
178     }
179
180     @Override
181     public void dataIsReloaded(@NonNull  ArrayList<Long> timelist)
182     {
183         try
184         {
185             long startTime = timelist.get(0);
186             long pastTime = System.currentTimeMillis() - startTime;
187             Log.v(TAG, "pastTime : " + pastTime);
188             this.startTime = startTime;
189             elapsedTime = null;
190             elapsedTime = new ArrayList<>(timelist);
191             stopTime = 0;
192             isTimerStopped = false;
193             if (callback != null)
194             {
195                 callback.counterStatusChanged(true);
196             }
197         }
198         catch (Exception e)
199         {
200             e.printStackTrace();
201         }
202     }
203
204     @Override
205     public void referenceDataIsReloaded(ArrayList<Long> timelist)
206     {
207         try
208         {
209             referenceTime = null;
210             if (timelist != null)
211             {
212                 referenceTime = new ArrayList<>(timelist);
213                 if (callback != null)
214                 {
215                     callback.counterStatusChanged(false);
216                 }
217                 Log.v(TAG, "reference lap time : " + referenceTime.size());
218             }
219         }
220         catch (Exception e)
221         {
222             e.printStackTrace();
223         }
224     }
225
226     public interface ICounterStatusNotify
227     {
228         void counterStatusChanged(boolean forceStartTimer);
229     }
230 }