package Ġnet . cord a . client . j fx . model Ċ Ċ import Ġjavafx . beans . property . Simple ObjectProperty Ċ import Ġjavafx . beans . value . Observable Value Ċ import Ġnet . cord a . core . contracts . Amount Ċ import Ġjava . math . BigDecimal Ċ import Ġjava . math . Round ingMode Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠThis Ġmodel Ġprovides Ġan Ġexchange Ġrate Ġfrom Ġarbitrary Ġcurrency Ġto Ġarbitrary Ġcurrency . Ċ Ġ*/ Ċ abstract Ġclass ĠExchange Rate Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConvert Ġthe Ġgiven Ġamount Ġof Ġa Ġcurrency Ġinto Ġthe Ġtarget Ġcurrency . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġoriginal Ġamount Ġconverted Ġto Ġan Ġamount Ġin Ġthe Ġtarget Ġcurrency . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġexchange Amount ( amount : ĠAmount < Currency >, Ġto : ĠCurrency ) Ġ= ĠAmount . from Decimal ( amount . to Decimal (). multiply ( rate ( amount . token , Ġto )), Ġto ) ĊĊĠĠĠ Ġabstract Ġfun Ġrate ( from : ĠCurrency , Ġto : ĠCurrency ): ĠBigDecimal Ċ } Ċ Ċ /** Ċ Ġ* ĠDefault Ġimplementation Ġof Ġan Ġexchange Ġrate Ġmodel , Ġwhich Ġuses Ġa Ġfixed Ġexchange Ġrate . Ċ Ġ*/ Ċ // ĠTODO Ġhook Ġup Ġan Ġactual Ġoracle Ċ class ĠExchange Rate Model Ġ{ ĊĠĠĠ Ġval Ġexchange Rate : ĠObservable Value < Exchange Rate > Ġ= ĠSimple ObjectProperty < Exchange Rate >( object Ġ: ĠExchange Rate () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrate ( from : ĠCurrency , Ġto : ĠCurrency ) Ġ= ĠBigDecimal . ONE ĊĠĠĠ Ġ}) Ċ } Ċ