package Ġde . br . android . env picker Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġde . br . android . env picker . ui . Env Activity Ċ import Ġde . br . android . env picker . ui . Env Fragment Ċ Ċ internal Ġclass ĠEnv Picker Impl < T Ġ: ĠEntry >( ĊĠĠĠ Ġoverride Ġval Ġconfig : ĠConfig < T >, ĊĠĠĠ Ġcontext : ĠContext Ċ ) Ġ: ĠEnv Picker < T > Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġvalidate Config () ĊĠĠĠĠĠĠĠ ĠEntry Reflection ( config . default Active Entry ). validate () ĊĠĠĠĠĠĠĠ ĠConfig Store . set ( config . key , Ġconfig ) ĊĠĠĠĠĠĠĠ Ġsetup Default Entries ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġprivate Ġfun Ġget Repo ( context : ĠContext ) Ġ= ĊĠĠĠĠĠĠĠ Ġ( Env Repository . get ( config , Ġcontext ) Ġas ĠEnv Repository < T >) ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Fragment () Ġ= ĠEnv Fragment . create < T >( config . key ) ĊĊĠĠĠ Ġoverride Ġfun Ġget Entries ( context : ĠContext ): ĠList < T > Ġ= ĊĠĠĠĠĠĠĠ Ġget Repo ( context ). load Entries () ĊĊĠĠĠ Ġoverride Ġfun Ġset Entries ( state : ĠList < T >, Ġcontext : ĠContext ) Ġ= ĊĠĠĠĠĠĠĠ Ġget Repo ( context ). save Entries ( state ) ĊĊĠĠĠ Ġoverride Ġfun Ġget Active Entry ( context : ĠContext ): ĠT Ġ= ĊĠĠĠĠĠĠĠ Ġget Repo ( context ). load Active Entry () ĊĊĠĠĠ Ġoverride Ġfun Ġset Active Entry ( entry : ĠT , Ġcontext : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġget Repo ( context ). save Active Entry ( entry ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstart Env Picker Activity ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . startActivity ( Intent ( context , ĠEnv Activity :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Config Store . KEY , Ġconfig . key ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvalidate Config () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( config . key . isBlank ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" The Ġkey Ġcan Ġnot Ġbe Ġblank .") ĊĠĠĠĠĠĠĠ Ġif Ġ( config . default Active Entry Ġ! in Ġconfig . default Entries ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġdefault Active Entry Ġmust Ġbe Ġincluded Ġin Ġthe Ġdefault Entries ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Default Entries ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( get Entries ( context ). isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Entries ( config . default Entries , Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Active Entry ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . default Active Entry , Ġcontext ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }