diff --git a/backend/src/main/java/core/DemoApplication.java b/backend/src/main/java/core/DemoApplication.java index 0dbf798..c2972ff 100644 --- a/backend/src/main/java/core/DemoApplication.java +++ b/backend/src/main/java/core/DemoApplication.java @@ -25,7 +25,7 @@ public class DemoApplication{ @Bean public CommandLineRunner init() { return args -> { - TaskSchedulingService.scheduleTask(); + TaskSchedulingService.scheduleStartingTask("Finishing ConceptCreator"); }; } } diff --git a/backend/src/main/java/core/services/ntfy/NtfyTask.java b/backend/src/main/java/core/services/ntfy/NtfyTask.java index 3e86fe6..6fd8423 100644 --- a/backend/src/main/java/core/services/ntfy/NtfyTask.java +++ b/backend/src/main/java/core/services/ntfy/NtfyTask.java @@ -18,7 +18,7 @@ public class NtfyTask implements Job { try { HttpRequest request = HttpRequest.newBuilder() .uri(new URI("http://localhost:4280/Test")) - .POST(HttpRequest.BodyPublishers.ofString("A simple testmessage")) + .POST(HttpRequest.BodyPublishers.ofString(jobExecutionContext.getMergedJobDataMap().getString("data"))) .build(); httpClient.sendAsync(request, HttpResponse.BodyHandlers.ofString()); diff --git a/backend/src/main/java/core/services/ntfy/NtfyTaskStartNotification.java b/backend/src/main/java/core/services/ntfy/NtfyTaskStartNotification.java new file mode 100644 index 0000000..039b64f --- /dev/null +++ b/backend/src/main/java/core/services/ntfy/NtfyTaskStartNotification.java @@ -0,0 +1,34 @@ +package core.services.ntfy; + +import org.quartz.Job; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; + +import java.net.URI; +import java.net.URISyntaxException; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; + +public class NtfyTaskStartNotification implements Job { + + @Override + public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { + HttpClient httpClient = HttpClient.newHttpClient(); + String msg = "Task " + jobExecutionContext.getMergedJobDataMap().getString("task") + " should have been started by now!"; + + try { + HttpRequest request = HttpRequest.newBuilder() + .uri(new URI("http://localhost:4280/Test")) + .POST(HttpRequest.BodyPublishers.ofString(msg)) + .header("Tags", "warning") + .header("Title", "Task Starting Reminder") + .header("Actions", "view, Open TimeScheduler, https://time.fawkes100.de/, clear=true") + .build(); + + httpClient.sendAsync(request, HttpResponse.BodyHandlers.ofString()); + } catch (URISyntaxException e) { + throw new RuntimeException(e); + } + } +} diff --git a/backend/src/main/java/core/services/ntfy/TaskSchedulingService.java b/backend/src/main/java/core/services/ntfy/TaskSchedulingService.java index 63f152a..fb1fed1 100644 --- a/backend/src/main/java/core/services/ntfy/TaskSchedulingService.java +++ b/backend/src/main/java/core/services/ntfy/TaskSchedulingService.java @@ -10,13 +10,25 @@ import java.util.Date; public class TaskSchedulingService { + public static void scheduleStartingTask(String taskName) throws SchedulerException { + Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); + scheduler.start(); + + JobDetail job = JobBuilder.newJob(NtfyTaskStartNotification.class).build(); + job.getJobDataMap().put("task", taskName); + + Trigger immediatly = TriggerBuilder.newTrigger().startNow().build(); + + scheduler.scheduleJob(job, immediatly); + } public static void scheduleTask() throws SchedulerException { Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); scheduler.start(); - JobDetail job = JobBuilder.newJob(NtfyTask.class).withIdentity("Job 1", "Group 1").build(); - JobDetail job2 = JobBuilder.newJob(NtfyTask.class).withIdentity("Job 2", "Group 1").build(); + JobDetail job = JobBuilder.newJob(NtfyTask.class).build(); + + job.getJobDataMap().put("data", "A simple Job 1 Message"); LocalDateTime executionTime = LocalDateTime.of(2024, 3, 14, 9, 18); // Example: March 15, 2024, 10:00 AM