/* Ċ Ġ* ĠCopyright Ġ 2 0 2 2 Ġt we er le i ĠW ru ck Ġ+ ĠB uch me ier ĠG b R Ġ- Ġhttp :// www . t we er le i . de / Ċ Ġ* ĠĊ Ġ* Ġ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 Ġde . t we er le i . pl umber . worker . jdbc Ċ Ċ import Ġde . t we er le i . pl umber . worker .* Ċ import Ġorg . springframework . jdbc . core . Jdbc Template Ċ import Ġorg . springframework . jdbc . core . ResultSet Extractor Ċ import Ġjava . sql . ResultSet Ċ Ċ class ĠJdbc Select Worker ( ĊĠĠĠ Ġprivate Ġval ĠtableName : ĠString , ĊĠĠĠ Ġprivate Ġval Ġprimary Key : ĠString , ĊĠĠĠ Ġprivate Ġval Ġjdbc Template : ĠJdbc Template , ĊĠĠĠ Ġlimit : ĠInt , ĊĠĠĠ Ġworker : ĠWorker Ċ ): ĠGenerating Worker ( limit , Ġworker ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġgenerate Items ( item : ĠWork Item , Ġfn : Ġ( WorkItem ) Ġ-> ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstart After Ġ= Ġitem . get Optional ( Well Known Keys . START _ AFTER _ KEY ) ĊĠĠĠĠĠĠĠ Ġval Ġend With Ġ= Ġitem . get Optional ( Well Known Keys . END _ WITH _ KEY ) ĊĠĠĠĠĠĠĠ Ġval Ġtable Ġ= Ġitem . get If Empty ( tableName , ĠJdbc Keys . TABLE _ NAME ) ĊĠĠĠĠĠĠĠ Ġval Ġextract Rows Ġ= ĠResultSet Extractor < Int > Ġ{ Ġrs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġkeep Generating Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġitem Count Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( keep Generating Ġ&& Ġrs . next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fn ( rs . to WorkItem ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Count ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkeep Generating Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Count ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġitem Count Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart After Ġ!= Ġnull Ġ&& Ġend With Ġ!= Ġnull Ġ-> Ġselect Range ( table , Ġstart After , Ġend With , Ġextract Rows ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart After Ġ!= Ġnull Ġ-> Ġselect From ( table , Ġstart After , Ġextract Rows ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend With Ġ!= Ġnull Ġ-> Ġselect To ( table , Ġend With , Ġextract Rows ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġselect All ( table , Ġextract Rows ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlogger . info Ġ{ Ġ" f etched Ġ$ item Count Ġrows " Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġselect All ( table : ĠString , Ġr se : ĠResultSet Extractor < Int >) Ġ= ĊĠĠĠĠĠĠĠ Ġjdbc Template . query ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" SELECT Ġ* ĠFROM Ġ$ table ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr se ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġselect From ( table : ĠString , Ġstart After : ĠAny , Ġr se : ĠResultSet Extractor < Int >) Ġ= ĊĠĠĠĠĠĠĠ Ġjdbc Template . query ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" SELECT Ġ* ĠFROM Ġ$ table ĠWHERE Ġ$ primaryKey Ġ> Ġ?", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr se , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart After ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġselect To ( table : ĠString , Ġend With : ĠAny , Ġr se : ĠResultSet Extractor < Int >) Ġ= ĊĠĠĠĠĠĠĠ Ġjdbc Template . query ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" SELECT Ġ* ĠFROM Ġ$ table ĠWHERE Ġ$ primaryKey Ġ<= Ġ?", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr se , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend With ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġselect Range ( table : ĠString , Ġstart After : ĠAny , Ġend With : ĠAny , Ġr se : ĠResultSet Extractor < Int >) Ġ= ĊĠĠĠĠĠĠĠ Ġjdbc Template . query ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" SELECT Ġ* ĠFROM Ġ$ table ĠWHERE Ġ$ primaryKey Ġ> Ġ? ĠAND Ġ$ primaryKey Ġ<= Ġ?", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr se , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart After , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġend With ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun ĠResultSet . to WorkItem () Ġ= ĊĠĠĠĠĠĠĠ ĠRecord () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ Ġmap Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 .. metaData . column Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ metaData . get ColumnName ( i )] Ġ= ĠgetObject ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. let Ġ{ Ġmap Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWork Item . of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWell Known Keys . RECORD Ġto Ġmap , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJdbc Keys . TABLE _ NAME Ġto ĠtableName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJdbc Keys . PRIMARY _ KEY Ġto Ġmap [ primaryKey ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ } Ċ