package Ġbr . com . z up . cred ic ard zero . card Ċ Ċ import Ġbr . com . z up . cred ic ard zero . card . integration . Card Processor Ċ import Ġbr . com . z up . cred ic ard zero . proposal . Proposal Ċ import Ġbr . com . z up . cred ic ard zero . proposal . Proposal . Companion . FIND _ BY _ STATUS Ċ import Ġbr . com . z up . cred ic ard zero . proposal . Proposal Status . EL IG IBLE Ċ import Ġorg . hibernate . Lock Options Ċ import Ġorg . springframework . scheduling . annotation . Scheduled Ċ import Ġorg . springframework . stereotype . Component Ċ import Ġorg . springframework . transaction . support . Transaction Template Ċ import Ġjava . util . concurrent . atomic . Atomic Boolean Ċ import Ġjavax . persistence . EntityManager Ċ import Ġjavax . persistence . Lock Mode Type Ċ Ċ @ Component Ċ class ĠCard Task ( ĊĠĠĠ Ġval Ġentity Manager : ĠEntity Manager , ĊĠĠĠ Ġval Ġcard Processor : ĠCard Processor , ĊĠĠĠ Ġval Ġtransaction Template : ĠTransaction Template Ċ ) Ġ: ĠRunnable Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġclosed : ĠAtomic Boolean Ġ= ĠAtomic Boolean () ĊĊĠĠĠ Ġ@ Scheduled ( fixed Delay Ġ= Ġ 5 _ 0 0 0 ) ĊĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ(! closed . get ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Template . execute Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġun finished Ġ= Ġentity Manager . create Named Query ( FIND _ BY _ STATUS , ĠProposal :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setParameter (" status ", ĠEL IG IBLE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMax Results ( 1 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Lock Mode ( Lock Mode Type . PES SIM ISTIC _ WRITE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Hint (" javax . persistence . lock . timeout ", ĠLock Options . SKIP _ LOCK ED ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. result List ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( un finished . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclosed . set ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġun finished . forEach ( card Processor :: process Card ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ } Ċ