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}