X-Git-Url: http://www.average.org/gitweb/?p=WhereAmI.git;a=blobdiff_plain;f=src%2Forg%2Faverage%2Fwhereami%2FPhoneLog.java;h=7ce53eaa06920e39f08566f7699aca4f07047400;hp=fb319a46a494441188226dfdfac600783c454487;hb=f865ec027b40d832f5c78eceb32f268dca3dda52;hpb=9cc761c03fc2da437a596df5c6cbec3cd01fcf2a diff --git a/src/org/average/whereami/PhoneLog.java b/src/org/average/whereami/PhoneLog.java index fb319a4..7ce53ea 100644 --- a/src/org/average/whereami/PhoneLog.java +++ b/src/org/average/whereami/PhoneLog.java @@ -1,9 +1,14 @@ package org.average.whereami; +import org.average.whereami.APIBase; +import org.average.whereami.Oracle; +import org.average.whereami.Utterance; import org.average.whereami.PersistentStore; import org.average.whereami.SayWhen; import java.io.IOException; +import java.net.UnknownHostException; +import org.apache.http.conn.HttpHostConnectException; import com.google.api.client.googleapis.json.GoogleJsonResponseException; import com.google.api.client.http.HttpResponseException; @@ -25,9 +30,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; @@ -37,60 +39,78 @@ 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); - sayWhen = new SayWhen(res); - 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(); } @Override - public final String getResult() { + public final Utterance getResult() { try { Log.v(TAG, "entering getResult"); if (calendar_id == null || calendar_id == "") { calendar_id = scanCalendars(calendar_name); } if (calendar_id == null || calendar_id == "") { - return nocalendar + " \"" + - calendar_name + "\""; + return new Utterance(true, + nocalendar + " \"" + + calendar_name + "\""); } else { - store.put("calendar_id", calendar_id); - return scanEvents(calendar_id, peer_name); + base.store.put("calendar_id", calendar_id); + return new Utterance(true, + scanEvents(calendar_id, peer_name)); } } catch (GoogleJsonResponseException e) { Log.e(TAG, "GoogleJsonResponseException: " + e); if (e.getResponse().getStatusCode() == 401) { - return authErrorMessage; + return new Utterance(false, + base.authErrorMessage + "\n" + + e.getMessage()); } else { - return e.getMessage(); + return new Utterance(false, + e.getMessage()); } } catch (HttpResponseException e) { Log.e(TAG, "HttpResponseException: " + e); - return e.getMessage(); + return new Utterance(false, e.getMessage()); + } catch (UnknownHostException e) { + Log.e(TAG, "UnknownHostException: " + e); + return new Utterance(false, + base.connectErrorMessage + "\n" + + e.getMessage()); + } catch (HttpHostConnectException e) { + Log.e(TAG, "HttpHostConnectException: " + e); + return new Utterance(false, + base.connectErrorMessage + "\n" + + e.getMessage()); } catch (IOException e) { - e.printStackTrace(); - return e.getMessage(); + Log.e(TAG, "IOException: " + e); + return new Utterance(false, e.getMessage()); } } @@ -152,13 +172,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; } } @@ -186,11 +206,17 @@ 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; @@ -198,6 +224,6 @@ public final class PhoneLog extends Oracle { return last_call + " " + (latestWasOutgoing?out_call:in_call) + " " + sayWhen.say(latestStartTime) + - " " + duration + " " + dur + " " + minutes; + " " + duration + " " + howlong + " " + minutes; } }