/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠS ir Well ing ton Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . cloud k itch ens . driver Ċ Ċ import Ġcom . cloud k itch ens . EventListener Ċ import Ġcom . cloud k itch ens . She lf Set Ċ import Ġcom . cloud k itch ens . getLogger Ċ import Ġjava . util . concurrent . Scheduled ExecutorService Ċ import Ġjava . util . concurrent . TimeUnit . SECONDS Ċ Ċ /** Ċ Ġ* ĠResp ons ible Ġfor Ġpicking Ġup Ġorders Ġand Ġmaking Ġdeliver ies . Ċ Ġ* Ċ Ġ* Ġ@ author ĠS ir Well ing ton Ċ Ġ*/ Ċ class ĠDriver ( val Ġname : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġscheduler : ĠScheduled ExecutorService , ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġtraffic Delay Range : ĠInt Range , ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġlistener : ĠEvent Listener ) Ċ { ĊĊĠĠĠ Ġprivate Ġval ĠLOG Ġ= Ġget Logger () ĊĊĠĠĠ Ġfun Ġrespond To Order ( orderId : ĠString , Ġshe lf Set : ĠShe lf Set ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtraffic Delay Ġ= Ġtraffic Delay Range . random (). to Long () ĊĠĠĠĠĠĠĠ Ġval Ġcommand Ġ= ĠRunnable Ġ{ Ġthis . pickup Order ( orderId , Ġshe lf Set ) Ġ} ĊĠĠĠĠĠĠĠ Ġscheduler . schedule ( command , Ġtraffic Delay , ĠSE CON DS ) ĊĠĠĠĠĠĠĠ ĠLOG . info (" [$ name ] Ġon Ġtheir Ġway Ġto Ġpick up Ġorder Ġ[$ orderId ]") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġpick up Order ( orderId : ĠString , Ġshe lf Set : ĠShe lf Set ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġorder Ġ= Ġshe lf Set . pickup Order ( orderId ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( order Ġ== Ġnull ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOG . warn (" Driver Ġ[$ name ] Ġcould Ġnot Ġfind Ġorder Ġ[$ orderId ] Ġon Ġthe Ġs hel ves .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . on Order Pick ed Up ( order , Ġshe lf Set , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . on Order Deliver ed ( order , Ġthis ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } ĊĊ