/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 . Ċ Ġ*/ Ċ Ċ package Ġde . un isa ar land . lo lad rives . Fragments . cars Ċ Ċ import Ġde . un isa ar land . lo lad rives . MainActivity Ċ import Ġpc df Event . events . ob d Events . OB DE vent Ċ import Ġpc df Event . events . ob d Events . ob d Intermediate Events . single Component Events . V IN Event Ċ import Ġserialization . Serializer Ċ import Ġjava . io . File Ċ Ċ object ĠC ars Ġ{ ĊĊĠĠĠ Ġval Ġcar Map : ĠMutable Map < String , ĠCar > Ġ= Ġmutable Map Of () ĊĠĠĠ Ġval Ġcar V ins : ĠList < String > ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcar Map . keys . toList () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġserializer Ġ= ĠSerializer () ĊĊĠĠĠ Ġfun ĠgetC ars From History ( activity : ĠMainActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġactivity . get External Files Dir ( null ) ĊĠĠĠĠĠĠĠ Ġval Ġlet Directory Ġ= ĠFile ( path , Ġ" pc df data ") ĊĠĠĠĠĠĠĠ Ġlet Directory . mkdir s () ĊĊĠĠĠĠĠĠĠ Ġval Ġfiles Array Ġ= Ġlet Directory . list Files () ĊĠĠĠĠĠĠĠ Ġval Ġfiles Ġ= Ġmutable ListOf < File >() ĊĊĠĠĠĠĠĠĠ Ġfiles Array ?. forEach Ġ{ Ġdirectory Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( directory . isDirectory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdirectory . list Files ()?. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . name . contains (" pp cdf ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfiles . add ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( file Ġin Ġfiles ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . forEach Line Ġ{ Ġl Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġevent Ġ= Ġserializer . parse To Pattern ( l ). to Event () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( event Ġis ĠOB DE vent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġi Event Ġ= Ġevent . to Intermediate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Event Ġis ĠV IN Event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvin Ġ= Ġi Event . vin ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( car Map . containsKey ( vin )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( car Map [ vin ]?. files ?. contains ( file ) Ġ== Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcar Map [ vin ]?. files ?. add ( file ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcar Map [ vin ] Ġ= ĠCar ( vin ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcar Map [ vin ]?. files ?. add ( file ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ forEach Line ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( car Ġin Ġcar Map . values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcar . generate Basic Data () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ }