Esta ferramenta consiste em um gerador de código, no qual a partir da gramática DGen, geramos um CRUD das entidades definidas na gramática para uma aplicação web em Django.
Para construir este gerador, utilizamos o Xtext para criar uma gramática com sintaxe simplificada, em que podemos definir tipos de dados, entidades, atributos, relacionamentos e as ações do CRUD que estarão disponíveis para cada entidade.
A partir da definição da gramática, recorremos ao Xtend para, finalmente, gerar o código para a aplicação em Django.
Primeiramente é necessário criar o seu <filename>.dgen
.
Como mencionado anteriormente, nele serão definidos:
- Tipos de dados (
Datatype
's); - Entidades (
Entity
's); - Atributos (podem ser
Datatype
's ouEntity
's); - Ações
- Criar:
@Create
; - Ler:
@Read
; - Atualizar:
@Update
; - Deletar:
@Delete
; - Todas as anteriores:
@All
; - Nenhuma:
@None
.
- Criar:
Com o projeto do gerador aberto no eclipse, seguir estes passos:
- Clicar com botão direito sobre o diretório
org.xtext.mdd.dgen
- Clicar em
Run As
->Eclipse Application
->Next, next, next...
Uma nova aba do eclipse será aberta. É nela que iremos criar e escrever o arquivo <filename>.dgen
, ou seja, estaremos instanciando a gramática que foi definida.
Primeiramente, devemos criar um novo Projeto Java.
File
->New
->Other
->Java Project
->Next
-> [Dar um nome ao Projeto] ->Finish
->Create
- Clicar com o botão direito sobre o diretório
src
->New
->File
-> [Criar o arquivo<filename.dgen>
] ->Ok, next, next...
Exemplo de um modelo em DGen:
datatype String
datatype Int
datatype Float
datatype Date
@All
entity Funcionario {
nome: String
idade: Int
dtAdmissao: Date
}
@Create
@Read
@Update
entity Departamento {
nome: String
many funcionarios: Funcionario
}
@All
entity Empresa {
nome: String
many deptos: Departamento
}
Após criar o arquivo .dgen
, identificando nele as entidades do projeto, o código será gerado na pasta src-gen
.
Para executar a aplicação Django que foi gerada, devemos usar os seguintes comandos:
# Executar o script que criamos para instalar algumas dependências do projeto...
> ./scripts/init.sh
# Para entrar no env...
> cd src-gen
> source env/bin/activate
# Para atualizar a estrutura do banco de dados...
> python manage.py makemigrations app
> python manage.py migrate
# E finalmente, para executar o servidor...
> python manage.py runserver
E por fim, a última consideração é que, o código gerado servirá como base para o programador começar a construir sua a aplicação, ou seja, eventualmente poderão ocorrer mudanças nas entidades (classes definidas no arquivo models.py
). Quando houverem alterações na(s) classe(s) do projeto, pare de executar o servidor e rode os seguintes comandos para atualizar a estrutura do banco de dados.
python manage.py makemigrations app
python manage.py migrate
Além disso, também criamos um script para facilitar a inicialização do servidor. Basta executar o comando:
> ./scripts/run.sh