use of com.giua.utils.JsonParser in project Giua-App by Giua-app.
the class CheckNewsReceiver method checkAndSendNotificationForAgenda.
/**
* Controlla e invia le notifiche riguardanti compiti e verifiche.
*
* @return La somma dei compiti e delle verifiche notificate. Serve a non far notificare anche gli avvisi.
*/
private int checkAndSendNotificationForAgenda() throws IOException {
loggerManager.d("Inizio a controllare gli avvisi per le notifiche di compiti e verifiche");
com.giua.utils.JsonParser jsonParser = new JsonParser();
boolean canSendHomeworkNotification = SettingsData.getSettingBoolean(context, SettingKey.HOMEWORKS_NOTIFICATION);
boolean canSendTestNotification = SettingsData.getSettingBoolean(context, SettingKey.TESTS_NOTIFICATION);
if (!canSendTestNotification && !canSendHomeworkNotification)
// Se non puo inviare nessuna notifica lo blocco
return 0;
loggerManager.d("Leggo il json per vedere gli avvisi dei compiti e delle verifiche già notificati");
AlertsPage alertsPage = gS.getAlertsPage(false);
File f = new File(context.getCacheDir() + "/alertsToNotify.json");
if (!f.exists()) {
createJsonNotificationFile(f, alertsPage);
// Return perchè andrebbe a notificare tutti i vecchi compiti
return 0;
}
BufferedReader file = new BufferedReader(new FileReader(context.getCacheDir() + "/alertsToNotify.json"));
StringBuilder oldAlertsString = new StringBuilder();
String read = file.readLine();
if (read == null) {
createJsonNotificationFile(f, alertsPage);
return 0;
}
while (read != null) {
oldAlertsString.append(read);
read = file.readLine();
}
file.close();
loggerManager.d("Faccio il parsing del json");
// Lista con gli avvisi già notificati
List<Alert> oldAlerts;
if (oldAlertsString.toString().equals("")) {
loggerManager.w("oldAlertsString è vuoto");
oldAlerts = new Vector<>();
} else
oldAlerts = jsonParser.parseJsonForAlerts(oldAlertsString.toString());
// Lista degli avvisi da notificare
List<Alert> alertsToNotify = alertsPage.getAlertsToNotify(oldAlerts);
// Salva gli avvisi (compresi i nuovi) nel json
JsonBuilder jsonBuilder = new JsonBuilder(context.getCacheDir() + "/alertsToNotify.json", gS);
jsonBuilder.writeAlerts(alertsPage.getAllAlertsWithFilters(false, "per la materia"));
jsonBuilder.saveJson();
loggerManager.d("Conto i compiti e le verifiche da notificare");
// Conta i compiti da notificare
int homeworkCounter = 0;
// Conta le verifiche da notificare
int testCounter = 0;
// Lista in cui ci sono tutte le date dei compiti da notificare
List<String> homeworkDates = new Vector<>(40);
// Lista in cui ci sono tutte le date delle verifiche da notificare
List<String> testDates = new Vector<>(40);
// Lista in cui ci sono tutte le materie dei compiti da notificare
List<String> homeworkSubjects = new Vector<>(40);
// Lista in cui ci sono tutte le materie delle verifiche da notificare
List<String> testSubjects = new Vector<>(40);
for (Alert alert : alertsToNotify) {
if (alert.object.startsWith("C")) {
homeworkDates.add(alert.date);
homeworkSubjects.add(alert.object.split(" per la materia ")[1]);
homeworkCounter++;
} else if (alert.object.startsWith("V")) {
testDates.add(alert.date);
testSubjects.add(alert.object.split(" per la materia ")[1]);
testCounter++;
}
}
loggerManager.d("Preparo le notifiche");
StringBuilder homeworkNotificationText;
StringBuilder testNotificationText;
Notification homeworkNotification = null;
Notification testNotification = null;
if (canSendHomeworkNotification && homeworkCounter > 0) {
String contentText;
if (homeworkCounter == 1) {
contentText = "Clicca per andare all' agenda";
homeworkNotificationText = new StringBuilder("È stato programmato un nuovo compito di " + homeworkSubjects.get(0) + " per il giorno " + homeworkDates.get(0));
} else {
contentText = "Clicca per andare all' agenda";
homeworkNotificationText = new StringBuilder("Sono stati programmati nuovi compiti:\n");
for (int i = 0; i < homeworkCounter; i++) {
homeworkNotificationText.append(homeworkSubjects.get(i));
homeworkNotificationText.append(" - ");
homeworkNotificationText.append(homeworkDates.get(i));
if (i != homeworkCounter - 1)
homeworkNotificationText.append("\n");
}
}
homeworkNotification = createNotificationForAgenda("Nuovi compiti", contentText, homeworkNotificationText.toString());
}
if (canSendTestNotification && testCounter > 0) {
String contentText;
if (testCounter == 1) {
contentText = "Clicca per andare all' agenda";
testNotificationText = new StringBuilder("È stata programmata una nuova verifica di " + testSubjects.get(0) + " per il giorno " + testDates.get(0));
} else {
contentText = "Clicca per andare all' agenda";
testNotificationText = new StringBuilder("Sono state programmate nuove verifiche:\n");
for (int i = 0; i < testCounter; i++) {
testNotificationText.append(testSubjects.get(i));
testNotificationText.append(" - ");
testNotificationText.append(testDates.get(i));
if (i != testCounter - 1)
testNotificationText.append("\n");
}
}
testNotification = createNotificationForAgenda("Nuove verifiche", contentText, testNotificationText.toString());
}
loggerManager.d("Invio le notifiche");
if (canSendHomeworkNotification && homeworkNotification != null)
notificationManager.notify(13, homeworkNotification);
if (canSendTestNotification && testNotification != null)
notificationManager.notify(14, testNotification);
return testCounter + homeworkCounter;
}
Aggregations