package Ġcom . squareup . sql de light . intellij . intent ions Ċ Ċ import Ġcom . ale c strong . sql . psi . core . psi . Sql Expr Ċ import Ġcom . ale c strong . sql . psi . core . psi . Sql Select Stmt Ċ import Ġcom . ale c strong . sql . psi . core . psi . Sql Table Alias Ċ import Ġcom . ale c strong . sql . psi . core . psi . Sql TableName Ċ import Ġcom . intellij . code Insight . int ention . Base ElementAt Caret Int ention Action Ċ import Ġcom . intellij . openapi . command . Write Command Action Ċ import Ġcom . intellij . openapi . editor . Editor Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . ui . popup . JB Popup Factory Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġcom . intellij . psi . util . Psi Tree Util Ċ import Ġcom . intellij . psi . util . parent OfType Ċ import Ġcom . squareup . sql de light . core . lang . util . find Children OfType Ċ Ċ internal Ġclass ĠIntro duce Table Alias Int ention Ġ: ĠBase ElementAt Caret Int ention Action () Ġ{ ĊĊĠ Ġprivate Ġval Ġregex Ġ= Ġ"( ?= \\ p { Upper }) | (_) ". to Regex () ĊĊĠ Ġoverride Ġfun Ġget Family Name (): ĠString Ġ{ ĊĠĠĠ Ġreturn ĠINTENT IONS _ FAMILY _ NAME _ RE FACTOR INGS ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠgetText (): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġ" Intro duce Ġtable Ġalias " ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġis Available ( project : ĠProject , Ġeditor : ĠEditor , Ġelement : ĠPsi Element ): ĠBoolean Ġ{ ĊĠĠĠ Ġval ĠtableName Ġ= Ġelement . parent OfType < Sql TableName >( true ) Ġ?: Ġreturn Ġfalse ĊĠĠĠ Ġif Ġ( tableName . parent Ġis ĠSql Expr ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġcolumn Alias Ġ= ĠPsi Tree Util . getNext Sibling OfType ( tableName , ĠSql Table Alias :: class . java ) ĊĠĠĠ Ġif Ġ( column Alias Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġsql Select Stmt Ġ= ĠtableName . parent OfType < Sql Select Stmt >() Ġ?: Ġreturn Ġfalse ĊĠĠĠ Ġreturn Ġsql Select Stmt . result Column List . none Ġ{ Ġit . text Matches ("* ") Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġinvoke ( project : ĠProject , Ġeditor : ĠEditor , Ġelement : ĠPsi Element ) Ġ{ ĊĠĠĠ Ġval Ġsql TableName Ġ= Ġelement . parent OfType < Sql TableName >( true ) Ġ?: Ġreturn ĊĠĠĠ Ġval Ġsql Select Stmt Ġ= Ġsql TableName . parent OfType < Sql Select Stmt >() Ġ?: Ġreturn ĊĊĠĠĠ Ġval ĠtableName Ġ= Ġsql TableName . name ĊĠĠĠ Ġval Ġalias Variants Ġ= ĠlistOf ( ĊĠĠĠĠĠ ĠtableName . first (). toString (), ĊĠĠĠĠĠ ĠtableName . split ( regex ) ĊĠĠĠĠĠĠĠ Ġ. filter ( String :: isNotBlank ) ĊĠĠĠĠĠĠĠ Ġ. join ToString ("") Ġ{ Ġit . first (). toLowerCase (). toString () Ġ} ĊĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ. distinct () ĊĊĠĠĠ Ġval Ġdocument Ġ= Ġeditor . document ĊĠĠĠ Ġval ĠtableName Text Range Ġ= Ġsql TableName . text Range ĊĠĠĠ Ġval ĠtableName Range Marker Ġ= Ġdocument . create Range Marker ( tableName Text Range ) ĊĠĠĠ Ġval Ġtable Reference Markers Ġ= Ġsql Select Stmt . find Children OfType < Sql TableName >() ĊĠĠĠĠĠ Ġ. filter Ġ{ ĊĠĠĠĠĠĠĠ Ġit . text Matches ( tableName ) Ġ&& Ġ! it . text Range . equals ( tableName Text Range ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ. map Ġ{ Ġdocument . create Range Marker ( it . text Range ) Ġ} ĊĊĠĠĠ Ġval Ġcallback Ġ= Ġ{ Ġalias : ĠString Ġ-> ĊĠĠĠĠĠ ĠWrite Command Action . run Write Command Action ( project ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdocument . replace String ( ĊĠĠĠĠĠĠĠĠĠ ĠtableName Range Marker . start Offset , ĠtableName Range Marker . end Offset , Ġ"$ tableName Ġ$ alias " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġtable Reference Markers . forEach Ġ{ Ġrange Marker Ġ-> ĊĠĠĠĠĠĠĠĠĠ Ġdocument . replace String ( range Marker . start Offset , Ġrange Marker . end Offset , Ġalias ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( alias Variants . size Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠ Ġcallback ( alias Variants . first ()) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ ĠJ B Popup Factory . getInstance () ĊĠĠĠĠĠĠĠ Ġ. create Popup Chooser Builder ( alias Variants ) ĊĠĠĠĠĠĠĠ Ġ. set Mov able ( true ) ĊĠĠĠĠĠĠĠ Ġ. setResizable ( true ) ĊĠĠĠĠĠĠĠ Ġ. setItem Ch osen Callback ( callback ) ĊĠĠĠĠĠĠĠ Ġ. create Popup () ĊĠĠĠĠĠĠĠ Ġ. show In Best Position For ( editor ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ