package Ġio . tell ery . managers . impl Ċ Ċ import Ġcom . fasterxml . jackson . module . kotlin . jackson ObjectMapper Ċ import Ġcom . fasterxml . jackson . module . kotlin . readValue Ċ import Ġio . tell ery . entities . Integration Entity Ċ import Ġio . tell ery . entities . Profile Entity Ċ import Ġio . tell ery . managers . Profile Manager Ċ import Ġorg . apache . commons . io . FileUtils Ċ import Ġjava . nio . file . Path Ċ import Ġkotlin . io . path . create File Ċ import Ġkotlin . io . path . not Exists Ċ import Ġkotlin . io . path . read Text Ċ import Ġkotlin . io . path . write Text Ċ import Ġio . tell ery . entities . Project Config Ġas Ġconfig Ċ Ċ class ĠFile Profile Manager Ġ: ĠProfile Manager Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġglobal Config Dir : ĠPath Ġ= Ġconfig . global Config Dir ĊĠĠĠ Ġprivate Ġvar Ġprofile Path : ĠPath Ġ= Ġconfig . profile Path ĊĠĠĠ Ġprivate Ġvar Ġintegration Path : ĠPath Ġ= Ġconfig . integration Path ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġmapper Ġ= Ġj ack son ObjectMapper () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( global Config Dir . not Exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFileUtils . force Mk dir ( global Config Dir . to File ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( profile Path . not Exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprofile Path . create File () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( integration Path . not Exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintegration Path . create File () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Profile ById ( workspace Id : ĠString ): ĠProfile Entity ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġload Profile () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupsert Profile ( profile Entity : ĠProfile Entity ): ĠProfile Entity Ġ{ ĊĠĠĠĠĠĠĠ Ġprofile Path . write Text ( mapper . writeValue AsString ( profile Entity )) ĊĠĠĠĠĠĠĠ Ġreturn Ġprofile Entity ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetAll Integration In Profile ( profile Id : ĠString ): ĠList < Integration Entity > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġload Integr ations () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Integration In Profile And ByType ( ĊĠĠĠĠĠĠĠ Ġprofile Id : ĠString , ĊĠĠĠĠĠĠĠ Ġtype : ĠString ĊĠĠĠ Ġ): ĠIntegration Entity ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintegr ations Ġ= Ġload Integr ations () ĊĠĠĠĠĠĠĠ Ġreturn Ġintegr ations . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . find Last Ġ{ Ġintegration Ġ-> Ġintegration . type Ġ== Ġtype Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupsert Integration ( integration Entity : ĠIntegration Entity ): ĠIntegration Entity Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid To Integration Ġ= ĠHashMap ( load Integr ations (). associate By Ġ{ Ġit . id Ġ}) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( integration Entity . id Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintegration Entity . id Ġ= Ġgenerate Integration Id ( integration Entity . type ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġid To Integration [ integration Entity . id ] Ġ= Ġintegration Entity ĊĠĠĠĠĠĠĠ Ġintegration Path . write Text ( mapper . writeValue AsString ( id To Integration . values . toList ())) ĊĠĠĠĠĠĠĠ Ġreturn Ġintegration Entity ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete Integration ( id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid To Integration Ġ= ĠHashMap ( load Integr ations (). associate By Ġ{ Ġit . id Ġ}) ĊĠĠĠĠĠĠĠ Ġid To Integration . remove ( id ) ĊĠĠĠĠĠĠĠ Ġintegration Path . write Text ( mapper . writeValue AsString ( id To Integration . values . toList ())) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Profile (): ĠProfile Entity ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( profile Path . not Exists () Ġ|| Ġprofile Path . read Text (). isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmapper . readValue ( profile Path . to File ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Integr ations (): ĠList < Integration Entity > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( integration Path . not Exists () Ġ|| Ġintegration Path . read Text (). isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠlistOf () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmapper . readValue ( integration Path . to File ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate Integration Id ( type : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" db t " Ġ-> Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠRuntimeException () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ