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 Package extends TreeNode {
010
011        private String name;
012        private List<Procedure> procedures;
013        private List<Procedure> functions;
014        private List<Procedure> triggers;
015    private Coordinate[] coordinates;
016
017        public String getName() {
018                return name;
019        }
020
021        public void setName(String name) {
022                this.name = name;
023        }
024
025        public List<Procedure> getProcedures() {
026                return procedures;
027        }
028
029        public void setProcedures(List<Procedure> procedures) {
030                this.procedures = procedures;
031        }
032
033        public List<Procedure> getFunctions() {
034                return functions;
035        }
036
037        public void setFunctions(List<Procedure> functions) {
038                this.functions = functions;
039        }
040
041        public List<Procedure> getTriggers() {
042                return triggers;
043        }
044
045        public void setTriggers(List<Procedure> triggers) {
046                this.triggers = triggers;
047        }
048
049        public void appendProcedure(Procedure procedure) {
050                if (procedure == null || procedure.getType() == null) {
051                        return;
052                }
053                if (procedure.getType().toLowerCase().indexOf("function") != -1) {
054                        if (functions == null) {
055                                functions = new ArrayList<Procedure>();
056                        }
057                        procedure.setType("function");
058                        functions.add(procedure);
059                } else if (procedure.getType().toLowerCase().indexOf("trigger") != -1) {
060                        if (triggers == null) {
061                                triggers = new ArrayList<Procedure>();
062                        }
063                        procedure.setType("trigger");
064                        triggers.add(procedure);
065                } else {
066                        if (procedures == null) {
067                                procedures = new ArrayList<Procedure>();
068                        }
069                        procedure.setType("procedure");
070                        procedures.add(procedure);
071                }
072        }
073        
074        public Coordinate[] getCoordinates() {
075                if (ModelBindingManager.getGlobalOption()!=null && ModelBindingManager.getGlobalOption().isIgnoreCoordinate()) {
076                        return null;
077                }
078                return coordinates;
079        }
080
081        public void setCoordinates(Coordinate[] coordinates) {
082                if (ModelBindingManager.getGlobalOption()!=null && ModelBindingManager.getGlobalOption().isIgnoreCoordinate()) {
083                        return;
084                }
085                this.coordinates = coordinates;
086        }
087        
088        @JSONField(serialize = false)
089        public Database getDatabase() {
090                TreeNode parent = getParent();
091                Server server = getServer();
092                if (parent == null || server == null) {
093                        return null;
094                }
095                if (server.isSupportsCatalogs() && server.isSupportsSchemas()) {
096                        return (Database) parent.getParent();
097                } else if (server.isSupportsCatalogs()) {
098                        return (Database) parent;
099                }
100                return null;
101        }
102
103        @JSONField(serialize = false)
104        public Schema getSchema() {
105                TreeNode parent = getParent();
106                Server server = getServer();
107                if (parent == null || server == null) {
108                        return null;
109                }
110                if (server.isSupportsSchemas()) {
111                        return (Schema) parent;
112                }
113                return null;
114        }
115}