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
016        public String getName() {
017                return name;
018        }
019
020        public void setName(String name) {
021                this.name = name;
022        }
023
024        public List<Argument> getArguments() {
025                return arguments;
026        }
027
028        public void setArguments(List<Argument> arguments) {
029                this.arguments = arguments;
030        }
031
032        public String getType() {
033                return type;
034        }
035
036        public void setType(String type) {
037                this.type = type;
038        }
039
040        public void appendArgument(Argument argument) {
041                if (argument == null) {
042                        return;
043                }
044                if (arguments == null) {
045                        arguments = new ArrayList<Argument>();
046                }
047                arguments.add(argument);
048        }
049
050        public Coordinate[] getCoordinates() {
051                if (ModelBindingManager.getGlobalOption()!=null && ModelBindingManager.getGlobalOption().isIgnoreCoordinate()) {
052                        return null;
053                }
054                return coordinates;
055        }
056
057        public void setCoordinates(Coordinate[] coordinates) {
058                if (ModelBindingManager.getGlobalOption()!=null && ModelBindingManager.getGlobalOption().isIgnoreCoordinate()) {
059                        return;
060                }
061                this.coordinates = coordinates;
062        }
063        
064        @JSONField(serialize = false)
065        public Database getDatabase() {
066                TreeNode parent = getParent();
067                Server server = getServer();
068                if (parent == null || server == null) {
069                        return null;
070                }
071                if (server.isSupportsCatalogs() && server.isSupportsSchemas()) {
072                        return (Database) parent.getParent();
073                } else if (server.isSupportsCatalogs()) {
074                        return (Database) parent;
075                }
076                return null;
077        }
078
079        @JSONField(serialize = false)
080        public Schema getSchema() {
081                TreeNode parent = getParent();
082                Server server = getServer();
083                if (parent == null || server == null) {
084                        return null;
085                }
086                if (server.isSupportsSchemas()) {
087                        return (Schema) parent;
088                }
089                return null;
090        }
091}