├── .gitignore
├── .idea
├── .gitignore
├── misc.xml
├── modules.xml
└── uiDesigner.xml
├── LabOOJava.iml
├── LabOOJava_Resposta.zip
├── README.md
└── src
└── one
└── digitalinovation
└── laboojava
├── basedados
└── Banco.java
├── console
└── Start.java
├── entidade
├── Cliente.java
├── Cupom.java
├── Livro.java
├── Pedido.java
├── Produto.java
└── constantes
│ └── Genero.java
├── negocio
├── ClienteNegocio.java
├── PedidoNegocio.java
└── ProdutoNegocio.java
└── utilidade
└── LeitoraDados.java
/.gitignore:
--------------------------------------------------------------------------------
1 | # Project exclude paths
2 | /out/
--------------------------------------------------------------------------------
/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/uiDesigner.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | -
6 |
7 |
8 | -
9 |
10 |
11 | -
12 |
13 |
14 | -
15 |
16 |
17 | -
18 |
19 |
20 |
21 |
22 |
23 | -
24 |
25 |
26 |
27 |
28 |
29 | -
30 |
31 |
32 |
33 |
34 |
35 | -
36 |
37 |
38 |
39 |
40 |
41 | -
42 |
43 |
44 |
45 |
46 | -
47 |
48 |
49 |
50 |
51 | -
52 |
53 |
54 |
55 |
56 | -
57 |
58 |
59 |
60 |
61 | -
62 |
63 |
64 |
65 |
66 | -
67 |
68 |
69 |
70 |
71 | -
72 |
73 |
74 | -
75 |
76 |
77 |
78 |
79 | -
80 |
81 |
82 |
83 |
84 | -
85 |
86 |
87 |
88 |
89 | -
90 |
91 |
92 |
93 |
94 | -
95 |
96 |
97 |
98 |
99 | -
100 |
101 |
102 | -
103 |
104 |
105 | -
106 |
107 |
108 | -
109 |
110 |
111 | -
112 |
113 |
114 |
115 |
116 | -
117 |
118 |
119 | -
120 |
121 |
122 |
123 |
124 |
--------------------------------------------------------------------------------
/LabOOJava.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/LabOOJava_Resposta.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/tlcdio/LabOOJava/512edc877d51d6aa3670fab7d87aba85d2d07da6/LabOOJava_Resposta.zip
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # LabOO Java
2 |
3 | Olá! Este é o projeto de prática do LabOO Java da DIO. Algumas considerações deve ser informadas:
4 |
5 | * _Nenhum tratamento de erro foi feito_: forneça exatametne o que se pede. Não tente informar dados inexperados que a aplicação irá quebrar e encerrar.
6 | * _Desafios_: Existem alguns desafios quais você terá que responder. Para estes não existe código de resposta.
7 | * _Complementos_: Existem alguns postas no projeto que você poderá responder baseados nos videos e na resposta(arquivo LabOOJava_Resposta.zip)
8 |
9 | Espero que este Lab(projeto e videos) te ajude a aprender mais sobre OO. Grande abraço.Dúvidas e questionamentos favor mandar mensagem via LinkedIn.
10 |
11 | Grande abraço e bons estudos.
12 |
13 |
--------------------------------------------------------------------------------
/src/one/digitalinovation/laboojava/basedados/Banco.java:
--------------------------------------------------------------------------------
1 | package one.digitalinovation.laboojava.basedados;
2 |
3 | import one.digitalinovation.laboojava.entidade.Cliente;
4 | import one.digitalinovation.laboojava.entidade.Cupom;
5 | import one.digitalinovation.laboojava.entidade.Pedido;
6 | import one.digitalinovation.laboojava.entidade.Produto;
7 |
8 | import java.util.ArrayList;
9 | import java.util.List;
10 |
11 | /**
12 | * Classe responsável por simular um banco de dados. Esta faz as inserções e exclusões da
13 | * aplicação. Atualizações não são permitidas para facilitar o funcionamento da aplicação.
14 | * @author thiago leite
15 | */
16 | public class Banco {
17 |
18 | /**
19 | * Lista que armazena os produtos(livros e cadernos) cadastrados.
20 | */
21 | private List produtos;
22 |
23 | /**
24 | * Lista que armazena os pedidos cadastrados.
25 | */
26 | private List pedidos;
27 |
28 | /**
29 | * Lista que armazena os cupons disponíveis.
30 | */
31 | private List cupons;
32 |
33 | /**
34 | * Cliente cadastrado.
35 | */
36 | private Cliente cliente;
37 |
38 | public Banco() {
39 |
40 | this.produtos = new ArrayList<>();
41 | this.pedidos = new ArrayList<>();
42 | this.cliente = new Cliente();
43 |
44 | this.cupons = new ArrayList<>();
45 | cupons.add(new Cupom("CUPOM2", 2));
46 | cupons.add(new Cupom("CUPOM5", 5));
47 | cupons.add(new Cupom("CUPOM7", 7));
48 | }
49 |
50 | public Cliente getCliente() {
51 | return cliente;
52 | }
53 |
54 | public Cupom[] getCupons() {
55 | return cupons.toArray(new Cupom[cupons.size()]);
56 | }
57 |
58 | public Pedido[] getPedidos() {
59 | return pedidos.toArray(new Pedido[pedidos.size()]);
60 | }
61 |
62 | public Produto[] getProdutos() {
63 | return produtos.toArray(new Produto[produtos.size()]);
64 | }
65 |
66 | public void adicionarProduto(Produto produto) {
67 | produtos.add(produto);
68 | }
69 |
70 | public void removerProduto(int posicao) {
71 | produtos.remove(posicao);
72 | }
73 |
74 | public void adicionarPedido(Pedido pedido) {
75 | pedidos.add(pedido);
76 | }
77 |
78 | public void removerPedido(int posicao) {
79 | pedidos.remove(posicao);
80 | }
81 | }
82 |
--------------------------------------------------------------------------------
/src/one/digitalinovation/laboojava/console/Start.java:
--------------------------------------------------------------------------------
1 | package one.digitalinovation.laboojava.console;
2 |
3 | import one.digitalinovation.laboojava.basedados.Banco;
4 | import one.digitalinovation.laboojava.entidade.*;
5 | import one.digitalinovation.laboojava.negocio.ClienteNegocio;
6 | import one.digitalinovation.laboojava.negocio.PedidoNegocio;
7 | import one.digitalinovation.laboojava.negocio.ProdutoNegocio;
8 | import one.digitalinovation.laboojava.utilidade.LeitoraDados;
9 |
10 | import java.util.Optional;
11 |
12 | /**
13 | * Classe responsável por controlar a execução da aplicação.
14 | * @author thiago leite
15 | */
16 | public class Start {
17 |
18 | private static Cliente clienteLogado = null;
19 |
20 | private static Banco banco = new Banco();
21 |
22 | private static ClienteNegocio clienteNegocio = new ClienteNegocio(banco);
23 | private static PedidoNegocio pedidoNegocio = new PedidoNegocio(banco);
24 | private static ProdutoNegocio produtoNegocio = new ProdutoNegocio(banco);
25 |
26 | /**
27 | * Método utilitário para inicializar a aplicação.
28 | * @param args Parâmetros que podem ser passados para auxiliar na execução.
29 | */
30 | public static void main(String[] args) {
31 |
32 | System.out.println("Bem vindo ao e-Compras");
33 |
34 | String opcao = "";
35 |
36 | while(true) {
37 |
38 | if (clienteLogado == null) {
39 |
40 | System.out.println("Digite o cpf:");
41 |
42 | String cpf = "";
43 | cpf = LeitoraDados.lerDado();
44 |
45 | identificarUsuario(cpf);
46 | }
47 |
48 | System.out.println("Selecione uma opção:");
49 | System.out.println("1 - Cadastrar Livro");
50 | System.out.println("2 - Excluir Livro");
51 | //TODO Desafio: Consultar Livro(nome)
52 | System.out.println("3 - Cadastrar Caderno");
53 | System.out.println("4 - Excluir Caderno");
54 | //TODO Desafio: Consultar Caderno(matéria)
55 | System.out.println("5 - Fazer pedido");
56 | System.out.println("6 - Excluir pedido");
57 | //TODO Desafio: Consultar Pedido(código)
58 | System.out.println("7 - Listar produtos");
59 | System.out.println("8 - Listar pedidos");
60 | System.out.println("9 - Deslogar");
61 | System.out.println("10 - Sair");
62 |
63 | opcao = LeitoraDados.lerDado();
64 |
65 | switch (opcao) {
66 | case "1":
67 | Livro livro = LeitoraDados.lerLivro();
68 | produtoNegocio.salvar(livro);
69 | break;
70 | case "2":
71 | System.out.println("Digite o código do livro");
72 | String codigoLivro = LeitoraDados.lerDado();
73 | produtoNegocio.excluir(codigoLivro);
74 | break;
75 | case "3":
76 | //TODO Cadastrar Caderno
77 | break;
78 | case "4":
79 | //TODO Excluir Caderno
80 | break;
81 | case "5":
82 | Pedido pedido = LeitoraDados.lerPedido(banco);
83 | Optional cupom = LeitoraDados.lerCupom(banco);
84 |
85 | if (cupom.isPresent()) {
86 | pedidoNegocio.salvar(pedido, cupom.get());
87 | } else {
88 | pedidoNegocio.salvar(pedido);
89 | }
90 | break;
91 | case "6":
92 | System.out.println("Digite o código do pedido");
93 | String codigoPedido = LeitoraDados.lerDado();
94 | pedidoNegocio.excluir(codigoPedido);
95 | break;
96 | case "7":
97 | produtoNegocio.listarTodos();
98 | break;
99 | case "8":
100 | //TODO Listar todos os Pedidos
101 | break;
102 | case "9":
103 | System.out.println(String.format("Volte sempre %s!", clienteLogado.getNome()));
104 | clienteLogado = null;
105 | break;
106 | case "10":
107 | System.out.println("Aplicação encerrada.");
108 | System.exit(0);
109 | break;
110 | default:
111 | System.out.println("Opção inválida.");
112 | break;
113 | }
114 | }
115 | }
116 |
117 | /**
118 | * Procura o usuário na base de dados.
119 | * @param cpf CPF do usuário que deseja logar na aplicação
120 | */
121 | private static void identificarUsuario(String cpf) {
122 |
123 | Optional resultado = clienteNegocio.consultar(cpf);
124 |
125 | if (resultado.isPresent()) {
126 |
127 | Cliente cliente = resultado.get();
128 | System.out.println(String.format("Olá %s! Você está logado.", cliente.getNome()));
129 | clienteLogado = cliente;
130 | } else {
131 | System.out.println("Usuário não cadastrado.");
132 | System.exit(0);
133 | }
134 | }
135 | }
136 |
--------------------------------------------------------------------------------
/src/one/digitalinovation/laboojava/entidade/Cliente.java:
--------------------------------------------------------------------------------
1 | package one.digitalinovation.laboojava.entidade;
2 |
3 | /**
4 | * Classe que representa a entidade cliente. Este pode fazer um pedido.
5 | * @author thiago leite
6 | */
7 | public class Cliente {
8 |
9 | /**
10 | * Nome completo do cliente.
11 | */
12 | private String nome;
13 |
14 | /**
15 | * Número de CPF(Cadastro de Pessoa Física) do cliente.
16 | */
17 | private String cpf;
18 |
19 | public Cliente() {
20 | this.nome = "Fulano";
21 | this.cpf = "123456789011";
22 | }
23 |
24 | public String getNome() {
25 | return nome;
26 | }
27 |
28 | public void setNome(String nome) {
29 | this.nome = nome;
30 | }
31 |
32 | public String getCpf() {
33 | return cpf;
34 | }
35 |
36 | public void setCpf(String cpf) {
37 | this.cpf = cpf;
38 | }
39 |
40 | @Override
41 | public String toString() {
42 | return "Cliente{ nome='" + nome + "'}";
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/src/one/digitalinovation/laboojava/entidade/Cupom.java:
--------------------------------------------------------------------------------
1 | package one.digitalinovation.laboojava.entidade;
2 |
3 | /**
4 | * Classe que representa a entidade cupom. Este pode ser utilizado no ato do fechamento do pedido
5 | * para obter um desconto, caso desejado.
6 | * @author thiago leite
7 | */
8 | public class Cupom {
9 |
10 | /**
11 | * Código descritivo do cupom.
12 | */
13 | private String codigo;
14 |
15 | /**
16 | * Valor em porcentagem do desconto.
17 | */
18 | private int desconto;
19 |
20 | /**
21 | * Construtor do cupom
22 | * @param codigo Código do cupom
23 | * @param desconto Porcentagem de desconto
24 | */
25 | public Cupom(String codigo, int desconto) {
26 | this.codigo = codigo;
27 | this.desconto = desconto;
28 | }
29 |
30 | public String getCodigo() {
31 | return codigo;
32 | }
33 |
34 | public void setCodigo(String codigo) {
35 | this.codigo = codigo;
36 | }
37 |
38 | public double getDesconto() {
39 | return desconto;
40 | }
41 |
42 | public void setDesconto(int desconto) {
43 | this.desconto = desconto;
44 | }
45 |
46 | }
47 |
--------------------------------------------------------------------------------
/src/one/digitalinovation/laboojava/entidade/Livro.java:
--------------------------------------------------------------------------------
1 | package one.digitalinovation.laboojava.entidade;
2 |
3 | import one.digitalinovation.laboojava.entidade.constantes.Genero;
4 |
5 | /**
6 | * Classe que representa um livro, qual é uma especialização de um produto da loja.
7 | * @author thiago leite
8 | */
9 | public class Livro extends Produto {
10 |
11 | /**
12 | * Nome do livro.
13 | */
14 | private String nome;
15 |
16 | /**
17 | * Gênero do livro.
18 | */
19 | private Genero genero;
20 |
21 | public String getNome() {
22 | return nome;
23 | }
24 |
25 | public void setNome(String nome) {
26 | this.nome = nome;
27 | }
28 |
29 | public Genero getGenero() {
30 | return genero;
31 | }
32 |
33 | public void setGenero(Genero genero) {
34 | this.genero = genero;
35 | }
36 |
37 | /**
38 | * {@inheritDoc}.
39 | */
40 | @Override
41 | public double calcularFrete() {
42 | return (getPreco() * getQuantidade()) * (1 + genero.getFator());
43 | }
44 |
45 | @Override
46 | public String toString() {
47 | return "Livro{" +
48 | "nome='" + nome + '\'' +
49 | ", genero=" + genero + '\'' +
50 | ", codigo='" + getCodigo() + '\'' +
51 | ", preço='" + getPreco() + '\'' +
52 | '}';
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/src/one/digitalinovation/laboojava/entidade/Pedido.java:
--------------------------------------------------------------------------------
1 | package one.digitalinovation.laboojava.entidade;
2 |
3 | import java.util.ArrayList;
4 | import java.util.List;
5 |
6 | /**
7 | * Classe que representa a entidade pedido, qual é a compra dos produtos por um cliente.
8 | * @author thiago leite
9 | */
10 | public class Pedido {
11 |
12 | //TODO Preencher esta classe
13 |
14 | //codigo
15 | //cliente
16 | //produtos
17 | //total
18 | }
19 |
--------------------------------------------------------------------------------
/src/one/digitalinovation/laboojava/entidade/Produto.java:
--------------------------------------------------------------------------------
1 | package one.digitalinovation.laboojava.entidade;
2 |
3 | /**
4 | * Classe que representa a abstração dos produtos que podem ser vendidos pela loja.
5 | * @author thiago leite
6 | */
7 | public abstract class Produto {
8 |
9 | /**
10 | * Código de identiticação do produto.
11 | */
12 | private String codigo;
13 |
14 | /**
15 | * Valor unitário do produto.
16 | */
17 | private double preco;
18 |
19 | /**
20 | * Quantidade comprada do produto.
21 | */
22 | private int quantidade;
23 |
24 | public Produto() {}
25 |
26 | public String getCodigo() {
27 | return codigo;
28 | }
29 |
30 | public void setCodigo(String codigo) {
31 | this.codigo = codigo;
32 | }
33 |
34 | public double getPreco() {
35 | return preco;
36 | }
37 |
38 | public int getQuantidade() {
39 | return quantidade;
40 | }
41 |
42 | public void setPreco(double preco) {
43 | this.preco = preco;
44 | }
45 |
46 | public void setQuantidade(int quantidade) {
47 | this.quantidade = quantidade;
48 | }
49 |
50 | /**
51 | * Calcula o preço do frete para os produtos comprados. Este cálculo pode
52 | * variar de acordo com o produto
53 | * @return valor do frete para o determinado produto
54 | */
55 | //TODO Método de cálculo de frete
56 | }
57 |
--------------------------------------------------------------------------------
/src/one/digitalinovation/laboojava/entidade/constantes/Genero.java:
--------------------------------------------------------------------------------
1 | package one.digitalinovation.laboojava.entidade.constantes;
2 |
3 | /**
4 | * Gêneros dos livros vendidos.
5 | * @author thiago leite
6 | */
7 | public enum Genero {
8 |
9 | DRAMA(15),
10 |
11 | SUSPENSE(10),
12 |
13 | ROMANCE(5);
14 |
15 | private double fator;
16 |
17 | /**
18 | * Construtor.
19 | * @param fator Valor por tipo que influencia no cálculo do frete.
20 | */
21 | Genero(double fator) {
22 | this.fator = fator / 100;
23 | }
24 |
25 | public double getFator() {
26 | return fator;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/one/digitalinovation/laboojava/negocio/ClienteNegocio.java:
--------------------------------------------------------------------------------
1 | package one.digitalinovation.laboojava.negocio;
2 |
3 | import one.digitalinovation.laboojava.basedados.Banco;
4 | import one.digitalinovation.laboojava.entidade.Cliente;
5 |
6 | import java.util.Optional;
7 |
8 | /**
9 | * Classe para manipular a entidade {@link Cliente}.
10 | * @author thiago leite
11 | */
12 | public class ClienteNegocio {
13 |
14 | /**
15 | * {@inheritDoc}.
16 | */
17 | private Banco bancoDados;
18 |
19 | /**
20 | * Construtor.
21 | * @param banco Banco de dados para ter acesso aos clientes cadastrados
22 | */
23 | public ClienteNegocio(Banco banco) {
24 | this.bancoDados = banco;
25 | }
26 |
27 | /**
28 | * Consulta o cliente pelo seu CPF.
29 | * @param cpf CPF de um cliente
30 | * @return O cliente que possuir o CPF passado.
31 | */
32 | public Optional consultar(String cpf) {
33 |
34 | if (bancoDados.getCliente().getCpf().equals(cpf)) {
35 | return Optional.of(bancoDados.getCliente());
36 | } else {
37 | return Optional.empty();
38 | }
39 | }
40 |
41 | /**
42 | * Cadastra um novo cliente.
43 | * @param cliente Novo cliente que terá acesso a aplicação
44 | */
45 | //TODO Fazer a inclusão de cliente
46 |
47 | /**
48 | * Exclui um cliente específico.
49 | * @param cpf CPF do cliente
50 | */
51 | //TODO Fazer a exclusão de cliente
52 |
53 | }
54 |
--------------------------------------------------------------------------------
/src/one/digitalinovation/laboojava/negocio/PedidoNegocio.java:
--------------------------------------------------------------------------------
1 | package one.digitalinovation.laboojava.negocio;
2 |
3 | import one.digitalinovation.laboojava.basedados.Banco;
4 | import one.digitalinovation.laboojava.entidade.Cupom;
5 | import one.digitalinovation.laboojava.entidade.Pedido;
6 | import one.digitalinovation.laboojava.entidade.Produto;
7 |
8 | import java.time.LocalDate;
9 | import java.util.List;
10 |
11 | /**
12 | * Classe para manipular a entidade {@link Pedido}.
13 | * @author thiago leite
14 | */
15 | public class PedidoNegocio {
16 |
17 | /**
18 | * {@inheritDoc}.
19 | */
20 | private Banco bancoDados;
21 |
22 | /**
23 | * Construtor.
24 | * @param banco Banco de dados para ter armazenar e ter acesso os pedidos
25 | */
26 | public PedidoNegocio(Banco banco) {
27 | this.bancoDados = banco;
28 | }
29 |
30 | private double calcularTotal(List produtos, Cupom cupom) {
31 |
32 | double total = 0.0;
33 | for (Produto produto: produtos) {
34 | total += produto.calcularFrete();
35 | }
36 |
37 | if (cupom != null) {
38 | return total * (1 - cupom.getDesconto());
39 | } else {
40 | return total;
41 | }
42 |
43 | }
44 |
45 | /**
46 | * Salva um novo pedido sem cupom de desconto.
47 | * @param novoPedido Pedido a ser armazenado
48 | */
49 | public void salvar(Pedido novoPedido) {
50 | salvar(novoPedido, null);
51 | }
52 |
53 | /**
54 | * Salva um novo pedido com cupom de desconto.
55 | * @param novoPedido Pedido a ser armazenado
56 | * @param cupom Cupom de desconto a ser utilizado
57 | */
58 | public void salvar(Pedido novoPedido, Cupom cupom) {
59 |
60 | //Definir padrão código
61 | //Pegar data do dia corrente
62 | //Formatar código
63 |
64 | //Setar código no pedido
65 | //Setar cliente no pedido
66 | //Calcular e set total
67 | //Adicionar no banco
68 | //Mensagem
69 | }
70 |
71 | /**
72 | * Exclui um pedido a partir de seu código de rastreio.
73 | * @param codigo Código do pedido
74 | */
75 | public void excluir(String codigo) {
76 |
77 | int pedidoExclusao = -1;
78 | for (int i = 0; i < bancoDados.getPedidos().length; i++) {
79 |
80 | Pedido pedido = bancoDados.getPedidos()[i];
81 | if (pedido.getCodigo().equals(codigo)) {
82 | pedidoExclusao = i;
83 | break;
84 | }
85 | }
86 |
87 | if (pedidoExclusao != -1) {
88 | bancoDados.removerPedido(pedidoExclusao);
89 | System.out.println("Pedido excluído com sucesso.");
90 | } else {
91 | System.out.println("Pedido inexistente.");
92 | }
93 | }
94 |
95 | /**
96 | * Lista todos os pedidos realizados.
97 | */
98 | //TODO Método de listar todos os pedidos
99 |
100 | }
101 |
--------------------------------------------------------------------------------
/src/one/digitalinovation/laboojava/negocio/ProdutoNegocio.java:
--------------------------------------------------------------------------------
1 | package one.digitalinovation.laboojava.negocio;
2 |
3 | import one.digitalinovation.laboojava.basedados.Banco;
4 | import one.digitalinovation.laboojava.entidade.Produto;
5 |
6 | import java.util.Optional;
7 |
8 | /**
9 | * Classe para manipular a entidade {@link Produto}.
10 | * @author thiago leite
11 | */
12 | public class ProdutoNegocio {
13 |
14 | /**
15 | * {@inheritDoc}.
16 | */
17 | private Banco bancoDados;
18 |
19 | /**
20 | * Construtor.
21 | * @param banco Banco de dados para ter armazenar e ter acesso os produtos
22 | */
23 | public ProdutoNegocio(Banco banco) {
24 | this.bancoDados = banco;
25 | }
26 |
27 | /**
28 | * Salva um novo produto(livro ou caderno) na loja.
29 | * @param novoProduto Livro ou caderno que pode ser vendido
30 | */
31 | public void salvar(Produto novoProduto) {
32 |
33 | String codigo = "PR%04d";
34 | codigo = String.format(codigo, bancoDados.getProdutos().length);
35 | novoProduto.setCodigo(codigo);
36 |
37 | boolean produtoRepetido = false;
38 | for (Produto produto: bancoDados.getProdutos()) {
39 | if (produto.getCodigo() == novoProduto.getCodigo()) {
40 | produtoRepetido = true;
41 | System.out.println("Produto já cadastrado.");
42 | break;
43 | }
44 | }
45 |
46 | if (!produtoRepetido) {
47 | this.bancoDados.adicionarProduto(novoProduto);
48 | System.out.println("Produto cadastrado com sucesso.");
49 | }
50 | }
51 |
52 | /**
53 | * Exclui um produto pelo código de cadastro.
54 | * @param codigo Código de cadastro do produto
55 | */
56 | public void excluir(String codigo) {
57 | //TODO Implementar a exclusão
58 | }
59 |
60 | /**
61 | * Obtem um produto a partir de seu código de cadastro.
62 | * @param codigo Código de cadastro do produto
63 | * @return Optional indicando a existência ou não do Produto
64 | */
65 | public Optional consultar(String codigo) {
66 |
67 | for (Produto produto: bancoDados.getProdutos()) {
68 |
69 | if (produto.getCodigo().equalsIgnoreCase(codigo)) {
70 | return Optional.of(produto);
71 | }
72 | }
73 |
74 | return Optional.empty();
75 | }
76 |
77 | /**
78 | * Lista todos os produtos cadastrados.
79 | */
80 | public void listarTodos() {
81 |
82 | if (bancoDados.getProdutos().length == 0) {
83 | System.out.println("Não existem produtos cadastrados");
84 | } else {
85 |
86 | for (Produto produto: bancoDados.getProdutos()) {
87 | System.out.println(produto.toString());
88 | }
89 | }
90 | }
91 | }
92 |
--------------------------------------------------------------------------------
/src/one/digitalinovation/laboojava/utilidade/LeitoraDados.java:
--------------------------------------------------------------------------------
1 | package one.digitalinovation.laboojava.utilidade;
2 |
3 | import one.digitalinovation.laboojava.basedados.Banco;
4 | import one.digitalinovation.laboojava.entidade.Pedido;
5 | import one.digitalinovation.laboojava.entidade.Livro;
6 | import one.digitalinovation.laboojava.entidade.Produto;
7 | import one.digitalinovation.laboojava.entidade.Cupom;
8 | import one.digitalinovation.laboojava.entidade.constantes.Genero;
9 | import one.digitalinovation.laboojava.negocio.ProdutoNegocio;
10 |
11 | import java.util.Optional;
12 | import java.util.Scanner;
13 |
14 | /**
15 | * Classe utilitária para auxiliar na leitura de entradas de dados via teclado.
16 | * @author thiago leite
17 | */
18 | public final class LeitoraDados {
19 |
20 | /**
21 | * Classe do Java para manipular entradas via teclado.
22 | */
23 | private static Scanner scanner;
24 |
25 | static {
26 | scanner = new Scanner(System.in);
27 | }
28 |
29 | /**
30 | * Ler um dado específico
31 | * @return Dado lido
32 | */
33 | public static String lerDado() {
34 |
35 | String texto = scanner.nextLine();
36 |
37 | return texto;
38 | }
39 |
40 | /**
41 | * Ler os dados do livro a ser cadastrado.
42 | * @return Um livro a partir dos dados de entrada
43 | */
44 | public static Livro lerLivro() {
45 |
46 | System.out.println("Cadastrando livro...");
47 | Livro livro = new Livro();
48 |
49 | System.out.println("Digite o nome");
50 | String nome = lerDado();
51 | livro.setNome(nome);
52 |
53 | System.out.println("Digite o gênero: DRAMA, SUSPENSE, ROMANCE");
54 | String genero = lerDado();
55 | livro.setGenero(Genero.valueOf(genero.toUpperCase()));
56 |
57 | System.out.println("Digite o preço(padrão 0.0)");
58 | String preco = lerDado();
59 | livro.setPreco(Double.parseDouble(preco));
60 |
61 | return livro;
62 | }
63 |
64 | /**
65 | * Ler os dados do caderno a ser cadastrado.
66 | * @return Um caderno a partir dos dados de entrada
67 | */
68 | //TODO Método para ler o caderno
69 |
70 | /**
71 | * Ler os dados do pedido e retorna um objeto a partir destes.
72 | * @return Um pedido a partir dos dados de entrada
73 | */
74 | public static Pedido lerPedido(Banco banco) {
75 |
76 | ProdutoNegocio produtoNegocio = new ProdutoNegocio(banco);
77 |
78 | System.out.println("Cadastrando pedido...");
79 | Pedido pedido = new Pedido();
80 |
81 | String opcao = "s";
82 | do {
83 |
84 | System.out.println("Digite o código do produto(livro/Caderno)");
85 | String codigo = lerDado();
86 |
87 | Optional resultado = produtoNegocio.consultar(codigo);
88 | if (resultado.isPresent()) {
89 |
90 | Produto produto = resultado.get();
91 |
92 | System.out.println("Digite a quantidade");
93 | String quantidade = lerDado();
94 | produto.setQuantidade(Integer.parseInt(quantidade));
95 |
96 | pedido.getProdutos().add(produto);
97 | } else {
98 | System.out.println("Produto inexistente. Escolha um produto válido");
99 | }
100 |
101 | System.out.println("Deseja selecionar mais um produto? s/n");
102 | opcao = lerDado();
103 | } while("s".equals(opcao));
104 |
105 | return pedido;
106 | }
107 |
108 | /**
109 | * Ler os dados do cupom e retorna um objeto a partir destes.
110 | * @return O cupom a partir dos dados de entrada
111 | */
112 | public static Optional lerCupom(Banco banco) {
113 |
114 | System.out.println("Caso queira utilizar algum cupom escolha entre: CUPOM2, CUPOM5, CUPOM7. Se não desejar, deixe em branco.");
115 |
116 | String desconto = lerDado();
117 |
118 | for (Cupom cupom: banco.getCupons()) {
119 | if (cupom.getCodigo().equalsIgnoreCase(desconto)) {
120 | return Optional.of(cupom);
121 | }
122 | }
123 |
124 | return Optional.empty();
125 | }
126 |
127 | }
128 |
--------------------------------------------------------------------------------