US2003 - ArthurSchiavom/gestao-informacao-chao-de-fabrica--projeto-academico GitHub Wiki
=======================================
Como Gestor de Produção, pretendo visualizar todos os produtos sem ficha de produção.
O utilizador inicia o caso de uso. O sistema apresenta um conjunto de informações sobre todos os produtos sem ficha de produção. O caso de uso termina. O conjunto de informações aqui mencionado refere-se a toda a informação que seja relevante e curta o suficiente para participar numa tabela sumária dos atributos do Produto.
Visto que era necessário apresentar os produtos ao utilizador e que estes contêm vários parâmetros, foi decidido utilizar uma classe já existente que formata a informação numa tabela. Esta classe foi desenvolvida por Carl Eriksson e está disponível publicamente no GitHub. No entanto, a classe foi alterada ligeiramente para que retorne a tabela (String) em vez de a imprimir, garantindo então que a UI continua com responsabilidade exclusiva de comunicar com o utilizador.
Documentado no US2006.
Note-se que o repositório é obtido através de PersistenceContext.repositories().produto(), que é a metodologia utilizada em toda a aplicação sempre que um repositório é necessário.
- Repository Pattern - ProdutoRepository.
- Factory Method - Para a instanciação de objetos do domínio.
- Simple Factory - Na instanciação de repositórios, neste caso através de PersistenceContext.repositories().produto().
- Command - A UI faz parte de uma aplicação deste padrão, sendo que implementa Action e é posteriormente utilizada de maneira genérica como uma ação.
- Controller - ConsultarProdutosSemFichaDeProducaoController
- 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 - JpaProdutoRepository é utilizado como uma instância da interface ProdutoRepository. ArrayList é utilizada como uma instância da interface List.
- Creator - Para geração de todos os DTOs. Exemplo: Produto gera ProdutoDTO
- 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
- Nenhum produto com ficha de produção
- Testar com 1+ produtos com ficha de produção e 1+ produtos sem ficha produção na base de dados.
- Mais de 500 produtos com ficha de produção
Foi utilizada uma classe desenvolvida por Carl Eriksson que está disponível publicamente no GitHub.


