001package gudusoft.gsqlparser.dlineage.dataflow.sqlenv; 002 003import gudusoft.gsqlparser.dlineage.dataflow.sqlenv.model.*; 004import gudusoft.gsqlparser.sqlenv.*; 005 006import java.util.List; 007 008public class SQLEnvExporter { 009 public static SQLEnv exportSQLEnv(TSQLEnv sqlenv) { 010 SQLEnv sqlEnv = new SQLEnv(); 011 sqlEnv.setDefaultServer(sqlenv.getDefaultServerName()); 012 sqlEnv.setDefaultDatabase(sqlenv.getDefaultCatalogName()); 013 sqlEnv.setDefaultSchema(sqlenv.getDefaultSchemaName()); 014 if (sqlenv.getCatalogList() != null) { 015 for (TSQLCatalog sqlCatalog : sqlenv.getCatalogList()) { 016 exportCatalog(sqlEnv, sqlCatalog); 017 } 018 } 019 return sqlEnv; 020 } 021 022 private static void exportCatalog(SQLEnv sqlEnv, TSQLCatalog sqlCatalog) { 023 Catalog catalog = new Catalog(); 024 sqlEnv.appendCatalog(catalog); 025 catalog.setName(sqlCatalog.getName()); 026 List<TSQLSchema> schemaList = sqlCatalog.getSchemaList(); 027 if (schemaList != null) { 028 for (TSQLSchema sqlSchema : schemaList) { 029 exportSchema(catalog, sqlSchema); 030 } 031 } 032 } 033 034 private static void exportSchema(Catalog catalog, TSQLSchema sqlSchema) { 035 Schema schema = new Schema(); 036 schema.setName(sqlSchema.getName()); 037 catalog.appendSchema(schema); 038 List<TSQLSchemaObject> schemaObjectList = sqlSchema.getSchemaObjectList(); 039 if (schemaObjectList != null) { 040 for (TSQLSchemaObject sqlSchemaObject : schemaObjectList) { 041 if (sqlSchemaObject instanceof TSQLTable) { 042 exportTable(schema, (TSQLTable) sqlSchemaObject); 043 } 044 if (sqlSchemaObject instanceof TSQLOraclePackage) { 045 exportOraclePackage(schema, (TSQLOraclePackage) sqlSchemaObject); 046 } 047 if (sqlSchemaObject instanceof TSQLProcedure) { 048 exportProcedure(schema, (TSQLProcedure) sqlSchemaObject); 049 } 050 } 051 } 052 } 053 054 private static void exportProcedure(Schema schema, TSQLProcedure sqlProcedure) { 055 Procedure procedure = new Procedure(); 056 schema.appendProcedure(procedure); 057 procedure.setName(sqlProcedure.getName()); 058 procedure.setDefinition(sqlProcedure.getDefinition()); 059 procedure.setType(sqlProcedure.getDataObjectType().name().replace("dot", "").toLowerCase()); 060 } 061 062 063 private static void exportOraclePackage(Schema schema, TSQLOraclePackage sqlOraclePackage) { 064 OraclePackage oraclePackage = new OraclePackage(); 065 schema.appendOraclePackage(oraclePackage); 066 oraclePackage.setName(sqlOraclePackage.getName()); 067 oraclePackage.setDefinition(sqlOraclePackage.getDefinition()); 068 List<TSQLSchemaObject> procedures = sqlOraclePackage.getSchemaObjectList(); 069 if (procedures != null) { 070 for (TSQLSchemaObject schemaObject : procedures) { 071 Procedure procedure = new Procedure(); 072 oraclePackage.appendProcedure(procedure); 073 procedure.setName(schemaObject.getName()); 074 procedure.setType(schemaObject.getDataObjectType().name().replace("dot", "").toLowerCase()); 075 if(schemaObject instanceof TSQLProcedure) { 076 procedure.setDefinition(((TSQLProcedure) schemaObject).getDefinition()); 077 } 078 } 079 } 080 } 081 082 private static void exportTable(Schema schema, TSQLTable sqlTable) { 083 Table table = new Table(); 084 schema.appendTable(table); 085 table.setName(sqlTable.getName()); 086 table.setIsView(String.valueOf(sqlTable.isView())); 087 table.setPriority(sqlTable.getPriority()); 088 List<TSQLColumn> columnList = sqlTable.getColumnList(); 089 if (columnList != null) { 090 for (TSQLColumn sqlColumn : columnList) { 091 exportColumn(table, sqlColumn); 092 } 093 } 094 } 095 096 private static void exportColumn(Table table, TSQLColumn sqlColumn) { 097 Column column = new Column(); 098 table.appendColumn(column); 099 column.setName(sqlColumn.getName()); 100 } 101}