001package gudusoft.gsqlparser.catalog.input.model;
002
003import java.util.Objects;
004
005/**
006 * Default catalog/schema/server values used to fill missing segments during qualified-name
007 * resolution.
008 *
009 * <p>Plan §7.1 / §9.3.</p>
010 */
011public final class DefaultsConfig {
012
013    private static final DefaultsConfig EMPTY = new DefaultsConfig(new Builder());
014
015    private final String defaultCatalog;
016    private final String defaultSchema;
017    private final String defaultServer;
018
019    private DefaultsConfig(Builder b) {
020        this.defaultCatalog = b.defaultCatalog;
021        this.defaultSchema = b.defaultSchema;
022        this.defaultServer = b.defaultServer;
023    }
024
025    public static Builder builder() {
026        return new Builder();
027    }
028
029    public static DefaultsConfig empty() {
030        return EMPTY;
031    }
032
033    public String defaultCatalog() {
034        return defaultCatalog;
035    }
036
037    public String defaultSchema() {
038        return defaultSchema;
039    }
040
041    public String defaultServer() {
042        return defaultServer;
043    }
044
045    @Override
046    public boolean equals(Object o) {
047        if (this == o) return true;
048        if (!(o instanceof DefaultsConfig)) return false;
049        DefaultsConfig that = (DefaultsConfig) o;
050        return Objects.equals(defaultCatalog, that.defaultCatalog)
051            && Objects.equals(defaultSchema, that.defaultSchema)
052            && Objects.equals(defaultServer, that.defaultServer);
053    }
054
055    @Override
056    public int hashCode() {
057        return Objects.hash(defaultCatalog, defaultSchema, defaultServer);
058    }
059
060    @Override
061    public String toString() {
062        return "DefaultsConfig{catalog=" + defaultCatalog
063            + ", schema=" + defaultSchema + ", server=" + defaultServer + '}';
064    }
065
066    public static final class Builder {
067
068        private String defaultCatalog;
069        private String defaultSchema;
070        private String defaultServer;
071
072        private Builder() {
073        }
074
075        public Builder defaultCatalog(String v) {
076            this.defaultCatalog = v;
077            return this;
078        }
079
080        public Builder defaultSchema(String v) {
081            this.defaultSchema = v;
082            return this;
083        }
084
085        public Builder defaultServer(String v) {
086            this.defaultServer = v;
087            return this;
088        }
089
090        public DefaultsConfig build() {
091            return new DefaultsConfig(this);
092        }
093    }
094}