import Ġjava . io . Buffered Writer Ċ import Ġjava . io . File Ċ import Ġjava . io . FileWriter Ċ import Ġjava . sql . Connection Ċ import Ġjava . sql . Driver Manager Ċ import Ġjava . text . Decimal Format Ċ import Ġjava . time . LocalDateTime Ċ import Ġjava . time . format . DateTime Formatter Ċ import Ġjava . util .* Ċ Ċ class ĠGenerator 2 Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr Ġ= ĠRandom () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClass . forName (" com . mysql . cj . jdbc . Driver ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠDriver Manager . getConnection (" jdbc : postgresql :// ret rop ie : 5 4 3 2 / mf contracts ", Ġ" pi ", Ġ" secret "). use Ġ{ Ġc Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġhttps :// f le . github . io / temp or arily - disable - all - indexes - of - a - postgresql - table . html ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠUPDATE Ġpg _ index ĠSET Ġin dis ready = false ĠWHERE Ġind rel id Ġ= Ġ( SELECT Ġoid ĠFROM Ġpg _ class ĠWHERE Ġrel name =' t _ contracts 2 '); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠUPDATE Ġpg _ index ĠSET Ġin dis ready = false ĠWHERE Ġind rel id Ġ= Ġ( SELECT Ġoid ĠFROM Ġpg _ class ĠWHERE Ġrel name =' t _ components 2 '); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ... Ġload ... ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠUPDATE Ġpg _ index ĠSET Ġin dis ready = true ĠWHERE Ġind rel id Ġ= Ġ( SELECT Ġoid ĠFROM Ġpg _ class ĠWHERE Ġrel name =' t _ contracts 2 '); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠUPDATE Ġpg _ index ĠSET Ġin dis ready = true ĠWHERE Ġind rel id Ġ= Ġ( SELECT Ġoid ĠFROM Ġpg _ class ĠWHERE Ġrel name =' t _ components 2 '); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRE INDEX ĠTABLE Ġt _ contracts 2 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ??? ĠRE INDEX ĠINDEX Ġt _ contracts 2 _ pkey ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRE INDEX ĠTABLE Ġt _ components 2 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ??? ĠRE INDEX ĠINDEX Ġt _ components 2 _ pkey ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġstart Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . auto Commit Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . transaction Isolation Ġ= ĠConnection . TRANSACTION _ READ _ UN COMMIT TED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtime Ġ= ĠSystem . currentTimeMillis () Ġ- Ġstart ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" setup Ġdone Ġin Ġ$ time Ġms ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnum Components Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġn Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( num Components Ġ< Ġ 2 0 _ 0 0 0 _ 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn ++ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ 1 .. 2 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" ITER ATION Ġ$ n /$ j ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfilename Ġ= Ġ"/ w / kafka - data - consistency / mf / lot sof data / import - contracts 2 . csv " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfilename 2 Ġ= Ġ"/ w / kafka - data - consistency / mf / lot sof data / import - components 2 . csv " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( filename ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile 2 Ġ= ĠFile ( filename 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( file . exists ()) Ġfile . delete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( file 2 . exists ()) Ġfile 2 . delete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġout Ġ= ĠBuffered Writer ( FileWriter ( file ), Ġ 2 5 6 Ġ* Ġ 1 0 2 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġout 2 Ġ= ĠBuffered Writer ( FileWriter ( file 2 ), Ġ 2 5 6 Ġ* Ġ 1 0 2 4 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġbytes Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 .. 1 _ 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontract Id Ġ= ĠUUID . randomUUID () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠstartTime Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocalDateTime . now (). with Hour ( 1 2 ). plus Days ( r . nextInt ( 3 6 5 ). to Long ()). with Nano ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠendTime Ġ= ĠstartTime . plus Years ( r . nextInt ( 6 ). to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs Ġ= ĠstartTime . format ( DateTime Formatter . ISO _ DATE _ TIME ). replace (' T ', Ġ' Ġ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġe Ġ= ĠendTime . format ( DateTime Formatter . ISO _ DATE _ TIME ). replace (' T ', Ġ' Ġ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġat Ġ= ĠLocalDateTime . now (). with Nano ( 0 ). format ( DateTime Formatter . ISO _ DATE _ TIME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace (' T ', Ġ' Ġ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsync Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠID , ĠSTART TIME , ĠEND TIME , ĠSTATE , ĠSY NC _ TIMESTAMP , ĠCRE ATED _ AT , ĠCRE ATED _ BY , ĠO FFER ED _ AT , ĠO FFER ED _ BY , ĠAC CEPT ED _ AT , ĠAC CEPT ED _ BY , ĠAP PRO VED _ AT , ĠAP PRO VED _ BY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" "$ contract Id ", Ġ"$ s . 0 0 0 "," $ e . 0 0 0 "," RUNNING "," $ sync "," $ at . 6 8 1 "," john . smith "," $ at . 0 0 0 "," john . smith "," $ at . 0 0 0 "," john . smith Ġ"," $ at . 0 0 0 "," j ane . smith """" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout . write ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout . new Line () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbytes Ġ+= Ġtext . length ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠparentId : ĠUUID ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( comp Ġin Ġ 1 .. 3 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomponent Id Ġ= ĠUUID . randomUUID () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠID , ĠP ARENT _ ID , ĠCONTRACT _ ID , ĠCOMPONENT DEFINITION _ ID , ĠPRODUCT _ ID , ĠCONFIG URATION ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparent Ġ= Ġif Ġ( parentId Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" NULL " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"' ${ parentId } '" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext 2 Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" '$ component Id ',$ parent ,' $ contract Id ',' Card board Box ', NULL ,' [{" c ** ":" Int Configuration "," name ":" SP ACES "," clazz ":" int "," units ":" NONE "," value ":" 1 0 "},{" c ** ":" Int Configuration "," name ":" QU ANT ITY "," clazz ":" int "," units ":" PI EC ES "," value ":" ${ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr . nextInt ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} "},{" c ** ":" Material Configuration "," name ":" MAT ERIAL "," clazz ":" Material "," units ":" NONE "," value ":" CAR DB O ARD "} ]' """ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout 2 . write ( text 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout 2 . new Line () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbytes Ġ+= Ġtext 2 . length ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠparentId Ġ= Ġcomponent Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnum Components ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout . flush () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout 2 . flush () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout 2 . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Ġ= ĠSystem . currentTimeMillis () Ġ- Ġstart ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" W rote Ġ${ bytes Ġ/ Ġ 1 0 2 4 } KB Ġin Ġ$ time Ġms Ġ=> Ġ${ Decimal Format ("# . 0 0 "). format ( bytes Ġ/ Ġ 1 0 2 4 . 0 Ġ/ Ġ 1 0 2 4 L Ġ/ Ġ( time Ġ/ Ġ 1 0 0 0 . 0 ))} ĠMB / s .") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . prepareStatement ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcopy Ġt _ contracts 2 ( ID , ĠSTART TIME , ĠEND TIME , ĠSTATE , ĠSY NC _ TIMESTAMP , ĠCRE ATED _ AT , ĠCRE ATED _ BY , ĠO FFER ED _ AT , ĠO FFER ED _ BY , ĠAC CEPT ED _ AT , ĠAC CEPT ED _ BY , ĠAP PRO VED _ AT , ĠAP PRO VED _ BY ) ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Ġ'/ w / kafka - data - consistency / mf / lot sof data / import - contracts 2 . csv ' ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ĠDE LIMITER Ġ',' ĠCSV ĠQU OTE Ġ'" '; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). use Ġ{ Ġprintln (" load Ġcontracts : Ġ${ it . executeUpdate () }") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Ġ= ĠSystem . currentTimeMillis () Ġ- Ġstart ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" loaded Ġcontracts Ġin Ġ$ time Ġms ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . prepareStatement ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcopy Ġt _ components 2 ( ID , ĠP ARENT _ ID , ĠCONTRACT _ ID , ĠCOMPONENT DEFINITION _ ID , ĠPRODUCT _ ID , ĠCONFIG URATION ) ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Ġ'/ w / kafka - data - consistency / mf / lot sof data / import - components 2 . csv ' ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ĠDE LIMITER Ġ',' ĠCSV ĠQU OTE Ġ''' '; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). use Ġ{ Ġprintln (" load Ġcomponents : Ġ${ it . executeUpdate () }") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Ġ= ĠSystem . currentTimeMillis () Ġ- Ġstart ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" loaded Ġcomponents Ġin Ġ$ time Ġms ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . commit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Ġ= ĠSystem . currentTimeMillis () Ġ- Ġstart ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" committed Ġin Ġ$ time Ġms ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }