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 migrateAlém disso, também criamos um script para facilitar a inicialização do servidor. Basta executar o comando:
> ./scripts/run.sh