Scala and Quartz DSL
Quartz 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 methodimplicit def toJobDetail(jb :JobBuilder): JobDetail= jb.buildII- Pinp Scheduler class
implicit def toTrigger(tb :TriggerBuilder[org.quartz.Trigger]):Trigger = tb.build
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
From http://ouertani.com/2011/05/scala-and-quartz-dsl/
(2 votes)
(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)
Tags:




