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();
}
}
}