001package gudusoft.gsqlparser.resolver2.result;
002
003/**
004 * Table query filter options for IResolutionResult.getTables()
005 */
006public class TableFilterOptions {
007
008    /** Whether to include subqueries */
009    private boolean includeSubqueries = false;
010
011    /** Whether to include CTE references */
012    private boolean includeCTEs = false;
013
014    /** Whether to return only physical tables */
015    private boolean physicalTablesOnly = false;
016
017    /** Whether to include function tables */
018    private boolean includeFunctionTables = false;
019
020    // Predefined options
021    public static final TableFilterOptions DEFAULT = new TableFilterOptions();
022
023    public static final TableFilterOptions ALL = new TableFilterOptions()
024            .setIncludeSubqueries(true)
025            .setIncludeCTEs(true)
026            .setIncludeFunctionTables(true);
027
028    public static final TableFilterOptions PHYSICAL_ONLY = new TableFilterOptions()
029            .setPhysicalTablesOnly(true);
030
031    // Builder-style setters
032    public TableFilterOptions setIncludeSubqueries(boolean include) {
033        this.includeSubqueries = include;
034        return this;
035    }
036
037    public TableFilterOptions setIncludeCTEs(boolean include) {
038        this.includeCTEs = include;
039        return this;
040    }
041
042    public TableFilterOptions setPhysicalTablesOnly(boolean physicalOnly) {
043        this.physicalTablesOnly = physicalOnly;
044        return this;
045    }
046
047    public TableFilterOptions setIncludeFunctionTables(boolean include) {
048        this.includeFunctionTables = include;
049        return this;
050    }
051
052    // Getters
053    public boolean isIncludeSubqueries() { return includeSubqueries; }
054    public boolean isIncludeCTEs() { return includeCTEs; }
055    public boolean isPhysicalTablesOnly() { return physicalTablesOnly; }
056    public boolean isIncludeFunctionTables() { return includeFunctionTables; }
057}