WeatherInformation: widget, refresh stores to permanent storage
authorGustavo Martin Morcuende <gu.martinm@gmail.com>
Sat, 1 Nov 2014 01:30:53 +0000 (02:30 +0100)
committerGustavo Martin Morcuende <gu.martinm@gmail.com>
Sat, 1 Nov 2014 01:30:53 +0000 (02:30 +0100)
Android/WeatherInformation/app/src/main/java/de/example/exampletdd/WidgetIntentService.java
Android/WeatherInformation/app/src/main/java/de/example/exampletdd/service/PermanentStorage.java

index 0653c73..d71506c 100644 (file)
@@ -73,7 +73,7 @@ public class WidgetIntentService extends IntentService {
             RemoteViews view;
 
             final PermanentStorage store = new PermanentStorage(this.getApplicationContext());
-            final Current current = store.getCurrent();
+            final Current current = store.getCurrentWidget(appWidgetId);
             if (current != null) {
                 // Update UI.
                 view = this.makeView(current, weatherLocation, appWidgetId);
@@ -89,6 +89,9 @@ public class WidgetIntentService extends IntentService {
             if (current != null) {
                 // Update UI.
                 view = this.makeView(current, weatherLocation, appWidgetId);
+
+                final PermanentStorage store = new PermanentStorage(this.getApplicationContext());
+                store.saveCurrentWidget(current, appWidgetId);
             } else {
                 // Show error.
                 view = this.makeErrorView(appWidgetId);
index 49eac40..6da0c80 100644 (file)
@@ -8,6 +8,7 @@ import java.io.InputStream;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.io.StreamCorruptedException;
+import java.text.MessageFormat;
 
 import android.content.Context;
 import android.util.Log;
@@ -23,6 +24,7 @@ public class PermanentStorage {
        private static final String TAG = "PermanentStorage";
     private static final String CURRENT_DATA_FILE = "current.file";
     private static final String FORECAST_DATA_FILE = "forecast.file";
+    private static final String WIDGET_CURRENT_DATA_FILE = "current.{0}.file";
     private final Context context;
 
     public PermanentStorage(final Context context) {
@@ -57,6 +59,36 @@ public class PermanentStorage {
        return null;
     }
 
+    public void saveCurrentWidget(final Current current, final int appWidgetId) {
+
+        final String file = MessageFormat.format(WIDGET_CURRENT_DATA_FILE, appWidgetId);
+        try {
+            this.saveObject(file, current);
+        } catch (FileNotFoundException e) {
+            Log.e(TAG, "saveCurrent exception: ", e);
+        } catch (IOException e) {
+            Log.e(TAG, "saveCurrent exception: ", e);
+        }
+    }
+
+    public Current getCurrentWidget(final int appWidgetId) {
+
+        final String file = MessageFormat.format(WIDGET_CURRENT_DATA_FILE, appWidgetId);
+        try {
+            return (Current) this.getObject(file);
+        } catch (final StreamCorruptedException e) {
+            Log.e(TAG, "getCurrent exception: ", e);
+        } catch (final FileNotFoundException e) {
+            Log.e(TAG, "getCurrent exception: ", e);
+        } catch (final IOException e) {
+            Log.e(TAG, "getCurrent exception: ", e);
+        } catch (final ClassNotFoundException e) {
+            Log.e(TAG, "getCurrent exception: ", e);
+        }
+
+        return null;
+    }
+
     public void saveForecast(final Forecast forecast) {
 
        try {