diff --git a/src/main/java/de/deadlocker8/budgetmaster/backup/BackupService.java b/src/main/java/de/deadlocker8/budgetmaster/backup/BackupService.java index 263abe222befe07930b58a7c27823d35b62a3972..4874d641e4612450bccc98613df05ece1d94d336 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 605c8ac7e252afbac1215c242d59e47b3aa985e0..5ffea81d817c3485ff71593587ba5d509338d6a7 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 dec07133a3afae4ff2290df1f018ce2029813afa..d68bf5af02e041b3968ff6d8052f750fa5299066 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()); }