forked from michaelklishin/quartzite
/
daily_interval.clj
104 lines (70 loc) · 2.68 KB
/
daily_interval.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
(ns clojurewerkz.quartzite.schedule.daily-interval
(:import [org.quartz DailyTimeIntervalScheduleBuilder DateBuilder TimeOfDay]
[java.util Set]))
(defn with-interval-in-seconds
[^DailyTimeIntervalScheduleBuilder dtisb ^long seconds]
(.withIntervalInSeconds dtisb seconds))
(defn with-interval-in-minutes
[^DailyTimeIntervalScheduleBuilder dtisb ^long minutes]
(.withIntervalInMinutes dtisb minutes))
(defn with-interval-in-hours
[^DailyTimeIntervalScheduleBuilder dtisb ^long hours]
(.withIntervalInHours dtisb hours))
(defn with-interval-in-days
[^DailyTimeIntervalScheduleBuilder dtisb ^long days]
(.withIntervalInHours dtisb (* 24 days)))
(defn with-repeat-count
[^DailyTimeIntervalScheduleBuilder dtisb ^long l]
(.withRepeatCount dtisb l))
(defn on-every-day
[^DailyTimeIntervalScheduleBuilder dtisb]
(.onEveryDay dtisb))
(defn every-day
[^DailyTimeIntervalScheduleBuilder dtisb]
(on-every-day dtisb))
(defn on-days-of-the-week
[^DailyTimeIntervalScheduleBuilder dtisb ^Set days]
(.onDaysOfTheWeek dtisb days))
(defn days-of-the-week
[^DailyTimeIntervalScheduleBuilder dtisb ^Set days]
(on-days-of-the-week dtisb days))
(defn on-monday-through-friday
[^DailyTimeIntervalScheduleBuilder dtisb]
(.onMondayThroughFriday dtisb))
(defn monday-through-friday
[^DailyTimeIntervalScheduleBuilder dtisb]
(on-monday-through-friday dtisb))
(defn on-saturday-and-sunday
[^DailyTimeIntervalScheduleBuilder dtisb]
(.onSaturdayAndSunday dtisb))
(defn saturday-and-sunday
[^DailyTimeIntervalScheduleBuilder dtisb]
(on-saturday-and-sunday dtisb))
(defn time-of-day
[^long hours ^long minutes ^long seconds]
(TimeOfDay. hours minutes seconds))
(defn starting-daily-at
[^DailyTimeIntervalScheduleBuilder dtisb ^TimeOfDay at]
(.startingDailyAt dtisb at))
(defn ending-daily-at
[^DailyTimeIntervalScheduleBuilder dtisb ^TimeOfDay at]
(.endingDailyAt dtisb at))
(defn with-misfire-handling-instruction-ignore-misfires
[^DailyTimeIntervalScheduleBuilder dtisb]
(.withMisfireHandlingInstructionIgnoreMisfires dtisb))
(defn ignore-misfires
[^DailyTimeIntervalScheduleBuilder dtisb]
(.withMisfireHandlingInstructionIgnoreMisfires dtisb))
(defn with-misfire-handling-instruction-fire-and-proceed
[^DailyTimeIntervalScheduleBuilder dtisb]
(.withMisfireHandlingInstructionFireAndProceed dtisb))
(defn with-misfire-handling-instruction-do-nothing
[^DailyTimeIntervalScheduleBuilder cisb]
(.withMisfireHandlingInstructionDoNothing cisb))
(defn finalize
[^DailyTimeIntervalScheduleBuilder dtisb]
(.build dtisb))
(defmacro schedule
[& body]
`(let [dtisb# (DailyTimeIntervalScheduleBuilder/dailyTimeIntervalSchedule)]
(-> dtisb# ~@body)))