001package gudusoft.gsqlparser.dlineage.metadata;
002
003import java.util.ArrayList;
004import java.util.List;
005
006import gudusoft.gsqlparser.EDbVendor;
007import gudusoft.gsqlparser.sqlenv.ESQLDataObjectType;
008import gudusoft.gsqlparser.sqlenv.TSQLEnv;
009import gudusoft.gsqlparser.util.SQLUtil;
010
011public class Server {
012
013        private String name;
014        private String dbVendor;
015        private boolean supportsCatalogs;
016        private boolean supportsSchemas;
017        private List<Database> databases;
018        private List<Schema> schemas;
019        private List<DBLink> dbLinks;
020        private List<Query> queries;
021
022        public String getDbVendor() {
023                return dbVendor;
024        }
025
026        public void setDbVendor(String dbVendor) {
027                this.dbVendor = dbVendor;
028                EDbVendor vendor = EDbVendor.valueOf(dbVendor);
029                this.supportsCatalogs = TSQLEnv.supportCatalog(vendor);
030                this.supportsSchemas = TSQLEnv.supportSchema(vendor);
031        }
032
033        public String getName() {
034                return name;
035        }
036
037        public void setName(String name) {
038                this.name = name;
039        }
040
041        public boolean isSupportsCatalogs() {
042                return supportsCatalogs;
043        }
044
045        public void setSupportsCatalogs(boolean supportsCatalogs) {
046                this.supportsCatalogs = supportsCatalogs;
047        }
048
049        public boolean isSupportsSchemas() {
050                return supportsSchemas;
051        }
052
053        public void setSupportsSchemas(boolean supportsSchemas) {
054                this.supportsSchemas = supportsSchemas;
055        }
056
057        public List<Database> getDatabases() {
058                return databases;
059        }
060
061        public void setDatabases(List<Database> databases) {
062                this.databases = databases;
063        }
064
065        public List<Schema> getSchemas() {
066                return schemas;
067        }
068
069        public void setSchemas(List<Schema> schemas) {
070                this.schemas = schemas;
071        }
072
073        public List<Query> getQueries() {
074                return queries;
075        }
076
077        public void setQueries(List<Query> queries) {
078                this.queries = queries;
079        }
080
081        public List<DBLink> getDbLinks() {
082                return dbLinks;
083        }
084
085        public void setDbLinks(List<DBLink> dbLinks) {
086                this.dbLinks = dbLinks;
087        }
088
089        public Database appendDatabase(Database database) {
090                if (database == null)
091                        return null;
092
093                if (this.databases == null) {
094                        this.databases = new ArrayList<Database>();
095                }
096
097                for (Database databaseItem : databases) {
098                        if (SQLUtil.compareIdentifier(EDbVendor.valueOf(getDbVendor()), ESQLDataObjectType.dotCatalog,
099                                        databaseItem.getName(), database.getName())) {
100                                return databaseItem;
101                        }
102                }
103
104                this.databases.add(database);
105                return database;
106        }
107
108        public Schema appendSchema(Schema schema) {
109                if (schema == null)
110                        return null;
111
112                if (this.schemas == null) {
113                        this.schemas = new ArrayList<Schema>();
114                }
115
116                for (Schema schemaItem : schemas) {
117                        if (SQLUtil.compareIdentifier(EDbVendor.valueOf(getDbVendor()), ESQLDataObjectType.dotSchema,
118                                        schemaItem.getName(), schema.getName())) {
119                                return schemaItem;
120                        }
121                }
122
123                this.schemas.add(schema);
124                return schema;
125        }
126
127}