From 4cec842a3ab748b95a8e3d7ac4f0f3313e381004 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Sat, 1 May 2021 14:14:04 +0200
Subject: [PATCH] #565 - migrated fro deprecated CronSequenceGenerator to
 CronExpression

---
 .../budgetmaster/backup/BackupService.java      | 17 ++++++++++-------
 .../budgetmaster/services/DateService.java      |  9 +++++++++
 .../settings/SettingsController.java            |  4 ++--
 3 files changed, 21 insertions(+), 9 deletions(-)

diff --git a/src/main/java/de/deadlocker8/budgetmaster/backup/BackupService.java b/src/main/java/de/deadlocker8/budgetmaster/backup/BackupService.java
index 263abe222..4874d641e 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/backup/BackupService.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/backup/BackupService.java
@@ -3,16 +3,19 @@ package de.deadlocker8.budgetmaster.backup;
 import de.deadlocker8.budgetmaster.database.DatabaseService;
 import de.deadlocker8.budgetmaster.settings.Settings;
 import de.deadlocker8.budgetmaster.settings.SettingsService;
-import org.joda.time.DateTime;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.event.ContextRefreshedEvent;
 import org.springframework.context.event.EventListener;
 import org.springframework.scheduling.TaskScheduler;
-import org.springframework.scheduling.support.CronSequenceGenerator;
+import org.springframework.scheduling.support.CronExpression;
 import org.springframework.scheduling.support.CronTrigger;
 import org.springframework.stereotype.Service;
 
-import java.util.*;
+import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Optional;
+import java.util.TimeZone;
 import java.util.concurrent.ScheduledFuture;
 
 @Service
@@ -81,16 +84,16 @@ public class BackupService
 		return String.format("0 0 %d */%d * *", hour, days);
 	}
 
-	public Optional<DateTime> getNextRun()
+	public Optional<LocalDateTime> getNextRun()
 	{
 		final Settings settings = settingsService.getSettings();
 		if(settings.isAutoBackupActive())
 		{
 			final String cron = computeCron(settings.getAutoBackupTime(), settings.getAutoBackupDays());
-			CronSequenceGenerator cronTrigger = new CronSequenceGenerator(cron);
-			Date next = cronTrigger.next(new Date());
+			final CronExpression cronExpression = CronExpression.parse(cron);
+			final LocalDateTime next = cronExpression.next(LocalDateTime.now());
 
-			return Optional.of(new DateTime(next));
+			return Optional.ofNullable(next);
 		}
 		return Optional.empty();
 	}
diff --git a/src/main/java/de/deadlocker8/budgetmaster/services/DateService.java b/src/main/java/de/deadlocker8/budgetmaster/services/DateService.java
index 605c8ac7e..5ffea81d8 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/services/DateService.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/services/DateService.java
@@ -6,6 +6,9 @@ import org.joda.time.format.DateTimeFormat;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+
 @Service
 public class DateService
 {
@@ -63,4 +66,10 @@ public class DateService
 	{
 		return DateTime.now();
 	}
+
+	public String getDateTimeString(LocalDateTime localDateTime)
+	{
+		DateTimeFormatter formatter = DateTimeFormatter.ofPattern(DateFormatStyle.DATE_TIME.getKey()).withLocale(settingsService.getSettings().getLanguage().getLocale());
+		return localDateTime.format(formatter);
+	}
 }
diff --git a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java
index dec07133a..d68bf5af0 100644
--- a/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java
+++ b/src/main/java/de/deadlocker8/budgetmaster/settings/SettingsController.java
@@ -25,7 +25,6 @@ import de.thecodelabs.utils.util.RandomUtils;
 import de.thecodelabs.versionizer.UpdateItem;
 import org.eclipse.jgit.transport.CredentialsProvider;
 import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider;
-import org.joda.time.DateTime;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
@@ -42,6 +41,7 @@ import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.text.MessageFormat;
+import java.time.LocalDateTime;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Optional;
@@ -416,7 +416,7 @@ public class SettingsController extends BaseController
 		model.addAttribute("searchResultsPerPageOptions", SEARCH_RESULTS_PER_PAGE_OPTIONS);
 		model.addAttribute("autoBackupTimes", AutoBackupTime.values());
 
-		final Optional<DateTime> nextBackupTimeOptional = backupService.getNextRun();
+		final Optional<LocalDateTime> nextBackupTimeOptional = backupService.getNextRun();
 		nextBackupTimeOptional.ifPresent(date -> model.addAttribute("nextBackupTime", date));
 		model.addAttribute("autoBackupStatus", backupService.getBackupStatus());
 	}
-- 
GitLab