package Ġorg . console tr ader . orders Ċ Ċ import Ġorg . console tr ader . common . Parsing Parameter Exception Ċ import Ġorg . console tr ader . common . Extended Params Ċ import Ġorg . know m . x change . currency . Currency Pair Ċ import Ġjava . math . BigDecimal Ċ Ċ open Ġclass ĠOrder Extended Params ( task Raw : ĠString ) Ġ: ĠExtended Params () Ġ{ ĊĠĠĠ Ġenum Ġclass ĠAmount Unit Ġ{ ĊĠĠĠĠĠĠĠ ĠBase Currency , ĠCounter Currency , ĠPercent ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġcurrency Pair : ĠCurrency Pair ĊĠĠĠ Ġval Ġamount Value : ĠBigDecimal ĊĠĠĠ Ġvar Ġprice : ĠDouble Ġ= Ġ 0 . 0 ĊĠĠĠ Ġvar Ġamount Unit : ĠAmount Unit ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtask Params Raw Ġ= Ġtask Raw . substring ( task Raw . indexOf (" (" ) Ġ+ Ġ 1 , Ġtask Raw . indexOf (" ) ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtask Params Split Ġ= Ġtask Params Raw . split ("| ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrency Pair Ġ= ĠCurrency Pair ( task Params Split [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġamount Raw Ġ= Ġtask Params Split [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġamount In Base Currency Ġ= Ġamount Raw . endsWith ( currency Pair . base . toString (), Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġamount In Counter Currency Ġ= Ġamount Raw . endsWith ( currency Pair . counter . toString (), Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġamount In Percent Ġ= Ġamount Raw . endsWith ("% ", Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġamount Unit Ġ= Ġif Ġ( amount In Base Currency ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAmount Unit . Base Currency ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( amount In Counter Currency ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAmount Unit . Counter Currency ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAmount Unit . Percent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! amount In Base Currency Ġ&& Ġ! amount In Counter Currency Ġ&& Ġ! amount In Percent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠerrorMessage Ġ= Ġ" The Ġamount Ġshould Ġbe Ġin Ġbase Ġcurrency , Ġcounter Ġcurrency , Ġor Ġpercent Ġeg : Ġ 1 0 Ġ${ currency Pair . base }, Ġ 1 5 ${ currency Pair . counter } Ġor Ġ 1 5 %" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠParsing Parameter Exception ( errorMessage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġamount Value Ġ= Ġamount Raw ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( currency Pair . base . toString (), Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( currency Pair . counter . toString (), Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ("% "," ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to BigDecimal () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( task Params Split . size Ġ== Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprice Ġ= Ġtask Params Split [ 2 ]. toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠParsing Parameter Exception (" Error Ġcreating Ġtask Ġparams ", Ġex ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }