]> www.average.org Git - WhereAmI.git/blobdiff - src/org/average/whereami/LastLocation.java
Stay alive unless closed from menu
[WhereAmI.git] / src / org / average / whereami / LastLocation.java
index 99911c37afa8398714483de88b1dc4393287bc0c..5899bf5b24d1e6f09adb4ea84752d1d1315881ba 100644 (file)
@@ -1,11 +1,15 @@
 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.lang.Math;
 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;
@@ -48,7 +52,7 @@ public final class LastLocation extends Oracle {
        }
 
        @Override
-       public final String getResult() {
+       public final Utterance getResult() {
                try {
                        Log.v(TAG, "entering getResult");
                        Latitude.CurrentLocation.Get request =
@@ -61,20 +65,33 @@ public final class LastLocation extends Oracle {
                                        cloc.getLongitude().toString());
                        Long tsm = Long.parseLong(
                                        cloc.getTimestampMs().toString());
-                       return locationMessage(lat, lon, tsm);
+                       return new Utterance(true,
+                                       locationMessage(lat, lon, tsm));
                } catch (GoogleJsonResponseException e) {
                        Log.e(TAG, "GoogleJsonResponseException: " + e);
                        if (e.getResponse().getStatusCode() == 401) {
-                               return base.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());
                 }
        }
 
@@ -88,8 +105,9 @@ public final class LastLocation extends Oracle {
                                        Double.parseDouble(loc_lats[i]),
                                        Double.parseDouble(loc_lons[i]));
                        Log.v(TAG, "Dist from " + loc_names[i] +
-                               " is " + dist);
-                       if ((loc_dists[i] == "0") ||
+                               " is " + dist +
+                               ", threshold " + loc_dists[i]);
+                       if ((loc_dists[i].equals("0")) ||
                            (dist < Double.parseDouble(loc_dists[i]))) {
                                locmsg = loc_names[i];
                                break;