/* Ċ Ġ* ĠCopyright ĠÂ© Ġ 2 0 1 4 ĠSte fan ĠN ieder ha user Ġ( nid in @ g mx . ch ) Ċ Ġ* Ċ Ġ* Ġ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 Ġg uru . n idi . jenkins . remote Ċ Ċ import Ġcom . fasterxml . jackson . databind . Deserialization Feature Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġcom . fasterxml . jackson . module . kotlin . Kotlin Module Ċ import Ġjava . io . File Ċ import Ġjava . io . FileInputStream Ċ import Ġjava . io . File OutputStream Ċ import Ġjava . io . OutputStream Writer Ċ import Ġjava . util .* Ċ Ċ data Ġclass ĠBot State ( val Ġmonitor s : ĠMutable Map < String , ĠMonitor Config >, Ġval Ġch ats : ĠMutable Map < Long , ĠChat >) Ċ Ċ class ĠMonitor Config ( val Ġconnect : ĠJenkins Connect , Ġval Ġfilter : ĠString ?) Ċ Ċ data Ġclass ĠChat ( val Ġmonitor s : ĠLinkedHashMap < String , ĠBoolean >, Ġvar Ġrunning : ĠBoolean ) Ċ Ċ class ĠBot StateManager ( val Ġdata File : ĠFile ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġmapper : ĠObjectMapper ĊĠĠĠ Ġval Ġstate : ĠBot State ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġdata File . parent File . mkdir s () ĊĠĠĠĠĠĠĠ Ġmapper Ġ= ĠObjectMapper (). register Module ( Kotlin Module ()) ĊĠĠĠĠĠĠĠ Ġmapper . set Config ( mapper . de serialization Config . without ( Deserialization Feature . FAIL _ ON _ UNKNOWN _ PROPERTIES )) ĊĠĠĠĠĠĠĠ Ġstate Ġ= Ġload () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload (): ĠBot State Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠFileInputStream ( data File ()). use Ġ{ Ġinp Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmapper . readValue ( inp , ĠBot State :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsave () Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠFileOutputStream ( data File ()). use Ġ{ Ġout Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmapper . writeValue ( out , Ġstate ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdata File (): ĠFile Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! data File . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOutputStream Writer ( File OutputStream ( data File )). use () Ġ{ Ġout Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout . write (""" {" monitor s ": {}, " ch ats ":{ }} """) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġdata File ĊĠĠĠ Ġ} Ċ }