001package gudusoft.gsqlparser.dlineage.dataflow.sqlenv;
002
003import gudusoft.gsqlparser.dlineage.dataflow.sqlenv.model.*;
004import gudusoft.gsqlparser.dlineage.util.DlineageUtil;
005import gudusoft.gsqlparser.sqlenv.*;
006
007public class SQLEnvImporter {
008    public static void importTSQLEnv(TSQLEnv sqlenv, SQLEnv sqlEnvModel) {
009        sqlenv.setDefaultServerName(sqlEnvModel.getDefaultServer());
010        sqlenv.setDefaultCatalogName(sqlEnvModel.getDefaultDatabase());
011        sqlenv.setDefaultSchemaName(sqlEnvModel.getDefaultSchema());
012        if (sqlEnvModel.getCatalogs() != null) {
013            for (Catalog catalog : sqlEnvModel.getCatalogs()) {
014                TSQLCatalog sqlCatalog = sqlenv.createSQLCatalog(catalog.getName());
015                if (sqlCatalog != null) {
016                    importTSchema(sqlCatalog, catalog);
017                }
018            }
019        }
020    }
021
022    private static void importTSchema(TSQLCatalog sqlCatalog, Catalog catalog) {
023        if (catalog.getSchemas() != null) {
024            for (Schema schema : catalog.getSchemas()) {
025                TSQLSchema sqlSchema = sqlCatalog.createSchema(schema.getName());
026                if (sqlSchema != null) {
027                    importTSQLTable(sqlSchema, schema);
028                    importTSQLOraclePackage(sqlSchema, schema);
029                    importTSQLProcedure(sqlSchema, schema);
030                    importTSQLSynonym(sqlSchema, schema);
031                }
032            }
033        }
034    }
035
036    private static void importTSQLProcedure(TSQLSchema sqlSchema, Schema schema) {
037        if (schema.getProcedures() != null) {
038            for (Procedure procedure : schema.getProcedures()) {
039                if ("procedure".equalsIgnoreCase(procedure.getType())) {
040                    TSQLProcedure sqlProcedure = sqlSchema.createProcedure(procedure.getName());
041                    sqlProcedure.setDefinition(procedure.getDefinition());
042                } else if ("function".equalsIgnoreCase(procedure.getType())) {
043                    TSQLProcedure sqlFunction = sqlSchema.createFunction(procedure.getName());
044                    sqlFunction.setDefinition(procedure.getDefinition());
045                } else if ("trigger".equalsIgnoreCase(procedure.getType())) {
046                    TSQLProcedure sqlTrigger = sqlSchema.createTrigger(procedure.getName());
047                    sqlTrigger.setDefinition(procedure.getDefinition());
048                }
049            }
050        }
051    }
052
053    private static void importTSQLSynonym(TSQLSchema sqlSchema, Schema schema) {
054        if (schema.getSynonyms() != null) {
055            for (Synonym synonym : schema.getSynonyms()) {
056                sqlSchema.createSynonyms(synonym.getName(), synonym.getSourceDatabase(),
057                        synonym.getSourceSchema(), synonym.getSourceName());
058            }
059        }
060    }
061
062    private static void importTSQLOraclePackage(TSQLSchema sqlSchema, Schema schema) {
063        if (schema.getOraclePackages() != null) {
064            for (OraclePackage oraclePackage : schema.getOraclePackages()) {
065                TSQLOraclePackage sqlOraclePackage = sqlSchema.createOraclePackage(oraclePackage.getName());
066                sqlOraclePackage.setDefinition(oraclePackage.getDefinition());
067                if (oraclePackage.getProcedures() != null) {
068                    for (Procedure procedure : oraclePackage.getProcedures()) {
069                        if ("procedure".equalsIgnoreCase(procedure.getType())) {
070                            sqlOraclePackage.createProcedure(procedure.getName());
071                        } else if ("function".equalsIgnoreCase(procedure.getType())) {
072                            sqlOraclePackage.createFunction(procedure.getName());
073                        } else if ("trigger".equalsIgnoreCase(procedure.getType())) {
074                            sqlOraclePackage.createTrigger(procedure.getName());
075                        }
076                    }
077                }
078            }
079        }
080    }
081
082    private static void importTSQLTable(TSQLSchema sqlSchema, Schema schema) {
083        if (schema.getTables() != null) {
084            for (Table table : schema.getTables()) {
085                TSQLTable sqlTable = sqlSchema.createTable(DlineageUtil.getSimpleTableName(table.getName()));
086                if (sqlTable != null) {
087                    sqlTable.setView(Boolean.valueOf(table.getIsView()));
088                    if(table.getPriority()!=null){
089                        sqlTable.setPriority(table.getPriority());
090                    }
091                    importTSQLColumn(sqlTable, table);
092                }
093            }
094        }
095    }
096
097    private static void importTSQLColumn(TSQLTable sqlTable, Table table) {
098        if (table.getColumns() != null) {
099            for (Column column : table.getColumns()) {
100                sqlTable.addColumn(column.getName());
101            }
102        }
103    }
104}