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 if (sqlSchemaObject instanceof TSQLSynonyms) { 051 exportSynonym(schema, (TSQLSynonyms) sqlSchemaObject); 052 } 053 } 054 } 055 } 056 057 private static void exportSynonym(Schema schema, TSQLSynonyms sqlSynonyms) { 058 Synonym synonym = new Synonym(); 059 schema.appendSynonym(synonym); 060 synonym.setName(sqlSynonyms.getName()); 061 synonym.setSourceDatabase(sqlSynonyms.getSourceDatabase()); 062 synonym.setSourceSchema(sqlSynonyms.getSourceSchema()); 063 synonym.setSourceName(sqlSynonyms.getSourceName()); 064 } 065 066 private static void exportProcedure(Schema schema, TSQLProcedure sqlProcedure) { 067 Procedure procedure = new Procedure(); 068 schema.appendProcedure(procedure); 069 procedure.setName(sqlProcedure.getName()); 070 procedure.setDefinition(sqlProcedure.getDefinition()); 071 procedure.setType(sqlProcedure.getDataObjectType().name().replace("dot", "").toLowerCase()); 072 } 073 074 075 private static void exportOraclePackage(Schema schema, TSQLOraclePackage sqlOraclePackage) { 076 OraclePackage oraclePackage = new OraclePackage(); 077 schema.appendOraclePackage(oraclePackage); 078 oraclePackage.setName(sqlOraclePackage.getName()); 079 oraclePackage.setDefinition(sqlOraclePackage.getDefinition()); 080 List<TSQLSchemaObject> procedures = sqlOraclePackage.getSchemaObjectList(); 081 if (procedures != null) { 082 for (TSQLSchemaObject schemaObject : procedures) { 083 Procedure procedure = new Procedure(); 084 oraclePackage.appendProcedure(procedure); 085 procedure.setName(schemaObject.getName()); 086 procedure.setType(schemaObject.getDataObjectType().name().replace("dot", "").toLowerCase()); 087 if(schemaObject instanceof TSQLProcedure) { 088 procedure.setDefinition(((TSQLProcedure) schemaObject).getDefinition()); 089 } 090 } 091 } 092 } 093 094 private static void exportTable(Schema schema, TSQLTable sqlTable) { 095 Table table = new Table(); 096 schema.appendTable(table); 097 table.setName(sqlTable.getName()); 098 table.setIsView(String.valueOf(sqlTable.isView())); 099 table.setPriority(sqlTable.getPriority()); 100 List<TSQLColumn> columnList = sqlTable.getColumnList(); 101 if (columnList != null) { 102 for (TSQLColumn sqlColumn : columnList) { 103 exportColumn(table, sqlColumn); 104 } 105 } 106 } 107 108 private static void exportColumn(Table table, TSQLColumn sqlColumn) { 109 Column column = new Column(); 110 table.appendColumn(column); 111 column.setName(sqlColumn.getName()); 112 } 113}