Scala and Quartz DSL
Join the DZone community and get the full member experience.
Join For FreeQuartz 2.0 introduces a Domain Specific Language (DSL) for working with the core entities (jobs and triggers).
As a Scala fan boy, this is my first translation of the first sample
I - Define implicits conversions to skip build method
implicit def toJobDetail(jb :JobBuilder): JobDetail= jb.build
implicit def toTrigger(tb :TriggerBuilder[org.quartz.Trigger]):Trigger = tb.build
II- Pinp Scheduler class
class RichScheduler(s: Scheduler){
def <-> (job:JobDetail , trigger:Trigger)= s.scheduleJob(job, trigger)
def ->> (job:JobDetail , trigger:Trigger)= {(<-> (job:JobDetail , trigger:Trigger)); +this}
def unary_+ = s start
def << = s shutdown
def unary_- = s shutdown true
}
implicit def toScheduler (sf:SchedulerFactory):RichScheduler = new RichScheduler(sf.getScheduler())
III- Enjoy
val sched = new StdSchedulerFactory()
val runTime = evenMinuteDate(new Date())
val job = newJob(classOf[HelloJob]) withIdentity ("job1", "group1")
val trigger = newTrigger() withIdentity ("trigger1", "group1") startAt runTime
// ->> or this
// sched <-> (job , trigger)
// +sched
sched ->> (job , trigger)
sleep
-sched
Domain-Specific Language
Scala (programming language)
Quartz (scheduler)
Opinions expressed by DZone contributors are their own.
Trending
-
Hyperion Essbase Technical Functionality
-
Measuring Service Performance: The Whys and Hows
-
Batch Request Processing With API Gateway
-
Execution Type Models in Node.js
Comments