package org.smartpaws.notifications; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import org.apache.commons.io.FileUtils; import org.smartpaws.net.DataMan; import java.io.File; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class ShutdownWakeReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { AlarmService.setContext(context); if (intent.getAction().equalsIgnoreCase(Intent.ACTION_SHUTDOWN)) saveReminders(); if (intent.getAction().equalsIgnoreCase(Intent.ACTION_BOOT_COMPLETED)) { try { File file = new File(AlarmService.getContext().getFilesDir(), "reminders.json"); if (!file.getParentFile().exists() || !file.exists()) return; String fileContents = FileUtils.readFileToString(file); if (fileContents == null || fileContents.length() == 0) { file.delete(); return; } AlarmService.Reminder[] reminders = DataMan.GSON.fromJson(fileContents, AlarmService.Reminder[].class); List<AlarmService.Reminder> result = new ArrayList<>(); Collections.addAll(result, reminders); AlarmService.clearReminders(); for (AlarmService.Reminder container : result) { AlarmService.setReminder(container.getEvent(), container.getMinsBefore(), container.getRoom()); } } catch (Exception ex) { ex.printStackTrace(); } } } public static void saveReminders() { try { File file = new File(AlarmService.getContext().getFilesDir(), "reminders.json"); if ((!file.getParentFile().exists() && !file.mkdirs()) || (!file.exists() && !file.createNewFile())) throw new IllegalStateException("File was not saved: could not be created"); FileUtils.writeStringToFile(file, DataMan.GSON.toJson(AlarmService.getReminders())); } catch (Exception ex) { ex.printStackTrace(); } } public static void loadReminders() { try { File file = new File(AlarmService.getContext().getFilesDir(), "reminders.json"); if (!file.getParentFile().exists() || !file.exists()) return; String fileContents = FileUtils.readFileToString(file); if (fileContents == null || fileContents.length() == 0) { file.delete(); return; } AlarmService.Reminder[] reminders = DataMan.GSON.fromJson(fileContents, AlarmService.Reminder[].class); List<AlarmService.Reminder> result = new ArrayList<>(); Collections.addAll(result, reminders); AlarmService.clearReminders(); for (AlarmService.Reminder container : result) { AlarmService.setReminder(container.getEvent(), container.getMinsBefore(), container.getRoom()); } } catch (Exception ex) { ex.printStackTrace(); } } }