package Ġcom . ray br it ton . json query Ċ Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . internal . Linked TreeMap Ċ import Ġcom . ray br it ton . json query . models . JsonArray Ċ import Ġcom . ray br it ton . json query . models . JsonObject Ċ import Ġcom . ray br it ton . json query . models . Query Ċ import Ġcom . ray br it ton . json query . parsing . query . Query Executor Ċ import Ġcom . ray br it ton . json query . parsing . query . build Query Ċ import Ġcom . ray br it ton . json query . parsing . tokens . to Query Tokens Ċ import Ġcom . ray br it ton . json query . printer s . Printer Ċ Ċ class ĠJson Query ( private Ġval Ġjson : ĠString ) Ġ{ ĊĊĠĠĠ Ġfun Ġquery ( query Str : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ ĠJ Q Logger . debug (" Input : Ġ$ query Str ") ĊĠĠĠĠĠĠĠ Ġval Ġtokens Ġ= Ġquery Str . to Query Tokens () ĊĠĠĠĠĠĠĠ ĠJ Q Logger . debug (" Tokens : Ġ" Ġ+ Ġtokens . join ToString ()) ĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġtokens . build Query ( query Str ) ĊĠĠĠĠĠĠĠ ĠJ Q Logger . debug (" Parsed Ġas Ġ$ query ") ĊĠĠĠĠĠĠĠ Ġreturn Ġquery ( query ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġquery ( query : ĠQuery ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġjson Obj Ġ= ĠGson (). fromJson ( json , ĠAny :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġjson Obj Ġ= Ġjson Obj . convertTo Internal Format () ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠQuery Executor (). execute ( json Obj , Ġquery ) ĊĠĠĠĠĠĠĠ Ġval Ġprinter Ġ= ĠPrinter . create Printer ( query ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġprinter . print ( result , Ġquery ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠAny ?. convertTo Internal Format (): ĠAny ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLinked TreeMap < *, Ġ*> Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġobj Ġ= ĠJsonObject . from Linked TreeMap ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( key Ġin Ġobj . keys ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobj [ key ] Ġ= Ġobj [ key ]. convertTo Internal Format () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobj ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠArrayList < *> Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠJson Array ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( 0 Ġuntil Ġlist . size ). forEach Ġ{ Ġidx Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist [ idx ] Ġ= Ġlist [ idx ]. convertTo Internal Format () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }