package Ġde . fl ap do od le . sq lex tract . config Ċ Ċ import Ġde . fl ap do od le . sq lex tract . db . Name Ċ import Ġde . fl ap do od le . sq lex tract . file types . Attributes Ċ Ċ data Ġclass ĠTable Filter List ( ĊĠĠĠ Ġval Ġfilter : ĠList < Table Filter >, Ċ // ĠĠĠ Ġval Ġinclude Schemas : ĠSet < String > Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġfilter By Schema Ġ= Ġfilter . associate By Ġ{ Ġit . schema Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgrouped By Schema Ġ= Ġfilter . groupBy Ġ{ Ġit . schema Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġsame Schema Ġ= Ġgrouped By Schema . filter Ġ{ Ġit . value . size Ġ!= Ġ 1 Ġ} ĊĠĠĠĠĠĠĠ Ġrequire ( same Schema . isEmpty ()) Ġ{ Ġ" same Ġschema Ġused Ġmore Ġthan Ġonce : Ġ$ same Schema " Ġ} Ċ // ĠĠĠĠĠĠĠ Ġval Ġschema Has Filter Ġ= Ġexcluded Schemas . filter Ġ{ Ġfilter By Schema . containsKey ( it ) Ġ} Ċ // ĠĠĠĠĠĠĠ Ġrequire ( schema Has Filter . isEmpty ()) Ġ{ Ġ" excluded Ġschema Ġhas Ġfilter Ġdefinitions : Ġ$ schema Has Filter " Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmatching TableName ( name : ĠName ): ĠBoolean Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( excluded Schemas . contains ( name . schema )) Ġfalse Ċ // ĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠ Ġreturn Ġfilter By Schema [ name . schema ]?. matching TableName ( name ) Ġ?: Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġparse ( source : ĠAttributes . Node ?): ĠTable Filter List Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexclude Schemas Ġ= Ġsource ?. find Values (" exclude Schema ", ĠString :: class )?. toSet () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtable Filter Ġ= Ġsource ?. node Keys ()?. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTable Filter . parse ( it , Ġsource . get ( it , ĠAttributes . Node :: class )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTable Filter List ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter Ġ= Ġtable Filter Ġ?: Ġempty List (), Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexcluded Schemas Ġ= Ġexclude Schemas Ġ?: Ġempty Set () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ