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}