package Ġcom . so eth an . data . mapper Ċ Ċ import Ġcom . so eth an . data . model . Rate Entity Ċ import Ġcom . so eth an . data . network . model . Currency Api Item Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . math . BigDecimal Ċ import Ġjava . text . NumberFormat Ċ import Ġjava . util .* Ċ Ċ class ĠExchange Rate Db Mapper Ġ: ĠBase Mapper < List < Rate Entity >, ĠList < Currency Api Item >>() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġmap ( e : ĠList < Currency Api Item >): ĠList < Rate Entity > Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( e ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRate Entity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrency Code Ġ= Ġit . currency Code , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrate Ġ= Ġconvert BigDecimal ( rate Ġ= Ġit . currency Rate ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġvalidate Input Number ( rate : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrate . toDouble OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIn validate Input Number Exception (" Invalidate ĠInput Ġnumber ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconvert BigDecimal ( rate : ĠString ): ĠBigDecimal Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcomma Removed Rate Ġ= Ġrate . replace (",", Ġ"") ĊĠĠĠĠĠĠĠ Ġvalidate Input Number ( comma Removed Rate ) ĊĠĠĠĠĠĠĠ Ġreturn ĠBigDecimal ( comma Removed Rate ) ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ class ĠIn validate Input Number Exception ( msg : ĠString ?) Ġ: ĠException ( msg ) ĊĊ