package Ġorg . ro bo quant . bro kers . sim Ċ Ċ import Ġorg . ro bo quant . bro kers . Default Order State Ċ import Ġorg . ro bo quant . bro kers . update Ċ import Ġorg . ro bo quant . orders .* Ċ import Ġjava . time . Instant Ċ Ċ private Ġfun ĠList < Order Handler >. get Single Order Handler ( id : ĠInt ) Ġ= ĊĠĠĠ Ġfilter Is Instance < Single Order Handler < Single Order >> (). first OrNull Ġ{ ĊĠĠĠĠĠĠĠ Ġit . order . id Ġ== Ġid ĊĠĠĠ Ġ} Ċ Ċ internal Ġclass ĠUpdate Order Handler ( val Ġorder : ĠUpdate Order ) Ġ: ĠModify Order Handler Ġ{ ĊĊĠĠĠ Ġoverride Ġvar Ġstate : ĠOrder State Ġ= ĠDefault Order State ( order ) ĊĊĠĠĠ Ġoverride Ġfun Ġexecute ( handlers : ĠList < Order Handler >, Ġtime : ĠInstant ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= Ġhandlers . get Single Order Handler ( order . original . id ) ĊĠĠĠĠĠĠĠ Ġstate Ġ= Ġif Ġ( handler Ġ!= Ġnull Ġ&& Ġhandler . state . status . open ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . order Ġ= Ġorder . update ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDefault Order State ( order , ĠOrder Status . COMPLETED , Ġtime , Ġtime ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDefault Order State ( order , ĠOrder Status . RE JECT ED , Ġtime , Ġtime ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġclass ĠCancel Order Handler ( val Ġorder : ĠCancel Order ) Ġ: ĠModify Order Handler Ġ{ ĊĊĠĠĠ Ġoverride Ġvar Ġstate : ĠOrder State Ġ= ĠDefault Order State ( order ) ĊĊĠĠĠ Ġoverride Ġfun Ġexecute ( handlers : ĠList < Order Handler >, Ġtime : ĠInstant ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= Ġhandlers . get Single Order Handler ( order . order . id ) ĊĠĠĠĠĠĠĠ Ġstate Ġ= Ġif Ġ( handler Ġ!= Ġnull Ġ&& Ġhandler . state . status . open ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . state Ġ= Ġhandler . state . update ( time , ĠOrder Status . EXPI RED ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDefault Order State ( order , ĠOrder Status . COMPLETED , Ġtime , Ġtime ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDefault Order State ( order , ĠOrder Status . RE JECT ED , Ġtime , Ġtime ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ