package Ġorg . echo . mobile . framework . model Ċ Ċ import Ġcom . google . gson . JsonArray Ċ import Ġcom . google . gson . Json Deserialization Context Ċ import Ġcom . google . gson . Json Deserializer Ċ import Ġcom . google . gson . Json Element Ċ import Ġcom . google . gson . Json ParseException Ċ import Ġorg . echo . mobile . framework . TIME _ DATE _ FORMAT Ċ import Ġorg . echo . mobile . framework . model . operations . Operation Type To Class Converter Ċ import Ġjava . lang . reflect . Type Ċ import Ġjava . text . ParseException Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util . HashMap Ċ import Ġjava . util . Locale Ċ import Ġjava . util . TimeZone Ċ Ċ /** Ċ Ġ* ĠRepresents ĠGraph ene Ġobject Ġwith Ġoperation Ġresults Ġof Ġbroadcast ed Ġtransaction Ċ Ġ* Ċ Ġ* Ġ@ author ĠD aria ĠP ech kov sk aya Ċ Ġ*/ Ċ data Ġclass ĠTransaction Operations Result Ċ /** Ċ Ġ* Ġ@ param Ġblock Data : Ġ ĠBlock Ġdata Ġinstance , Ġcontaining Ġinformation Ġabout Ġthe Ġlocation Ġof Ġthis Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Ġin Ġthe Ġblockchain . Ċ Ġ* Ġ@ param Ġoperations With Results : ĠThe Ġmap Ġof Ġoperations Ġwith Ġresults Ġincluded Ġin Ġthis Ġtransaction . Ċ Ġ*/ ĊĠĠĠ Ġ( var Ġblock Data : ĠBlock Data , Ġvar Ġoperations With Results : ĠMap < Base Operation , ĠString >) Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠJson Ġde serializer Ġfor Ġ[ Transaction Operations Result ] Ġclass ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġclass ĠDeserial izer Ġ: ĠJson Deserializer < Transaction Operations Result > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Throws ( Json ParseException :: class ) ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdeserialize ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjson : ĠJson Element , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtypeOf T : ĠType , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext : ĠJson Deserialization Context ĊĠĠĠĠĠĠĠ Ġ): ĠTransaction Operations Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠjsonObject Ġ= Ġjson . as JsonObject ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠParsing Ġblock Ġdata Ġinformation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġref Block Num Ġ= ĠjsonObject . get ( KEY _ REF _ BLOCK _ NUM ). as Int ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġref Block Prefix Ġ= ĠjsonObject . get ( KEY _ REF _ BLOCK _ PREFIX ). as Long ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠdateFormat Ġ= ĠSimpleDateFormat ( TIME _ DATE _ FORMAT , ĠLocale . getDefault ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdateFormat . time Zone Ġ= ĠTime Zone . getTime Zone (" UTC ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpiration Ġ= ĠjsonObject . get ( KEY _ EXPI RATION ). asString ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime Ms Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdateFormat . parse ( expiration ). time ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠParseException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 1 L ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġblock Data Ġ= ĠBlock Data ( ref Block Num , Ġref Block Prefix , Ġtime Ms ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Operations Ġ= ĠjsonObject . get ( KEY _ OPER ATIONS ). as JsonArray ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠParsing Ġoperation Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoperations Ġ= Ġparse Operations ( json Operations , Ġcontext ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Results Ġ= ĠjsonObject . get ( KEY _ OPERATION _ RESULTS ). as JsonArray ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoperation Results Map Ġ= ĠHashMap < Base Operation , ĠString >() ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġjson Results . size ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsub Array Ġ= Ġjson Results . get ( i ). as JsonArray ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Json Ġ= Ġsub Array . get ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġif Ġ(! result Json . is Json Primitive ) Ġ"" Ġelse Ġresult Json . asString ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoperation Results Map [ operations [ i ]] Ġ= Ġresult ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTransaction Operations Result ( block Data , Ġoperation Results Map ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġparse Operations ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoperations Json : ĠJson Array , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext : ĠJson Deserialization Context ĊĠĠĠĠĠĠĠ Ġ) Ġ= Ġmutable ListOf < Base Operation >(). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġoperations Json . size ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoperation Json Ġ= Ġoperations Json [ i ]. as JsonArray ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoperation Id Ġ= Ġoperation Json [ 0 ]. as Int ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoperation Body Ġ= Ġoperation Json [ 1 ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Type Ġ= ĠOperation Type To Class Converter () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. convert ( operation Id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Type ?. let Ġ{ Ġtype Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( context . deserialize ( operation Body , Ġtype )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠKEY _ REF _ BLOCK _ NUM Ġ= Ġ" ref _ block _ num " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠKEY _ REF _ BLOCK _ PREFIX Ġ= Ġ" ref _ block _ prefix " ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠKEY _ EXPI RATION Ġ= Ġ" expiration " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠKEY _ OPER ATIONS Ġ= Ġ" operations " ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠKEY _ OPERATION _ RESULTS Ġ= Ġ" operation _ results " ĊĠĠĠ Ġ} Ċ } Ċ