US3004 - ArthurSchiavom/gestao-informacao-chao-de-fabrica--projeto-academico GitHub Wiki
=======================================
O gestor de chão de fabrica deseja associar um ficheiro de configuracao a uma maquina.
O utilizador inicia o processo de associar um ficheiro de configuracao a uma maquina.
Apresenta ao utilizador a lista de maquinas sem ficheiro de configuracao e solicita que insira um codigo interno das apresentadas.
Introduz um codigo interno.Solicita o nome para o ficheiro que vai ser criado e a descricao.
Insere os dados solicitados.Informa acerca do sucesso de operacao

O repositório é obtido através de PersistenceContext.repositories().maquina() e que o persistenceContext é obtido através de PersistenceContext.repositories().newTransactionalContext().


- Repository Pattern - MaquinaRepository.
- Simple Factory - Na instanciação de repositórios, como em PersistenceContext.repositories().material().
- Controller - EspecificarFicheiroConfiguracaoController
- Polymorphism & Template method - Usado na implementação do repositório específico de cada entidade bem como na implementação da UI específica deste caso de uso.
- Dependency inversion & Protected variation & Strategy - JpaMaquinaRepository é usado como uma instância da interface MaquinaRepository. ArrayList é utilizada como uma instância da interface List.
- Creator - Para geração de todos os DTOs. Exemplo: Produto gera MaquinaDTO
- Liskov Substitution principle & Dependency inversion - Em todas as implementações de interfaces e extensões de classes.
- Pure fabrication - Controller e UI.
- Information expert & HC/LC - Sempre presente: cada classe tem uma responsabilidade bem definida, visando a sua independência de outras classes.
- Singleton - Utilizado na RepositoryFactory
- Facade - Interface para o utilizador
- Verificar que a descricao nao pode ser vazio
- Verificar que o nome do ficheiro nao pode ser vazio
Foi utilizada uma classe desenvolvida por Carl Eriksson que está disponível publicamente no GitHub. Esta classe gera tabelas em texto para a consola.