US3004 - ArthurSchiavom/gestao-informacao-chao-de-fabrica--projeto-academico GitHub Wiki

US3004

=======================================

1. Requisitos

O gestor de chão de fabrica deseja associar um ficheiro de configuracao a uma maquina.

2. Análise

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 SSD

3. Design

3.1. Realização da Funcionalidade

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

SSD

3.2. Diagrama de Classes

SSD

3.3. Padrões Aplicados

  • 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

3.4. Testes

Testes funcionais

  • Verificar que a descricao nao pode ser vazio
  • Verificar que o nome do ficheiro nao pode ser vazio

4. Implementação

Foi utilizada uma classe desenvolvida por Carl Eriksson que está disponível publicamente no GitHub. Esta classe gera tabelas em texto para a consola.

⚠️ **GitHub.com Fallback** ⚠️