Groovyで、テーブル一覧、テーブル定義をHTML出力してみる
最近参入したプロジェクトでテーブル定義がないため(!?)、さっと作ってみた。
出力された内容はまだ見にくいし、Not Null制約の出力結果がなんだか怪しいけど、ないよりましかな。
import groovy.sql.* import java.sql.ResultSet def props = [ user:"てきとうに" ,password:"にゅうりょく" ] as Properties def url = "してね" def driver = "oracle.jdbc.driver.OracleDriver" def outputEacchRow = { w, closure -> w << """n""" w << """n""" new groovy.xml.MarkupBuilder(w).html(){ head(){ meta('http-equiv':"Content-Type", content:"text/html;charset=UTF8") meta('http-equiv':"Content-Style-Type", content:"text/css;charset=UTF8") link(rel:"stylesheet", href:"style.css") } body(){ table closure } } } def gsql try{ gsql = Sql.newInstance( url ,props ,driver) def rs = gsql.connection.metaData.getColumns(null, props.user, "%", "%") def rows = [] while(rs.next()){ rows << rs.toRowResult() } rs.close() def entities = rows.groupBy{ it.TABLE_NAME }.findAll{ !(it.key =~ /.*BIN$.*/) }.sort{ it.key } // 出力処理 def dir = new File("entities") if( !dir.exists() || dir.file ) dir.mkdirs() new File("$dir/index.html").withWriter("UTF8"){ outputEacchRow(it){ def i = 0 tr(){ th "ID" th "名称" } entities.keySet().each{ tableName -> tr('class':(i++%2)?"odd":""){ td(){ a(href:"${tableName}.html", tableName) } td Mapper.tables[tableName] } } } } entities.each{ entity -> def columns = entity.value new File("$dir/${entity.key}.html").withWriter("UTF8"){ outputEacchRow(it){ tr(){ th "ID" th "名称" th "型" th "サイズ" th "NOT NULL" } def i = 0 columns.each{ column -> tr('class':(i++%2)?"odd":""){ td column.COLUMN_NAME td (Mapper.columns[column.COLUMN_NAME]) td column.TYPE_NAME td column.COLUMN_SIZE td (!column.IS_NULLABLE) } } } } } } finally { gsql?.close() }
ディスカッション
コメント一覧
まだ、コメントがありません