/* - Ċ Ġ* Ġ#% L Ċ Ġ* ĠBig Ben : lib Ċ Ġ* Ġ================================= ====== Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 6 Ġ- Ġ 2 0 1 8 ĠW al mart ĠInc . Ċ Ġ* Ġ================================= ====== Ċ Ġ* Ġ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 . Ċ Ġ* Ġ# L % Ċ Ġ*/ Ċ package Ġcom . wal mart labs . big ben . ext ns Ċ Ċ import Ġcom . wal mart labs . big ben . Big Ben . entity Provider Ċ import Ġcom . wal mart labs . big ben . entities . Error Ċ import Ġcom . wal mart labs . big ben . entities . Event Ċ import Ġcom . wal mart labs . big ben . entities . Event Delivery Option Ċ import Ġcom . wal mart labs . big ben . entities . Event Delivery Option . FULL _ EVENT Ċ import Ġcom . wal mart labs . big ben . entities . Event Delivery Option . PAYLOAD _ ONLY Ċ import Ġcom . wal mart labs . big ben . entities . Event Request Ċ import Ġcom . wal mart labs . big ben . entities . Event Response Ċ import Ġjava . time . Z onedDateTime Ċ import Ġjava . util .* Ċ import Ġjava . util . UUID . randomUUID Ċ import Ġjava . util . stream . Collectors Ċ Ċ fun ĠEvent Request . to Response () Ġ= ĠEvent Response ( ĊĠĠĠ Ġtenant Ġ= Ġtenant , Ġevent Time Ġ= Ġevent Time , Ġid Ġ= Ġid , ĊĠĠĠ Ġmode Ġ= Ġmode , Ġpayload Ġ= Ġpayload , Ġdelivery Option Ġ= Ġdelivery Option Ċ ) Ċ Ċ fun ĠEvent . to Response () Ġ= Ġevent Response ?. let Ġ{ Ġit Ġ} ĊĠĠĠ Ġ?: ĠEvent Response ( ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġx ref Id , Ġevent Id Ġ= Ġid , Ġtriggered At Ġ= Ġprocessed At ?. toString (), ĊĠĠĠĠĠĠĠ Ġtenant Ġ= Ġtenant , Ġevent Time Ġ= Ġevent Time ?. toString (), Ġpayload Ġ= Ġpayload , ĊĠĠĠĠĠĠĠ Ġevent Status Ġ= Ġstatus , Ġdelivery Option Ġ= Ġdelivery Option ( this ), Ġerror Ġ= ĠError (- 1 , Ġerror ) ĊĠĠĠ Ġ) Ċ Ċ fun ĠEvent Response . event () Ġ= Ġentity Provider < Event >(). let Ġ{ Ġit . raw ( it . selector ( Event :: class . java )) Ġ}. also Ġ{ ĊĠĠĠ Ġval Ġt Ġ= ĠZ onedDateTime . parse ( triggered At ) ĊĠĠĠ Ġit . tenant Ġ= Ġtenant ; Ġit . xref Id Ġ= Ġid ; Ġit . event Time Ġ= ĠZ onedDateTime . parse ( event Time ) !! ; Ġit . payload Ġ= Ġpayload ĊĠĠĠ Ġit . id Ġ= Ġevent Id ; Ġit . bucket Id Ġ= Ġt . bucket (); Ġit . processed At Ġ= Ġt ĊĠĠĠ Ġif Ġ( eventId Ġ== Ġnull ) Ġit . delivery Option Ġ= Ġdelivery Option ĊĠĠĠ Ġit . error Ġ= Ġerror ?. message Ċ } Ċ Ċ fun ĠBit Set . toSet (): ĠMutable Set < Int > Ġ= Ġstream (). boxed (). collect ( Collectors . toSet ()) !! Ċ Ċ fun Ġevent Id ( req : ĠEvent Request ) Ġ= Ġif Ġ( req . delivery Option Ġ== ĠFULL _ EVENT ) Ġrandom UUID (). toString () Ġelse Ġ" a -${ randomUUID () }" Ċ Ċ fun Ġdelivery Option ( event : ĠEvent ): ĠEvent Delivery Option ? Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġevent . id Ġ!= Ġnull Ġ-> Ġif Ġ( event . id !!. startsWith (" a - ")) ĠP AY LOAD _ ONLY Ġelse ĠFULL _ EVENT ĊĠĠĠĠĠĠĠ Ġevent . delivery Option Ġ!= Ġnull Ġ-> Ġevent . delivery Option ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠ Ġ} Ċ } Ċ