Aula 6 - FénixFramework e DML
Nesta aula vamos fazer um pequeno exercício para experimentar a utilização da FénixFramework e explorar a definição de um domínio de objetos persistentes usando a linguagem específica de domínio DML. Parte prévia (anterior à aula de laboratório): instalar base de dados MySQL diretamente ou através do Docker
- Instalar o servidor MySQL na sua máquina.
- Instalar o Docker
- Colocar local.dev.yml no diretório raiz do projeto
- Lançar docker $docker-compose -f local.dev.yml up
- Obtenha o projeto aula-dml de https://github.com/tecnico-softeng/aula-dml.git
- Abra o projeto no Eclipse como um projeto maven
- Analise o ficheiro pom.xml
- Analise o ficheiro src/main/resources/fenix-framework.properties.example e crie um ficheiro src/main/resources/fenix-framework.properties em que coloca a sua password de root do MySQL
- Crie uma base de dados com o nome que encontrou no ficheiro de propriedades da FénixFramework
- Execute mvn clean compile
- No Eclipse adicione target/generated-sources/dml-maven-plugin ao build path do projeto
- Execute mvn clean test
- Analise a classe BankPersistenceTest
- Analise o ficheiro src/main/dml/bank.dml
- Crie uma nova classe persistente Account associada à classe Bank de forma que sempre que uma conta é criada liga-se ao objeto banco que recebe como argumento. Adicione à classe BankPersistenceTest a verificação que a nova conta fica persistentemente ligada ao banco.
- Defina os método deposit e withdraw e adicione à classe BankPersistenceTest a verificação da persistência das ações destes métodos.
- Defina o método totalBalance na classe Bank, que testa a soma dos saldos de todas as contas do banco. Adicione à classe BankPersistenceTest a verificação da persistência destas ações.
- Defina a classe SavingsAccount como subclasse de Account redefinindo os métodos deposit e withdraw de modo a que apenas é possível depositar múltiplos de 100 e levantar a totalidade do saldo. Adicione à classe BankPersistenceTest as verificações necessárias.
- Defina a classe WithdrawalAccount como subclasse de Account e coloque a classe Account como abstrata. Adicione à classe BankPersistenceTest as verificações necessárias.