Sistema Legado
29/07/2011 10:37
2
Bom dia pessoal.
Segue esboço, ou seja, delineação inicial do código para geração de domain baseada em tabela do banco caso seja necessário utilizar o legado ou desenhar primeiro o modelo de dados e o banco para depois gerar domain class.


def gerarDomainByTabelaBanco = {

def usuario = "usuario"
def senha = "senha01"
def url = "jdbc:sqlserver://localhost:1433;databaseName=AUDITORIA;"
def driverClassName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"
def campo = ""
def caminho = "/gerenciadorExportacao/"
def cliente = ""
def nome_classe = "Usuario"
def tabela = "Usuario"
def nomearquivo = "${nome_classe}.groovy"


def rep=servletContext.getRealPath("/"+cliente)
def arquivo = new OutputStreamWriter(new FileOutputStream(rep+caminho+nomearquivo),'utf-8')


def db = Sql.newInstance("${url}","${usuario}", "${senha}", "${driverClassName}")

def queryTabela = """
select sc.name Coluna, st.name Tipo, sc.isnullable Nulo, sc.prec Tamanho
from syscolumns sc
inner join systypes st
on st.xtype = sc.xtype
where
sc.id IN (select id from sysobjects where name = ${tabela})
"""

def listaEstruturaTabela = db.rows(queryTabela)

def mapaTiposCampo = [ int : 'Integer', char : 'String', varchar:'String', bit:'Boolean', datetime : 'Date']

def campo = ""

def classeGroovy = """
import java.io.Serializable;

class ${nome_classe} implements Serializable {\n\n"""

listaEstruturaTabela.each{
campo = it['Coluna']
classeGroovy += """ ${mapaTiposCampo[it.Tipo]} ${campo}; \n """
}

classeGroovy += """\nstatic constraints = {\n """

listaEstruturaTabela.each{
campo = it['Coluna']

def nulo = true
def maxsize = ""

if(it.Nulo == 0)
nulo = false

if(mapaTiposCampo[it.Tipo] == 'String')
maxsize = "maxSize:${it.Tamanho},"

classeGroovy += """ ${campo}(${maxsize}nullable:${nulo},blank:${nulo}) \n """
}

classeGroovy += "}\n"

classeGroovy += """
static mapping = {
table name:'${tabela}'
version false
id
"""

listaEstruturaTabela.each{
classeGroovy += """ ${campo} column:'${it['Coluna']}' \n"""
}

classeGroovy += """}\n"""



classeGroovy += """}"""



arquivo << classeGroovy
arquivo.close()

}

Só falta criar uma função para acerto do nome do campo para o domain.

Abç
Tags: Legado


Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto