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
021        public String getName() {
022                return name;
023        }
024
025        public void setName(String name) {
026                this.name = name;
027        }
028
029        public List<Column> getColumns() {
030                return columns;
031        }
032
033        public void setColumns(List<Column> columns) {
034                this.columns = columns;
035        }
036
037        public String getType() {
038                return type;
039        }
040
041        public void setType(String type) {
042                this.type = type;
043        }
044        
045        public String getDbLink() {
046                return dbLink;
047        }
048
049        public void setDbLink(String dbLink) {
050                this.dbLink = dbLink;
051        }
052
053        public String getDisplayName() {
054                return displayName;
055        }
056
057        public void setDisplayName(String displayName) {
058                this.displayName = displayName;
059        }
060
061        public String getSubType() {
062                return subType;
063        }
064
065        public void setSubType(String subType) {
066                this.subType = subType;
067        }
068
069        public String getAlias() {
070                return alias;
071        }
072
073        public void setAlias(String alias) {
074                this.alias = alias;
075        }
076
077        @JSONField(serialize = false)
078        public Database getDatabase() {
079                TreeNode parent = getParent();
080                Server server = getServer();
081                if (parent == null || server == null) {
082                        return null;
083                }
084                if (server.isSupportsCatalogs() && server.isSupportsSchemas()) {
085                        return (Database) parent.getParent();
086                } else if (server.isSupportsCatalogs()) {
087                        return (Database) parent;
088                }
089                return null;
090        }
091
092        @JSONField(serialize = false)
093        public Schema getSchema() {
094                TreeNode parent = getParent();
095                Server server = getServer();
096                if (parent == null || server == null) {
097                        return null;
098                }
099                if (server.isSupportsSchemas()) {
100                        return (Schema) parent;
101                }
102                return null;
103        }
104
105        @JSONField(serialize = false)
106        public String fullName() {
107                TreeNode parent = getParent();
108                Server server = getServer();
109                if (parent == null || server == null) {
110                        return name;
111                } else {
112                        StringBuilder builder = new StringBuilder();
113                        if (server.isSupportsCatalogs() && server.isSupportsSchemas()) {
114                                if (!TSQLEnv.DEFAULT_DB_NAME.equalsIgnoreCase(getDatabase().getName())) {
115                                        builder.append(getDatabase().getName()).append(".");
116                                }
117                                if (builder.length() > 0 || !TSQLEnv.DEFAULT_SCHEMA_NAME.equalsIgnoreCase(getSchema().getName())) {
118                                        builder.append(getSchema().getName()).append(".");
119                                }
120                                builder.append(getName());
121                        } else if (server.isSupportsSchemas()) {
122                                if (!TSQLEnv.DEFAULT_SCHEMA_NAME.equalsIgnoreCase(getSchema().getName())) {
123                                        builder.append(getSchema().getName()).append(".");
124                                }
125                                builder.append(getName());
126                        } else if (server.isSupportsCatalogs()) {
127                                if (!TSQLEnv.DEFAULT_DB_NAME.equalsIgnoreCase(getDatabase().getName())) {
128                                        builder.append(getDatabase().getName()).append(".");
129                                }
130                                builder.append(getName());
131                        } else {
132                                builder.append(getName());
133                        }
134                        return builder.toString();
135                }
136        }
137
138        public Coordinate[] getCoordinates() {
139                if (ModelBindingManager.getGlobalOption() != null
140                                && ModelBindingManager.getGlobalOption().isIgnoreCoordinate()) {
141                        return null;
142                }
143                return coordinates;
144        }
145
146        public void setCoordinates(Coordinate[] coordinates) {
147                if (ModelBindingManager.getGlobalOption() != null
148                                && ModelBindingManager.getGlobalOption().isIgnoreCoordinate()) {
149                        return;
150                }
151                this.coordinates = coordinates;
152        }
153
154        public String getFromDDL() {
155                return fromDDL;
156        }
157
158        public void setFromDDL(String fromDDL) {
159                this.fromDDL = fromDDL;
160        }
161}