]> www.average.org Git - WhereAmI.git/blobdiff - src/org/average/whereami/PhoneLog.java
make threads share one instance of GoogleAccessProtectedResource
[WhereAmI.git] / src / org / average / whereami / PhoneLog.java
index 708b88ef3d072d4f6213a3af82f3b481167d7986..2e2b30b7f7c075dd85f932bcbb04ad31492c2c93 100644 (file)
@@ -1,6 +1,8 @@
 package org.average.whereami;
 
+import org.average.whereami.APIBase;
 import org.average.whereami.PersistentStore;
+import org.average.whereami.SayWhen;
 
 import java.io.IOException;
 
@@ -24,9 +26,6 @@ public final class PhoneLog extends Oracle {
 
        final String TAG = getClass().getName();
 
-       private Calendar calendar;
-
-       private PersistentStore store;
        private String calendar_name;
        private String peer_name;
        private String calendar_id;
@@ -36,28 +35,33 @@ public final class PhoneLog extends Oracle {
        private String in_call;
        private String out_call;
        private String duration;
+       private String lessthan;
        private String minutes1;
        private String minutes2to4;
        private String minutes5up;
+       private SayWhen sayWhen;
+       private Calendar calendar;
 
-       public PhoneLog(final Resources res, final PersistentStore store) {
-               super(res, store);
-               this.store = store;
-               nocalendar = res.getString(R.string.nocalendar);
-               noevents = res.getString(R.string.noevents);
-               last_call = res.getString(R.string.last_call);
-               in_call = res.getString(R.string.in_call);
-               out_call = res.getString(R.string.out_call);
-               duration = res.getString(R.string.duration);
-               minutes1 = res.getString(R.string.minutes1);
-               minutes2to4 = res.getString(R.string.minutes2to4);
-               minutes5up = res.getString(R.string.minutes5up);
-               calendar_name = store.get("calendar_name");
-               peer_name = store.get("peer_name");
-               calendar_id = store.get("calendar_id");
-
-               calendar = Calendar.builder(httpTransport, jsonFactory)
-                       .setHttpRequestInitializer(accessProtectedResource)
+       public PhoneLog(APIBase base) {
+               super(base);
+               nocalendar = base.res.getString(R.string.nocalendar);
+               noevents = base.res.getString(R.string.noevents);
+               last_call = base.res.getString(R.string.last_call);
+               in_call = base.res.getString(R.string.in_call);
+               out_call = base.res.getString(R.string.out_call);
+               duration = base.res.getString(R.string.duration);
+               lessthan = base.res.getString(R.string.lessthan);
+               minutes1 = base.res.getString(R.string.minutes1);
+               minutes2to4 = base.res.getString(R.string.minutes2to4);
+               minutes5up = base.res.getString(R.string.minutes5up);
+               sayWhen = new SayWhen(base.res);
+               calendar_name = base.store.get("calendar_name");
+               peer_name = base.store.get("peer_name");
+               calendar_id = base.store.get("calendar_id");
+               calendar = Calendar.builder(base.httpTransport,
+                                                       base.jsonFactory)
+                       .setHttpRequestInitializer(
+                                               base.accessProtectedResource)
                        .setApplicationName("WhereAmI/1.0").build();
        }
 
@@ -72,13 +76,13 @@ public final class PhoneLog extends Oracle {
                                return nocalendar + " \"" +
                                        calendar_name + "\"";
                        } else {
-                               store.put("calendar_id", calendar_id);
+                               base.store.put("calendar_id", calendar_id);
                                return scanEvents(calendar_id, peer_name);
                        }
                } catch (GoogleJsonResponseException e) {
                        Log.e(TAG, "GoogleJsonResponseException: " + e);
                        if (e.getResponse().getStatusCode() == 401) {
-                               return authErrorMessage;
+                               return base.authErrorMessage;
                        } else {
                                return e.getMessage();
                        }
@@ -149,13 +153,13 @@ public final class PhoneLog extends Oracle {
                                Log.v(TAG, "event " + evStart +
                                        " - " + evStop +
                                        " : \"" + evSummary + "\"");
-                               if ((evSummary.startsWith("Called ") ||
-                                    evSummary.startsWith("Call from ")) &&
+                               if ((evSummary.startsWith("Call To ") ||
+                                    evSummary.startsWith("Call From ")) &&
                                    evStart > latestStartTime) {
                                                latestStartTime = evStart;
                                                latestStopTime = evStop;
                                                latestWasOutgoing = evSummary
-                                                       .startsWith("Called ");
+                                                       .startsWith("Call To ");
                                                wasFound = true;
                                }
                        }
@@ -183,18 +187,24 @@ public final class PhoneLog extends Oracle {
                stime.set(latestStartTime);
                Long dur = (latestStopTime - latestStartTime) / 60000L;
                Log.v(TAG, "Chosen event: start " + stime +
-                       " for " + dur + " sec");
+                       " for " + dur + " min");
                String minutes;
-               if (dur == 1) {
+               String howlong = dur.toString();
+               if (dur == 0) {
+                       howlong = lessthan;
+                       minutes = minutes2to4;
+               } else if ((dur / 10) == 1) {
+                       minutes = minutes5up;
+               } else if ((dur % 10) == 1) {
                        minutes = minutes1;
-               } else if (dur < 5) {
+               } else if ((dur % 10) < 5) {
                        minutes = minutes2to4;
                } else {
                        minutes = minutes5up;
                }
-               return last_call + " " +
-                       (latestWasOutgoing?out_call:in_call) +
-                       " " + duration + " " + dur + " " + minutes +
-                       " " + stime.format("%H:%M");
+               return last_call +
+                       " " + (latestWasOutgoing?out_call:in_call) +
+                       " " + sayWhen.say(latestStartTime) +
+                       " " + duration + " " + howlong + " " + minutes;
        }
 }