package Ġorg . jetbrains . ex posed . sql Ċ Ċ import Ġorg . jetbrains . ex posed . exceptions . Unsupported By Dialect Exception Ċ import Ġorg . jetbrains . ex posed . sql . transactions . Transaction Manager Ċ import Ġorg . jetbrains . ex posed . sql . vendors . Mar iaDB Dialect Ċ import Ġorg . jetbrains . ex posed . sql . vendors . Mysql Dialect Ċ import Ġorg . jetbrains . ex posed . sql . vendors . current Dialect Ċ import Ġjava . lang . StringBuilder Ċ Ċ /** Ċ Ġ* ĠDatabase ĠSchema Ċ Ġ* Ċ Ġ* Ġ@ param Ġname Ġthe Ġschema Ġname Ċ Ġ* Ġ@ param Ġauthorization Ġowner _ name ĠSpecifies Ġthe Ġname Ġof Ġthe Ġdatabase - level Ċ Ġ* Ġprincipal Ġthat Ġwill Ġown Ġthe Ġschema . Ċ Ġ* Ċ Ġ*/ Ċ class ĠSchema ( private Ġval Ġname : ĠString , Ġval Ġauthorization : ĠString ? Ġ= Ġnull ) Ġ{ ĊĊĠĠĠ Ġval Ġidentifier Ġget () Ġ= ĠTransaction Manager . current (). db . identifier Manager . cut If Ne cessary And Quote ( name ) ĊĊĠĠĠ Ġval Ġd dl : ĠList < String > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġcreate Statement () ĊĊĠĠĠ Ġfun Ġcreate Statement (): ĠList < String > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! current Dialect . supports Create Schema Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠUnsupported By Dialect Exception (" The Ġcurrent Ġdialect Ġdoesn 't Ġsupport Ġcreate Ġschema Ġstatement ", Ġcurrent Dialect ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcreate Schema DDL Ġ= Ġbuild String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend (" CREATE ĠS CHE MA Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Dialect . supports IfNot Exists ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend (" IF ĠNOT ĠEXISTS Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( identifier ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( current Dialect Ġ! is ĠM ysql Dialect Ġ&& Ġcurrent Dialect Ġ! is ĠMar iaDB Dialect ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend If NotNull (" ĠAUTH ORIZ ATION Ġ", Ġauthorization ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( authorization Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠUnsupported By Dialect Exception ("${ current Dialect . name } Ġdo Ġnot Ġhave Ġdatabase Ġowners . Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" You Ġcan Ġuse ĠG RAN T Ġto Ġallow Ġor Ġdeny Ġrights Ġon Ġdatabase .", Ġcurrent Dialect ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( create Schema DDL ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdrop Statement (): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! current Dialect . supports Create Schema Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠUnsupported By Dialect Exception (" The Ġcurrent Ġdialect Ġdoesn 't Ġsupport Ġdrop Ġschema Ġstatement ", Ġcurrent Dialect ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdrop Schema DDL Ġ= Ġbuild String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend (" DROP ĠS CHE MA Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Dialect . supports IfNot Exists ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend (" IF ĠEXISTS Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( identifier ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( drop Schema DDL ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Schema Statement (): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! current Dialect . supports Create Schema Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠUnsupported By Dialect Exception (" The Ġcurrent Ġdialect Ġdoesn 't Ġschemas ", Ġcurrent Dialect ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( current Dialect . set Schema ( this )) ĊĠĠĠ Ġ} Ċ } Ċ /** ĠApp ends Ġboth Ġ[ str 1 ] Ġand Ġ[ str 2 ] Ġto Ġthe Ġreceiver Ġ[ StringBuilder ] Ġif Ġ[ str 2 ] Ġis Ġnot Ġ` null `. Ġ*/ Ċ fun ĠStringBuilder . append If NotNull ( str 1 : ĠString , Ġstr 2 : ĠAny ?) Ġ= Ġapply Ġ{ ĊĠĠĠ Ġif Ġ( str 2 Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . append ("$ str 1 Ġ$ str 2 ") ĊĠĠĠ Ġ} Ċ } Ċ