package Ġnet . nin jac at . row cp . query Ċ Ċ import Ġnet . nin jac at . row cp . R sql Base Listener Ċ import Ġnet . nin jac at . row cp . R sql Parser Ċ Ċ class ĠQuery Listener ( private Ġval Ġsrc : ĠString ) Ġ: ĠR sql Base Listener () Ġ{ ĊĊĠĠĠ Ġvar ĠtableName Ġ= Ġ"" ĊĊĠĠĠ Ġvar Ġtable Alias : ĠString ? Ġ= Ġ"" ĊĊĠĠĠ Ġvar Ġfilter Ġ= Ġ"" ĊĊĠĠĠ Ġvar Ġdistinct Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun Ġexit Where ( ctx : ĠR sql Parser . Where Context ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . exit Where ( ctx ) ĊĠĠĠĠĠĠĠ Ġval Ġstart Ġ= Ġctx !!. anything (). start . startIndex ĊĠĠĠĠĠĠĠ Ġval Ġend Ġ= Ġctx . anything (). stop . stop Index ĊĠĠĠĠĠĠĠ Ġfilter Ġ= Ġsrc . substring ( start , Ġend Ġ+ Ġ 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġexit Source Name ( ctx : ĠR sql Parser . Source Name Context ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . exit Source Name ( ctx ) ĊĠĠĠĠĠĠĠ ĠtableName Ġ= Ġctx ?. name ()?. text !! ĊĠĠĠĠĠĠĠ Ġtable Alias Ġ= Ġctx . alias ()?. text ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġexit Projection ( ctx : ĠR sql Parser . Projection Context ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . exit Projection ( ctx ) ĊĠĠĠĠĠĠĠ Ġdistinct Ġ= Ġctx ?. distinct () Ġ!= Ġnull ĊĠĠĠ Ġ} Ċ }