/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 0 . ĠOpen L attice , ĠInc . Ċ Ġ* Ċ Ġ* ĠThis Ġprogram Ġis Ġfree Ġsoftware : Ġyou Ġcan Ġredistribute Ġit Ġand / or Ġmodify Ċ Ġ* Ġit Ġunder Ġthe Ġterms Ġof Ġthe ĠGNU ĠGeneral ĠPublic ĠLicense Ġas Ġpublished Ġby Ċ Ġ* Ġthe ĠFree ĠSoftware ĠFoundation , Ġeither Ġversion Ġ 3 Ġof Ġthe ĠLicense , Ġor Ċ Ġ* Ġ( at Ġyour Ġoption ) Ġany Ġlater Ġversion . Ċ Ġ* Ċ Ġ* ĠThis Ġprogram Ġis Ġdistributed Ġin Ġthe Ġhope Ġthat Ġit Ġwill Ġbe Ġuseful , Ċ Ġ* Ġbut ĠWITHOUT ĠANY ĠWARRANTY ; Ġwithout Ġeven Ġthe Ġimplied Ġwarranty Ġof Ċ Ġ* ĠMERCHANTABILITY Ġor ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE . Ġ ĠSee Ġthe Ċ Ġ* ĠGNU ĠGeneral ĠPublic ĠLicense Ġfor Ġmore Ġdetails . Ċ Ġ* Ċ Ġ* ĠYou Ġshould Ġhave Ġreceived Ġa Ġcopy Ġof Ġthe ĠGNU ĠGeneral ĠPublic ĠLicense Ċ Ġ* Ġalong Ġwith Ġthis Ġprogram . Ġ ĠIf Ġnot , Ġsee Ġ< http :// www . gnu . org / licenses />. Ċ Ġ* Ċ Ġ* ĠYou Ġcan Ġcontact Ġthe Ġowner Ġof Ġthe Ġcopyright Ġat Ġsupport @ open l attice . com Ċ Ġ* Ċ Ġ* Ċ Ġ*/ Ċ Ċ package Ġcom . ge ek be ast . rh iz ome . jobs Ċ Ċ import Ġcom . fasterxml . jackson . annotation . Json Creator Ċ import Ġorg . apache . commons . lang 3 . Random Utils Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* Ċ Ġ* Ġ@ author ĠMat thew ĠT am ay o - R ios Ġ& lt ; mat thew @ open l attice . com & gt ; Ċ Ġ*/ Ċ internal Ġclass ĠEmpty Job ( ĊĠĠĠĠĠĠĠ Ġstate : ĠEmpty Job State , ĊĠĠĠĠĠĠĠ Ġfail : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġrounds : ĠInt Ġ= Ġ 1 0 Ċ ) Ġ: ĠAbstract Distributed Job < Long , ĠEmpty Job State >( state ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġround Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġfail : ĠBoolean Ġ= Ġfail ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġ@ Json Creator ĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid : ĠUUID ?, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtaskId : ĠLong ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus : ĠJob Status , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress : ĠByte , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Work Remaining : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate : ĠEmpty Job State , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult : ĠLong ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfail : ĠBoolean ĊĠĠĠ Ġ) Ġ: Ġthis ( state ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinitialize ( id , ĠtaskId , Ġstatus , Ġprogress , Ġhas Work Remaining , result ) ĊĠĠĠĠĠĠĠ Ġthis . result Ġ= Ġresult ĊĠĠĠĠĠĠĠ Ġthis . fail Ġ= Ġfail ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġprocess Next Batch () Ġ{ ĊĠĠĠĠĠĠĠ ĠThread . sleep ( Random Utils . next Long ( 1 0 0 , Ġ 5 0 0 )) ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 5 ĊĠĠĠĠĠĠĠ Ġif ( Ġfail Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġabort () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġhas Work Remaining Ġ= Ġ(++ round Ġ< Ġrounds ) ĊĠĠĠ Ġ} Ċ }