package Ġit . int re . code . database . reader . sql Ċ Ċ import Ġit . int re . code . database . reader . config . Query Profile Ċ import Ġit . int re . code . database . reader . filter . generic . Comparison Filter Ċ import Ġit . int re . code . database . reader . filter . generic . Generic Filter Ċ import Ġit . int re . code . database . reader . filter . generic . Text Filter Ċ import Ġorg . apache . commons . lang 3 . StringUtils Ċ import Ġjava . lang . String . format Ċ import Ġjava . util . Collections . emptyList Ċ Ċ /** Ċ Ġ* ĠAbstract ĠSQL Ġbuilder Ġfor Ġfilters . Ċ Ġ* ĠTo Ġmanage Ġa Ġnew Ġfilter Ġtype : Ġextend Ġthis Ġclass , Ċ Ġ* Ġimplement Ġabstract Ġmethods Ġand Ġadd Ġnew Ġimplementation Ġto Ġfactory Ġmethod . Ċ Ġ*/ Ċ // FIX ME Ġimplement Ġequals Ġand ĠhashCode Ġusing Ġfields : Ġname Ċ abstract Ġclass ĠSql Filter Builder ( val Ġname : ĠString ) Ġ{ ĊĊĠĠĠ Ġinternal Ġabstract Ġval Ġfilter : ĠGeneric Filter ĊĊĠĠĠ Ġinternal Ġabstract Ġval Ġor Conditions : ĠList < String > ĊĊĠĠĠ Ġopen Ġfun Ġto Sql (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġformat ("% s (% s )", Ġif Ġ( filter . neg ate ) ĠNOT Ġelse Ġ"", Ġconditions ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconditions (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconditions Ġ= Ġif Ġ( filter . all ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġempty List < Any >() ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġor Conditions ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( conditions . isEmpty ()) ĠSql Helper . TRUE Ġelse ĠStringUtils . join ( conditions , ĠOR ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠNOT Ġ= Ġ" ĠNOT " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠOR Ġ= Ġ" ĠOR Ġ" ĊĊĠĠĠĠĠĠĠ Ġfun Ġfrom ( filter : ĠGeneric Filter , Ġquery Profile : ĠQuery Profile ?): ĠSql Filter Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġget FieldName Or Expression ( filter , Ġquery Profile ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( filter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠText Filter Ġ-> ĠText Filter Builder ( filter , Ġname ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠComparison Filter Ġ-> ĠComparison Filter Builder ( filter , Ġname ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget FieldName Or Expression ( filter : ĠGeneric Filter , Ġquery Profile : ĠQuery Profile ?): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġto FieldName Or Expression ( filter . name , Ġquery Profile ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġto FieldName Or Expression ( column Alias : ĠString , Ġquery Profile : ĠQuery Profile ?): ĠString Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolumns Ġ= Ġquery Profile ?. columns ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( columns Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( column Ġin Ġcolumns ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( column . is Derived Ġ&& Ġcolumn Alias . equals ( column . alias , Ġignore Case Ġ= Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcolumn . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcolumn Alias ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ