001package gudusoft.gsqlparser.dlineage.metadata;
002
003import java.util.List;
004
005import gudusoft.gsqlparser.dlineage.dataflow.model.ModelBindingManager;
006import gudusoft.gsqlparser.sqlenv.TSQLEnv;
007import gudusoft.gsqlparser.util.json.JSONField;
008
009public class Table extends TreeNode {
010
011        private String dbLink;
012        private String name;
013        private String displayName;
014        private String type;
015        private String alias;
016        private String subType;
017        private List<Column> columns;
018        private Coordinate[] coordinates;
019        private String fromDDL;
020        private String databaseName;
021        private String schemaName;
022
023        public String getName() {
024                return name;
025        }
026
027        public void setName(String name) {
028                this.name = name;
029        }
030
031        public List<Column> getColumns() {
032                return columns;
033        }
034
035        public void setColumns(List<Column> columns) {
036                this.columns = columns;
037        }
038
039        public String getType() {
040                return type;
041        }
042
043        public void setType(String type) {
044                this.type = type;
045        }
046        
047        public String getDbLink() {
048                return dbLink;
049        }
050
051        public void setDbLink(String dbLink) {
052                this.dbLink = dbLink;
053        }
054
055        public String getDisplayName() {
056                return displayName;
057        }
058
059        public void setDisplayName(String displayName) {
060                this.displayName = displayName;
061        }
062
063        public String getSubType() {
064                return subType;
065        }
066
067        public void setSubType(String subType) {
068                this.subType = subType;
069        }
070
071        public String getAlias() {
072                return alias;
073        }
074
075        public void setAlias(String alias) {
076                this.alias = alias;
077        }
078
079        @JSONField(serialize = false)
080        public Database getDatabase() {
081                TreeNode parent = getParent();
082                Server server = getServer();
083                if (parent == null || server == null) {
084                        return null;
085                }
086                if (server.isSupportsCatalogs() && server.isSupportsSchemas()) {
087                        return (Database) parent.getParent();
088                } else if (server.isSupportsCatalogs()) {
089                        return (Database) parent;
090                }
091                return null;
092        }
093
094        @JSONField(serialize = false)
095        public Schema getSchema() {
096                TreeNode parent = getParent();
097                Server server = getServer();
098                if (parent == null || server == null) {
099                        return null;
100                }
101                if (server.isSupportsSchemas()) {
102                        return (Schema) parent;
103                }
104                return null;
105        }
106
107        @JSONField(serialize = false)
108        public String fullName() {
109                TreeNode parent = getParent();
110                Server server = getServer();
111                if (parent == null || server == null) {
112                        return name;
113                } else {
114                        StringBuilder builder = new StringBuilder();
115                        if (server.isSupportsCatalogs() && server.isSupportsSchemas()) {
116                                if (!TSQLEnv.DEFAULT_DB_NAME.equalsIgnoreCase(getDatabase().getName())) {
117                                        builder.append(getDatabase().getName()).append(".");
118                                }
119                                if (builder.length() > 0 || !TSQLEnv.DEFAULT_SCHEMA_NAME.equalsIgnoreCase(getSchema().getName())) {
120                                        builder.append(getSchema().getName()).append(".");
121                                }
122                                builder.append(getName());
123                        } else if (server.isSupportsSchemas()) {
124                                if (!TSQLEnv.DEFAULT_SCHEMA_NAME.equalsIgnoreCase(getSchema().getName())) {
125                                        builder.append(getSchema().getName()).append(".");
126                                }
127                                builder.append(getName());
128                        } else if (server.isSupportsCatalogs()) {
129                                if (!TSQLEnv.DEFAULT_DB_NAME.equalsIgnoreCase(getDatabase().getName())) {
130                                        builder.append(getDatabase().getName()).append(".");
131                                }
132                                builder.append(getName());
133                        } else {
134                                builder.append(getName());
135                        }
136                        return builder.toString();
137                }
138        }
139
140        public Coordinate[] getCoordinates() {
141                if (ModelBindingManager.getGlobalOption() != null
142                                && ModelBindingManager.getGlobalOption().isIgnoreCoordinate()) {
143                        return null;
144                }
145                return coordinates;
146        }
147
148        public void setCoordinates(Coordinate[] coordinates) {
149                if (ModelBindingManager.getGlobalOption() != null
150                                && ModelBindingManager.getGlobalOption().isIgnoreCoordinate()) {
151                        return;
152                }
153                this.coordinates = coordinates;
154        }
155
156        public String getFromDDL() {
157                return fromDDL;
158        }
159
160        public void setFromDDL(String fromDDL) {
161                this.fromDDL = fromDDL;
162        }
163
164        public String getDatabaseName() {
165                return databaseName;
166        }
167
168        public void setDatabaseName(String databaseName) {
169                this.databaseName = databaseName;
170        }
171
172        public String getSchemaName() {
173                return schemaName;
174        }
175
176        public void setSchemaName(String schemaName) {
177                this.schemaName = schemaName;
178        }
179}