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