001package gudusoft.gsqlparser.dlineage.metadata;
002
003import java.util.ArrayList;
004import java.util.List;
005
006import gudusoft.gsqlparser.dlineage.dataflow.model.ModelBindingManager;
007import gudusoft.gsqlparser.util.json.JSONField;
008
009public class Procedure extends TreeNode {
010
011        private String name;
012        private String type;
013        private List<Argument> arguments;
014    private Coordinate[] coordinates;
015        private String databaseName;
016        private String schemaName;
017
018        public String getName() {
019                return name;
020        }
021
022        public void setName(String name) {
023                this.name = name;
024        }
025
026        public List<Argument> getArguments() {
027                return arguments;
028        }
029
030        public void setArguments(List<Argument> arguments) {
031                this.arguments = arguments;
032        }
033
034        public String getType() {
035                return type;
036        }
037
038        public void setType(String type) {
039                this.type = type;
040        }
041
042        public void appendArgument(Argument argument) {
043                if (argument == null) {
044                        return;
045                }
046                if (arguments == null) {
047                        arguments = new ArrayList<Argument>();
048                }
049                arguments.add(argument);
050        }
051
052        public Coordinate[] getCoordinates() {
053                if (ModelBindingManager.getGlobalOption()!=null && ModelBindingManager.getGlobalOption().isIgnoreCoordinate()) {
054                        return null;
055                }
056                return coordinates;
057        }
058
059        public void setCoordinates(Coordinate[] coordinates) {
060                if (ModelBindingManager.getGlobalOption()!=null && ModelBindingManager.getGlobalOption().isIgnoreCoordinate()) {
061                        return;
062                }
063                this.coordinates = coordinates;
064        }
065        
066        @JSONField(serialize = false)
067        public Database getDatabase() {
068                TreeNode parent = getParent();
069                Server server = getServer();
070                if (parent == null || server == null) {
071                        return null;
072                }
073                if (server.isSupportsCatalogs() && server.isSupportsSchemas()) {
074                        return (Database) parent.getParent();
075                } else if (server.isSupportsCatalogs()) {
076                        return (Database) parent;
077                }
078                return null;
079        }
080
081        @JSONField(serialize = false)
082        public Schema getSchema() {
083                TreeNode parent = getParent();
084                Server server = getServer();
085                if (parent == null || server == null) {
086                        return null;
087                }
088                if (server.isSupportsSchemas()) {
089                        return (Schema) parent;
090                }
091                return null;
092        }
093
094        public String getDatabaseName() {
095                return databaseName;
096        }
097
098        public void setDatabaseName(String databaseName) {
099                this.databaseName = databaseName;
100        }
101
102        public String getSchemaName() {
103                return schemaName;
104        }
105
106        public void setSchemaName(String schemaName) {
107                this.schemaName = schemaName;
108        }
109}