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                }
031            }
032        }
033    }
034
035    private static void importTSQLProcedure(TSQLSchema sqlSchema, Schema schema) {
036        if (schema.getProcedures() != null) {
037            for (Procedure procedure : schema.getProcedures()) {
038                if ("procedure".equalsIgnoreCase(procedure.getType())) {
039                    TSQLProcedure sqlProcedure = sqlSchema.createProcedure(procedure.getName());
040                    sqlProcedure.setDefinition(procedure.getDefinition());
041                } else if ("function".equalsIgnoreCase(procedure.getType())) {
042                    TSQLProcedure sqlFunction = sqlSchema.createFunction(procedure.getName());
043                    sqlFunction.setDefinition(procedure.getDefinition());
044                } else if ("trigger".equalsIgnoreCase(procedure.getType())) {
045                    TSQLProcedure sqlTrigger = sqlSchema.createTrigger(procedure.getName());
046                    sqlTrigger.setDefinition(procedure.getDefinition());
047                }
048            }
049        }
050    }
051
052    private static void importTSQLOraclePackage(TSQLSchema sqlSchema, Schema schema) {
053        if (schema.getOraclePackages() != null) {
054            for (OraclePackage oraclePackage : schema.getOraclePackages()) {
055                TSQLOraclePackage sqlOraclePackage = sqlSchema.createOraclePackage(oraclePackage.getName());
056                sqlOraclePackage.setDefinition(oraclePackage.getDefinition());
057                if (oraclePackage.getProcedures() != null) {
058                    for (Procedure procedure : oraclePackage.getProcedures()) {
059                        if ("procedure".equalsIgnoreCase(procedure.getType())) {
060                            sqlOraclePackage.createProcedure(procedure.getName());
061                        } else if ("function".equalsIgnoreCase(procedure.getType())) {
062                            sqlOraclePackage.createFunction(procedure.getName());
063                        } else if ("trigger".equalsIgnoreCase(procedure.getType())) {
064                            sqlOraclePackage.createTrigger(procedure.getName());
065                        }
066                    }
067                }
068            }
069        }
070    }
071
072    private static void importTSQLTable(TSQLSchema sqlSchema, Schema schema) {
073        if (schema.getTables() != null) {
074            for (Table table : schema.getTables()) {
075                TSQLTable sqlTable = sqlSchema.createTable(DlineageUtil.getSimpleTableName(table.getName()));
076                if (sqlTable != null) {
077                    sqlTable.setView(Boolean.valueOf(table.getIsView()));
078                    if(table.getPriority()!=null){
079                        sqlTable.setPriority(table.getPriority());
080                    }
081                    importTSQLColumn(sqlTable, table);
082                }
083            }
084        }
085    }
086
087    private static void importTSQLColumn(TSQLTable sqlTable, Table table) {
088        if (table.getColumns() != null) {
089            for (Column column : table.getColumns()) {
090                sqlTable.addColumn(column.getName());
091            }
092        }
093    }
094}