From 4c3ffca3d130832e4c138443ffbafc2618217852 Mon Sep 17 00:00:00 2001 From: willbertini Date: Wed, 24 Apr 2024 00:56:37 -0300 Subject: [PATCH 01/10] semana6 --- pom.xml | 9 +++ src/main/java/br/com/alura/comex/Cliente.java | 46 +++++++++++++ .../java/br/com/alura/comex/Endereco.java | 31 +++++++++ src/main/java/br/com/alura/comex/Main.java | 4 +- src/main/java/br/com/alura/comex/Pedido.java | 66 +++++++++---------- .../br/com/alura/comex/ProcessadorDeCsv.java | 7 +- src/main/java/br/com/alura/comex/Produto.java | 61 +++++++++++++++++ .../java/br/com/alura/comex/TestaPedido.java | 22 +++++++ .../java/br/com/alura/comex/TesteCliente.java | 17 +++++ .../java/br/com/alura/comex/TesteProduto.java | 27 ++++++++ .../alura/comex/integracao/TestaViaCep.java | 9 +++ .../comex/integracao/ViaCepResponse.java | 61 +++++++++++++++++ .../alura/comex/integracao/ViaCepService.java | 35 ++++++++++ 13 files changed, 358 insertions(+), 37 deletions(-) create mode 100644 src/main/java/br/com/alura/comex/Cliente.java create mode 100644 src/main/java/br/com/alura/comex/Endereco.java create mode 100644 src/main/java/br/com/alura/comex/Produto.java create mode 100644 src/main/java/br/com/alura/comex/TestaPedido.java create mode 100644 src/main/java/br/com/alura/comex/TesteCliente.java create mode 100644 src/main/java/br/com/alura/comex/TesteProduto.java create mode 100644 src/main/java/br/com/alura/comex/integracao/TestaViaCep.java create mode 100644 src/main/java/br/com/alura/comex/integracao/ViaCepResponse.java create mode 100644 src/main/java/br/com/alura/comex/integracao/ViaCepService.java diff --git a/pom.xml b/pom.xml index 2206296f..fafae547 100644 --- a/pom.xml +++ b/pom.xml @@ -40,6 +40,15 @@ opencsv 5.7.1 + + + + com.google.code.gson + gson + 2.10.1 + + + \ No newline at end of file diff --git a/src/main/java/br/com/alura/comex/Cliente.java b/src/main/java/br/com/alura/comex/Cliente.java new file mode 100644 index 00000000..973a2467 --- /dev/null +++ b/src/main/java/br/com/alura/comex/Cliente.java @@ -0,0 +1,46 @@ +package br.com.alura.comex; + +public class Cliente { + private String nome; + private String cpf; + private String email; + private String profissao; + private String telefone; + private Endereco endereco; + + public void setNome(String nome) { + this.nome = nome; + } + + public void setCpf(String cpf) { + this.cpf = cpf; + } + + public void setEmail(String email) { + this.email = email; + } + + public void setProfissao(String profissao) { + this.profissao = profissao; + } + + public void setTelefone(String telefone) { + this.telefone = telefone; + } + + public void setEndereco(Endereco endereco) { + this.endereco = endereco; + } + + @Override + public String toString() { + return "Cliente" + + "Nome='" + nome + '\'' + + ", Cpf='" + cpf + '\'' + + ", E-mail='" + email + '\'' + + ", Profissão='" + profissao + '\'' + + ", Telefone='" + telefone + '\'' + + ", Endereco=" + endereco; + + } +} diff --git a/src/main/java/br/com/alura/comex/Endereco.java b/src/main/java/br/com/alura/comex/Endereco.java new file mode 100644 index 00000000..14534da6 --- /dev/null +++ b/src/main/java/br/com/alura/comex/Endereco.java @@ -0,0 +1,31 @@ +package br.com.alura.comex; + +public class Endereco { + private String bairro; + private String cidade; + private String complemento; + private String estado; + private String rua; + private int numero; + + public Endereco(String bairro, String cidade, String complemento, String estado, String rua, int numero) { + this.bairro = bairro; + this.cidade = cidade; + this.complemento = complemento; + this.estado = estado; + this.rua = rua; + this.numero = numero; + } + + @Override + public String toString() { + return "Endereco{" + + "bairro='" + bairro + '\'' + + ", cidade='" + cidade + '\'' + + ", complemento='" + complemento + '\'' + + ", estado='" + estado + '\'' + + ", rua='" + rua + '\'' + + ", numero=" + numero + + '}'; + } +} diff --git a/src/main/java/br/com/alura/comex/Main.java b/src/main/java/br/com/alura/comex/Main.java index 8b26d4ac..ff8c1234 100644 --- a/src/main/java/br/com/alura/comex/Main.java +++ b/src/main/java/br/com/alura/comex/Main.java @@ -16,7 +16,7 @@ public class Main { private static final Logger logger = LoggerFactory.getLogger(Main.class); public static void main(String[] args) throws IOException, URISyntaxException { - Pedido[] pedidos = ProcessadorDeCsv.processaArquivo("pedidos.csv"); +/* Pedido[] pedidos = ProcessadorDeCsv.processaArquivo("pedidos.csv"); int totalDeProdutosVendidos = 0; int totalDePedidosRealizados = 0; @@ -77,5 +77,7 @@ public static void main(String[] args) throws IOException, URISyntaxException { logger.info("PEDIDO MAIS BARATO: {} ({})", NumberFormat.getCurrencyInstance(new Locale("pt", "BR")).format(pedidoMaisBarato.getPreco().multiply(new BigDecimal(pedidoMaisBarato.getQuantidade())).setScale(2, RoundingMode.HALF_DOWN)), pedidoMaisBarato.getProduto()); logger.info("PEDIDO MAIS CARO: {} ({})\n", NumberFormat.getCurrencyInstance(new Locale("pt", "BR")).format(pedidoMaisCaro.getPreco().multiply(new BigDecimal(pedidoMaisCaro.getQuantidade())).setScale(2, RoundingMode.HALF_DOWN)), pedidoMaisCaro.getProduto()); logger.info("### FIM DO RELATÓRIO ###"); + + */ } } \ No newline at end of file diff --git a/src/main/java/br/com/alura/comex/Pedido.java b/src/main/java/br/com/alura/comex/Pedido.java index 24fcc663..caccc920 100644 --- a/src/main/java/br/com/alura/comex/Pedido.java +++ b/src/main/java/br/com/alura/comex/Pedido.java @@ -5,58 +5,58 @@ public class Pedido { - private String categoria; - private String produto; - private String cliente; - + private Long id; + private Cliente cliente; private BigDecimal preco; - private int quantidade; - - private LocalDate data; + private Integer quantidade; - public Pedido(String categoria, String produto, String cliente, BigDecimal preco, int quantidade, LocalDate data) { - this.categoria = categoria; - this.produto = produto; - this.cliente = cliente; - this.preco = preco; - this.quantidade = quantidade; - this.data = data; - } + //public LocalDate getData() { + // return data; + //} - public String getCategoria() { - return categoria; + public void setId(Long id) { + this.id = id; } - public String getProduto() { - return produto; - } - - public String getCliente() { - return cliente; + public void setCliente(Cliente cliente) { + this.cliente = cliente; } - public BigDecimal getPreco() { - return preco; + public void setPreco(BigDecimal preco) { + this.preco = preco; } - public int getQuantidade() { - return quantidade; + public void setQuantidade(Integer quantidade) { + this.quantidade = quantidade; } - public LocalDate getData() { - return data; + public Pedido(Cliente cliente, BigDecimal preco, Integer quantidade) { + this.cliente = cliente; + this.preco = preco; + this.quantidade = quantidade; } @Override public String toString() { return "Pedido{" + - "categoria='" + categoria + '\'' + - ", produto='" + produto + '\'' + - ", cliente='" + cliente + '\'' + + "id=" + id + + ", cliente=" + cliente + ", preco=" + preco + ", quantidade=" + quantidade + - ", data=" + data + '}'; } + public BigDecimal getValorTotal() { + return this.preco.multiply(new BigDecimal(this.quantidade)); + } + + + public boolean isMaisBaratoQue(Pedido outroPedido) { + return this.getValorTotal().compareTo(outroPedido.getValorTotal()) == -1; + } + + public boolean isMaisCaroQue(Pedido outroPedido) { + return this.getValorTotal().compareTo(outroPedido.getValorTotal()) == 1; + } + } \ No newline at end of file diff --git a/src/main/java/br/com/alura/comex/ProcessadorDeCsv.java b/src/main/java/br/com/alura/comex/ProcessadorDeCsv.java index 75ce403f..870271f8 100644 --- a/src/main/java/br/com/alura/comex/ProcessadorDeCsv.java +++ b/src/main/java/br/com/alura/comex/ProcessadorDeCsv.java @@ -12,7 +12,7 @@ public class ProcessadorDeCsv { - public static Pedido[] processaArquivo(String nomeDoArquivo) { +/* public static Pedido[] processaArquivo(String nomeDoArquivo) { try { URL recursoCSV = ClassLoader.getSystemResource(nomeDoArquivo); Path caminhoDoArquivo = caminhoDoArquivo = Path.of(recursoCSV.toURI()); @@ -50,5 +50,6 @@ public static Pedido[] processaArquivo(String nomeDoArquivo) { } catch (IOException e) { throw new RuntimeException("Erro ao abrir Scanner para processar arquivo!"); } - } -} \ No newline at end of file + } */ +} + diff --git a/src/main/java/br/com/alura/comex/Produto.java b/src/main/java/br/com/alura/comex/Produto.java new file mode 100644 index 00000000..28095578 --- /dev/null +++ b/src/main/java/br/com/alura/comex/Produto.java @@ -0,0 +1,61 @@ +package br.com.alura.comex; + +import java.util.Objects; + +public class Produto { + private String nome; + private String descricao; + private Double precoUnitario; + private int quantidade; + + public String getNome() { + return nome; + } + + public void setNome(String nome) { + this.nome = nome; + } + + public String getDescricao() { + return descricao; + } + + public void setDescricao(String descricao) { + this.descricao = descricao; + } + + public Double getPrecoUnitario() { + return precoUnitario; + } + + public void setPrecoUnitario(Double precoUnitario) { + this.precoUnitario = precoUnitario; + } + + public int getQuantidade() { + return quantidade; + } + + public void setQuantidade(int quantidade) { + this.quantidade = quantidade; + } + + @Override + public String toString() { + return "Produto{" + + "Nome='" + nome + '\'' + + ", Descrição='" + descricao + '\'' + + ", Preço Unitário=" + precoUnitario + + ", Quantidade=" + quantidade + + '}'; + } + + @Override + public boolean equals(Object objeto) { + if (this == objeto) return true; + if (objeto == null || getClass() != objeto.getClass()) return false; + Produto produto = (Produto) objeto; + return Objects.equals(getNome(), produto.getNome()); + } + +} diff --git a/src/main/java/br/com/alura/comex/TestaPedido.java b/src/main/java/br/com/alura/comex/TestaPedido.java new file mode 100644 index 00000000..68f41260 --- /dev/null +++ b/src/main/java/br/com/alura/comex/TestaPedido.java @@ -0,0 +1,22 @@ +package br.com.alura.comex; + +import java.math.BigDecimal; + +public class TestaPedido { + public static void main(String[] args) { + Cliente clienteUm = new Cliente(); + clienteUm.setNome("Fulano da Silva"); + clienteUm.setCpf("357.852.014-77"); + clienteUm.setEmail("fulanodasilva@gmail.com"); + clienteUm.setProfissao("Assistente Administrativo"); + clienteUm.setTelefone("(11)99852-4141"); + Endereco enderecoClienteUm = new Endereco("Alto","São Paulo","Apto 12","SP","Silva Jardim", 112); + clienteUm.setEndereco(enderecoClienteUm); + + Pedido pedido = new Pedido(clienteUm,new BigDecimal("2500.0"), 42); + System.out.println(pedido); + + BigDecimal valorTotal = pedido.getValorTotal(); + System.out.println(valorTotal); + } +} \ No newline at end of file diff --git a/src/main/java/br/com/alura/comex/TesteCliente.java b/src/main/java/br/com/alura/comex/TesteCliente.java new file mode 100644 index 00000000..d0d4cc44 --- /dev/null +++ b/src/main/java/br/com/alura/comex/TesteCliente.java @@ -0,0 +1,17 @@ +package br.com.alura.comex; + +public class TesteCliente { + + public static void main(String[] args) { + Cliente clienteUm = new Cliente(); + clienteUm.setNome("Fulano da Silva"); + clienteUm.setCpf("357.852.014-77"); + clienteUm.setEmail("fulanodasilva@gmail.com"); + clienteUm.setProfissao("Assistente Administrativo"); + clienteUm.setTelefone("(11)99852-4141"); + Endereco enderecoClienteUm = new Endereco("Alto","São Paulo","Apto 12","SP","Silva Jardim", 112); + clienteUm.setEndereco(enderecoClienteUm); + + System.out.println(clienteUm); + } +} diff --git a/src/main/java/br/com/alura/comex/TesteProduto.java b/src/main/java/br/com/alura/comex/TesteProduto.java new file mode 100644 index 00000000..c928307b --- /dev/null +++ b/src/main/java/br/com/alura/comex/TesteProduto.java @@ -0,0 +1,27 @@ +package br.com.alura.comex; + +public class TesteProduto { + public static void main(String[] args) { + System.out.println("teste de produto"); + + Produto produtoUm = new Produto(); + produtoUm.setNome("Teclado"); + produtoUm.setDescricao("Teclado USB ABNT2"); + produtoUm.setPrecoUnitario(38.00); + produtoUm.setQuantidade(2); + System.out.println(produtoUm); + + Produto produtoDois = new Produto(); + produtoDois.setNome("Mouse"); + produtoDois.setDescricao("Mouse USB"); + produtoDois.setPrecoUnitario(14.00); + produtoDois.setQuantidade(5); + System.out.println(produtoDois); + + if (produtoUm.equals(produtoDois)){ + System.out.println("Os produtos são iguais"); + } else System.out.println("Os produtos não são iguais"); + + + } +} diff --git a/src/main/java/br/com/alura/comex/integracao/TestaViaCep.java b/src/main/java/br/com/alura/comex/integracao/TestaViaCep.java new file mode 100644 index 00000000..eab5dce4 --- /dev/null +++ b/src/main/java/br/com/alura/comex/integracao/TestaViaCep.java @@ -0,0 +1,9 @@ +package br.com.alura.comex.integracao; + +public class TestaViaCep { + public static void main(String[] args) { + String cep ="01001000"; + + ViaCepResponse retorno = new ViaCepService().buscaPorCep(cep); + } +} diff --git a/src/main/java/br/com/alura/comex/integracao/ViaCepResponse.java b/src/main/java/br/com/alura/comex/integracao/ViaCepResponse.java new file mode 100644 index 00000000..745e8f6a --- /dev/null +++ b/src/main/java/br/com/alura/comex/integracao/ViaCepResponse.java @@ -0,0 +1,61 @@ +package br.com.alura.comex.integracao; + +public class ViaCepResponse { + + String cep; + String logradouro; + String complemento; + String bairro; + String localidade; + + @Override + public String toString() { + return "ViaCepResponse{" + + "cep='" + cep + '\'' + + ", logradouro='" + logradouro + '\'' + + ", complemento='" + complemento + '\'' + + ", bairro='" + bairro + '\'' + + ", localidade='" + localidade + '\'' + + '}'; + } + + public String getCep() { + return cep; + } + + public void setCep(String cep) { + this.cep = cep; + } + + public String getLogradouro() { + return logradouro; + } + + public void setLogradouro(String logradouro) { + this.logradouro = logradouro; + } + + public String getComplemento() { + return complemento; + } + + public void setComplemento(String complemento) { + this.complemento = complemento; + } + + public String getBairro() { + return bairro; + } + + public void setBairro(String bairro) { + this.bairro = bairro; + } + + public String getLocalidade() { + return localidade; + } + + public void setLocalidade(String localidade) { + this.localidade = localidade; + } +} diff --git a/src/main/java/br/com/alura/comex/integracao/ViaCepService.java b/src/main/java/br/com/alura/comex/integracao/ViaCepService.java new file mode 100644 index 00000000..24bc89bb --- /dev/null +++ b/src/main/java/br/com/alura/comex/integracao/ViaCepService.java @@ -0,0 +1,35 @@ +package br.com.alura.comex.integracao; + +import com.google.gson.Gson; + +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; + +public class ViaCepService { + + public ViaCepResponse buscaPorCep(String cep) { + + URI endereco = URI.create("https://viacep.com.br/ws/" + cep + "/json/"); + + HttpRequest requisicao = HttpRequest + .newBuilder() + .uri(endereco) + .build(); + + try { + HttpResponse response = HttpClient + .newBuilder() + .build() + .send(requisicao,HttpResponse.BodyHandlers.ofString()); + + return new Gson().fromJson(response.body(), ViaCepResponse.class); + + } catch (Exception ex) { + System.out.println(ex.getMessage()); + } + + return null; + } +} From 6abb565e59c5328242617ee03889a3aa3f9e9de9 Mon Sep 17 00:00:00 2001 From: willbertini Date: Wed, 1 May 2024 13:44:17 -0300 Subject: [PATCH 02/10] Mapeamento das classes Cliente e Endereco --- pom.xml | 30 ++++++++++++-- src/main/java/br/com/alura/comex/Cliente.java | 39 +++++++++++++++++++ .../java/br/com/alura/comex/Endereco.java | 17 +++++++- .../java/br/com/alura/comex/TestaPedido.java | 2 +- .../java/br/com/alura/comex/TesteCliente.java | 2 +- .../integracao/TesteJpaComHibernate.java | 25 ++++++++++++ src/main/resources/META-INF/persistence.xml | 23 +++++++++++ 7 files changed, 131 insertions(+), 7 deletions(-) create mode 100644 src/main/java/br/com/alura/comex/integracao/TesteJpaComHibernate.java create mode 100644 src/main/resources/META-INF/persistence.xml diff --git a/pom.xml b/pom.xml index fafae547..d40d07f7 100644 --- a/pom.xml +++ b/pom.xml @@ -6,11 +6,14 @@ br.com.alura comex - 0.0.1-SNAPSHOT + 0.1.3-SNAPSHOT 17 17 + 17 + 8.3.0 + 10 @@ -41,14 +44,35 @@ 5.7.1 - com.google.code.gson gson - 2.10.1 + 2.9.0 + + org.hibernate + hibernate-entitymanager + 5.4.27.Final + + + + com.mysql + mysql-connector-j + ${mysql.version} + + + com.oracle.database.jdbc + ojdbc8 + 23.2.0.0 + + + + + + + \ No newline at end of file diff --git a/src/main/java/br/com/alura/comex/Cliente.java b/src/main/java/br/com/alura/comex/Cliente.java index 973a2467..faea7cca 100644 --- a/src/main/java/br/com/alura/comex/Cliente.java +++ b/src/main/java/br/com/alura/comex/Cliente.java @@ -1,11 +1,24 @@ package br.com.alura.comex; +import javax.persistence.*; + +@Entity +@Table(name = "cliente") public class Cliente { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + @Column(name = "nome", length = 120, nullable = false) private String nome; + @Column(name = "cpf", length = 11, nullable = false) private String cpf; + @Column(name = "email", length = 120, nullable = false) private String email; + @Column(name = "profissao", length = 80, nullable = true) private String profissao; + @Column(name = "telefone", length = 25, nullable = true) private String telefone; + @Embedded private Endereco endereco; public void setNome(String nome) { @@ -32,6 +45,14 @@ public void setEndereco(Endereco endereco) { this.endereco = endereco; } + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + @Override public String toString() { return "Cliente" + @@ -43,4 +64,22 @@ public String toString() { ", Endereco=" + endereco; } + + public Cliente() { + + } + + public Cliente(String nome, String cpf, String email) { + this.nome = nome; + this.cpf = cpf; + this.email = email; + } + + public Cliente(String nome, String cpf, Endereco endereco, String email) { + this.nome = nome; + this.cpf = cpf; + this.endereco = endereco; + this.email = email; + } + } diff --git a/src/main/java/br/com/alura/comex/Endereco.java b/src/main/java/br/com/alura/comex/Endereco.java index 14534da6..2167eb90 100644 --- a/src/main/java/br/com/alura/comex/Endereco.java +++ b/src/main/java/br/com/alura/comex/Endereco.java @@ -1,14 +1,27 @@ package br.com.alura.comex; +import javax.persistence.Column; +import javax.persistence.Embeddable; + +@Embeddable public class Endereco { + @Column(name = "bairro", length = 80, nullable = false) private String bairro; + @Column(name = "cidade", length = 100, nullable = false) private String cidade; + @Column(name = "complemento", length = 120, nullable = false) private String complemento; + @Column(name = "estado", length = 60, nullable = false) private String estado; + @Column(name = "rua", length = 120, nullable = false) private String rua; - private int numero; + @Column(name = "numero", length = 20, nullable = false) + private String numero; + + public Endereco() { + } - public Endereco(String bairro, String cidade, String complemento, String estado, String rua, int numero) { + public Endereco(String bairro, String cidade, String complemento, String estado, String rua, String numero) { this.bairro = bairro; this.cidade = cidade; this.complemento = complemento; diff --git a/src/main/java/br/com/alura/comex/TestaPedido.java b/src/main/java/br/com/alura/comex/TestaPedido.java index 68f41260..a40c7c03 100644 --- a/src/main/java/br/com/alura/comex/TestaPedido.java +++ b/src/main/java/br/com/alura/comex/TestaPedido.java @@ -10,7 +10,7 @@ public static void main(String[] args) { clienteUm.setEmail("fulanodasilva@gmail.com"); clienteUm.setProfissao("Assistente Administrativo"); clienteUm.setTelefone("(11)99852-4141"); - Endereco enderecoClienteUm = new Endereco("Alto","São Paulo","Apto 12","SP","Silva Jardim", 112); + Endereco enderecoClienteUm = new Endereco("Alto","São Paulo","Apto 12","SP","Silva Jardim", "112"); clienteUm.setEndereco(enderecoClienteUm); Pedido pedido = new Pedido(clienteUm,new BigDecimal("2500.0"), 42); diff --git a/src/main/java/br/com/alura/comex/TesteCliente.java b/src/main/java/br/com/alura/comex/TesteCliente.java index d0d4cc44..0a8651c1 100644 --- a/src/main/java/br/com/alura/comex/TesteCliente.java +++ b/src/main/java/br/com/alura/comex/TesteCliente.java @@ -9,7 +9,7 @@ public static void main(String[] args) { clienteUm.setEmail("fulanodasilva@gmail.com"); clienteUm.setProfissao("Assistente Administrativo"); clienteUm.setTelefone("(11)99852-4141"); - Endereco enderecoClienteUm = new Endereco("Alto","São Paulo","Apto 12","SP","Silva Jardim", 112); + Endereco enderecoClienteUm = new Endereco("Alto","São Paulo","Apto 12","SP","Silva Jardim", "112"); clienteUm.setEndereco(enderecoClienteUm); System.out.println(clienteUm); diff --git a/src/main/java/br/com/alura/comex/integracao/TesteJpaComHibernate.java b/src/main/java/br/com/alura/comex/integracao/TesteJpaComHibernate.java new file mode 100644 index 00000000..d401600e --- /dev/null +++ b/src/main/java/br/com/alura/comex/integracao/TesteJpaComHibernate.java @@ -0,0 +1,25 @@ +package br.com.alura.comex.integracao; + +import br.com.alura.comex.Cliente; +import br.com.alura.comex.Endereco; + +import javax.persistence.EntityManager; +import javax.persistence.Persistence; + +public class TesteJpaComHibernate { + public static void main(String[] args) { + EntityManager entityManager = Persistence + .createEntityManagerFactory("mysql") + .createEntityManager(); + + Cliente novoCliente = new Cliente("Willian","88777885445", + new Endereco("Alto","Piracicaba","Apto 999", + "SP", "Rua Wer Fgh","444"),"will@alura.com"); + + entityManager.getTransaction().begin(); + entityManager.persist(novoCliente); + entityManager.getTransaction().commit(); + + + } +} diff --git a/src/main/resources/META-INF/persistence.xml b/src/main/resources/META-INF/persistence.xml new file mode 100644 index 00000000..95eae127 --- /dev/null +++ b/src/main/resources/META-INF/persistence.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 045d550a506b09e85522b0478d737cd4a8b879f8 Mon Sep 17 00:00:00 2001 From: willbertini Date: Wed, 1 May 2024 15:42:39 -0300 Subject: [PATCH 03/10] Criar e mapear entidade Categoria --- src/main/java/br/com/alura/comex/JPAUtil.java | 13 ++++++++++ .../br/com/alura/comex/TestaCategoria.java | 17 +++++++++++++ .../java/br/com/alura/comex/TestaPedido.java | 4 +++ .../java/br/com/alura/comex/TesteCliente.java | 3 +++ .../com/alura/comex/TesteJpaComHibernate.java | 22 ++++++++++++++++ .../java/br/com/alura/comex/TesteProduto.java | 2 ++ .../br/com/alura/comex/dao/CategoriaDao.java | 16 ++++++++++++ .../br/com/alura/comex/dao/ClienteDao.java | 20 +++++++++++++++ .../integracao/TesteJpaComHibernate.java | 25 ------------------- .../br/com/alura/comex/model/Categoria.java | 23 +++++++++++++++++ .../com/alura/comex/{ => model}/Cliente.java | 2 +- .../com/alura/comex/{ => model}/Endereco.java | 2 +- .../com/alura/comex/{ => model}/Pedido.java | 3 +-- .../com/alura/comex/{ => model}/Produto.java | 2 +- 14 files changed, 124 insertions(+), 30 deletions(-) create mode 100644 src/main/java/br/com/alura/comex/JPAUtil.java create mode 100644 src/main/java/br/com/alura/comex/TestaCategoria.java create mode 100644 src/main/java/br/com/alura/comex/TesteJpaComHibernate.java create mode 100644 src/main/java/br/com/alura/comex/dao/CategoriaDao.java create mode 100644 src/main/java/br/com/alura/comex/dao/ClienteDao.java delete mode 100644 src/main/java/br/com/alura/comex/integracao/TesteJpaComHibernate.java create mode 100644 src/main/java/br/com/alura/comex/model/Categoria.java rename src/main/java/br/com/alura/comex/{ => model}/Cliente.java (98%) rename src/main/java/br/com/alura/comex/{ => model}/Endereco.java (97%) rename src/main/java/br/com/alura/comex/{ => model}/Pedido.java (96%) rename src/main/java/br/com/alura/comex/{ => model}/Produto.java (97%) diff --git a/src/main/java/br/com/alura/comex/JPAUtil.java b/src/main/java/br/com/alura/comex/JPAUtil.java new file mode 100644 index 00000000..9ebd05be --- /dev/null +++ b/src/main/java/br/com/alura/comex/JPAUtil.java @@ -0,0 +1,13 @@ +package br.com.alura.comex; + +import javax.persistence.EntityManager; +import javax.persistence.Persistence; + +public class JPAUtil { + + public static EntityManager getEntityManager() { + return Persistence + .createEntityManagerFactory("mysql") + .createEntityManager(); + } +} diff --git a/src/main/java/br/com/alura/comex/TestaCategoria.java b/src/main/java/br/com/alura/comex/TestaCategoria.java new file mode 100644 index 00000000..74755dec --- /dev/null +++ b/src/main/java/br/com/alura/comex/TestaCategoria.java @@ -0,0 +1,17 @@ +package br.com.alura.comex; + +import br.com.alura.comex.dao.CategoriaDao; +import br.com.alura.comex.model.Categoria; + +public class TestaCategoria { + + public static void main(String[] args) { + + Categoria novaCategoria = new Categoria("Informática"); + CategoriaDao categoriaDao = new CategoriaDao(); + categoriaDao.cadastra(novaCategoria); + + //a linha abaixo tem o mesmo resultado: + //new CategoriaDao().cadastrar(new Categoria("Veículo")); + } +} diff --git a/src/main/java/br/com/alura/comex/TestaPedido.java b/src/main/java/br/com/alura/comex/TestaPedido.java index a40c7c03..e849c906 100644 --- a/src/main/java/br/com/alura/comex/TestaPedido.java +++ b/src/main/java/br/com/alura/comex/TestaPedido.java @@ -1,5 +1,9 @@ package br.com.alura.comex; +import br.com.alura.comex.model.Cliente; +import br.com.alura.comex.model.Endereco; +import br.com.alura.comex.model.Pedido; + import java.math.BigDecimal; public class TestaPedido { diff --git a/src/main/java/br/com/alura/comex/TesteCliente.java b/src/main/java/br/com/alura/comex/TesteCliente.java index 0a8651c1..1d1ce0d6 100644 --- a/src/main/java/br/com/alura/comex/TesteCliente.java +++ b/src/main/java/br/com/alura/comex/TesteCliente.java @@ -1,5 +1,8 @@ package br.com.alura.comex; +import br.com.alura.comex.model.Cliente; +import br.com.alura.comex.model.Endereco; + public class TesteCliente { public static void main(String[] args) { diff --git a/src/main/java/br/com/alura/comex/TesteJpaComHibernate.java b/src/main/java/br/com/alura/comex/TesteJpaComHibernate.java new file mode 100644 index 00000000..fb7184a9 --- /dev/null +++ b/src/main/java/br/com/alura/comex/TesteJpaComHibernate.java @@ -0,0 +1,22 @@ +package br.com.alura.comex; + +import br.com.alura.comex.dao.ClienteDao; +import br.com.alura.comex.model.Cliente; +import br.com.alura.comex.model.Endereco; +import javax.persistence.EntityManager; + +public class TesteJpaComHibernate { + + public static void main(String[] args) { + + Cliente novoCliente = new Cliente("Willian","88777885445", + new Endereco("Alto","Piracicaba","Apto 999", + "SP", "Rua Wer Fgh","444"),"will@alura.com"); + + ClienteDao clienteDao = new ClienteDao(); + clienteDao.cadastra(novoCliente); + + + } + +} diff --git a/src/main/java/br/com/alura/comex/TesteProduto.java b/src/main/java/br/com/alura/comex/TesteProduto.java index c928307b..c4bc7f20 100644 --- a/src/main/java/br/com/alura/comex/TesteProduto.java +++ b/src/main/java/br/com/alura/comex/TesteProduto.java @@ -1,5 +1,7 @@ package br.com.alura.comex; +import br.com.alura.comex.model.Produto; + public class TesteProduto { public static void main(String[] args) { System.out.println("teste de produto"); diff --git a/src/main/java/br/com/alura/comex/dao/CategoriaDao.java b/src/main/java/br/com/alura/comex/dao/CategoriaDao.java new file mode 100644 index 00000000..259b61fb --- /dev/null +++ b/src/main/java/br/com/alura/comex/dao/CategoriaDao.java @@ -0,0 +1,16 @@ +package br.com.alura.comex.dao; + +import br.com.alura.comex.JPAUtil; +import br.com.alura.comex.model.Categoria; + +import javax.persistence.EntityManager; + +public class CategoriaDao { + public void cadastra(Categoria novaCategoria) { + EntityManager entityManager = JPAUtil.getEntityManager(); + + entityManager.getTransaction().begin(); + entityManager.persist(novaCategoria); + entityManager.getTransaction().commit(); + } +} diff --git a/src/main/java/br/com/alura/comex/dao/ClienteDao.java b/src/main/java/br/com/alura/comex/dao/ClienteDao.java new file mode 100644 index 00000000..69329b1b --- /dev/null +++ b/src/main/java/br/com/alura/comex/dao/ClienteDao.java @@ -0,0 +1,20 @@ +package br.com.alura.comex.dao; + +import br.com.alura.comex.JPAUtil; +import br.com.alura.comex.model.Cliente; + +import javax.persistence.EntityManager; + +public class ClienteDao { + + + public void cadastra(Cliente novoCliente) { + + EntityManager entityManager = JPAUtil.getEntityManager(); + + entityManager.getTransaction().begin(); + entityManager.persist(novoCliente); + entityManager.getTransaction().commit(); + + } +} diff --git a/src/main/java/br/com/alura/comex/integracao/TesteJpaComHibernate.java b/src/main/java/br/com/alura/comex/integracao/TesteJpaComHibernate.java deleted file mode 100644 index d401600e..00000000 --- a/src/main/java/br/com/alura/comex/integracao/TesteJpaComHibernate.java +++ /dev/null @@ -1,25 +0,0 @@ -package br.com.alura.comex.integracao; - -import br.com.alura.comex.Cliente; -import br.com.alura.comex.Endereco; - -import javax.persistence.EntityManager; -import javax.persistence.Persistence; - -public class TesteJpaComHibernate { - public static void main(String[] args) { - EntityManager entityManager = Persistence - .createEntityManagerFactory("mysql") - .createEntityManager(); - - Cliente novoCliente = new Cliente("Willian","88777885445", - new Endereco("Alto","Piracicaba","Apto 999", - "SP", "Rua Wer Fgh","444"),"will@alura.com"); - - entityManager.getTransaction().begin(); - entityManager.persist(novoCliente); - entityManager.getTransaction().commit(); - - - } -} diff --git a/src/main/java/br/com/alura/comex/model/Categoria.java b/src/main/java/br/com/alura/comex/model/Categoria.java new file mode 100644 index 00000000..1460380a --- /dev/null +++ b/src/main/java/br/com/alura/comex/model/Categoria.java @@ -0,0 +1,23 @@ +package br.com.alura.comex.model; + + +import javax.persistence.*; + +@Entity +@Table(name = "categoria") +public class Categoria { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + @Column(name = "nome", nullable = false) + private String nome; + @Column(name = "status", nullable = false) + private Boolean status = Boolean.TRUE; + + public Categoria() { + + } + public Categoria(String nome) { + this.nome = nome; + } +} diff --git a/src/main/java/br/com/alura/comex/Cliente.java b/src/main/java/br/com/alura/comex/model/Cliente.java similarity index 98% rename from src/main/java/br/com/alura/comex/Cliente.java rename to src/main/java/br/com/alura/comex/model/Cliente.java index faea7cca..76128f9b 100644 --- a/src/main/java/br/com/alura/comex/Cliente.java +++ b/src/main/java/br/com/alura/comex/model/Cliente.java @@ -1,4 +1,4 @@ -package br.com.alura.comex; +package br.com.alura.comex.model; import javax.persistence.*; diff --git a/src/main/java/br/com/alura/comex/Endereco.java b/src/main/java/br/com/alura/comex/model/Endereco.java similarity index 97% rename from src/main/java/br/com/alura/comex/Endereco.java rename to src/main/java/br/com/alura/comex/model/Endereco.java index 2167eb90..7aee9744 100644 --- a/src/main/java/br/com/alura/comex/Endereco.java +++ b/src/main/java/br/com/alura/comex/model/Endereco.java @@ -1,4 +1,4 @@ -package br.com.alura.comex; +package br.com.alura.comex.model; import javax.persistence.Column; import javax.persistence.Embeddable; diff --git a/src/main/java/br/com/alura/comex/Pedido.java b/src/main/java/br/com/alura/comex/model/Pedido.java similarity index 96% rename from src/main/java/br/com/alura/comex/Pedido.java rename to src/main/java/br/com/alura/comex/model/Pedido.java index caccc920..82a04195 100644 --- a/src/main/java/br/com/alura/comex/Pedido.java +++ b/src/main/java/br/com/alura/comex/model/Pedido.java @@ -1,7 +1,6 @@ -package br.com.alura.comex; +package br.com.alura.comex.model; import java.math.BigDecimal; -import java.time.LocalDate; public class Pedido { diff --git a/src/main/java/br/com/alura/comex/Produto.java b/src/main/java/br/com/alura/comex/model/Produto.java similarity index 97% rename from src/main/java/br/com/alura/comex/Produto.java rename to src/main/java/br/com/alura/comex/model/Produto.java index 28095578..3068bd35 100644 --- a/src/main/java/br/com/alura/comex/Produto.java +++ b/src/main/java/br/com/alura/comex/model/Produto.java @@ -1,4 +1,4 @@ -package br.com.alura.comex; +package br.com.alura.comex.model; import java.util.Objects; From d52feab168ec328bfb11b8841a6ae98deb43be59 Mon Sep 17 00:00:00 2001 From: willbertini Date: Wed, 1 May 2024 18:18:01 -0300 Subject: [PATCH 04/10] =?UTF-8?q?Mapeamento=20da=20entidade=20Produto.=20A?= =?UTF-8?q?dapta=C3=A7=C3=B5es=20na=20entidade=20Categoria.=20Entidade=20C?= =?UTF-8?q?liente=20criada=20e=20mapeada.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../br/com/alura/comex/TestaJpaProduto.java | 23 +++++++++++ .../java/br/com/alura/comex/TesteProduto.java | 10 +++-- .../br/com/alura/comex/dao/CategoriaDao.java | 9 ++++ .../br/com/alura/comex/dao/ProdutoDao.java | 17 ++++++++ .../br/com/alura/comex/model/Categoria.java | 2 + .../br/com/alura/comex/model/Produto.java | 41 +++++++++++++++++-- 6 files changed, 95 insertions(+), 7 deletions(-) create mode 100644 src/main/java/br/com/alura/comex/TestaJpaProduto.java create mode 100644 src/main/java/br/com/alura/comex/dao/ProdutoDao.java diff --git a/src/main/java/br/com/alura/comex/TestaJpaProduto.java b/src/main/java/br/com/alura/comex/TestaJpaProduto.java new file mode 100644 index 00000000..c532a4c1 --- /dev/null +++ b/src/main/java/br/com/alura/comex/TestaJpaProduto.java @@ -0,0 +1,23 @@ +package br.com.alura.comex; + +import br.com.alura.comex.dao.CategoriaDao; +import br.com.alura.comex.dao.ProdutoDao; +import br.com.alura.comex.model.Categoria; +import br.com.alura.comex.model.Produto; + +import javax.persistence.EntityManager; +import java.math.BigDecimal; + +public class TestaJpaProduto { + public static void main(String[] args) { + + Categoria categoriaDoBanco = new CategoriaDao().buscarPorId(1L); + + Produto celular = new Produto("Samsung S21","Android 512GB", + new BigDecimal("940.58"), 2, categoriaDoBanco); + + ProdutoDao produtoDao = new ProdutoDao(); + produtoDao.cadastra(celular); + + } +} diff --git a/src/main/java/br/com/alura/comex/TesteProduto.java b/src/main/java/br/com/alura/comex/TesteProduto.java index c4bc7f20..03b60a30 100644 --- a/src/main/java/br/com/alura/comex/TesteProduto.java +++ b/src/main/java/br/com/alura/comex/TesteProduto.java @@ -2,28 +2,30 @@ import br.com.alura.comex.model.Produto; +import java.math.BigDecimal; + public class TesteProduto { public static void main(String[] args) { System.out.println("teste de produto"); - Produto produtoUm = new Produto(); + /*Produto produtoUm = new Produto(); produtoUm.setNome("Teclado"); produtoUm.setDescricao("Teclado USB ABNT2"); - produtoUm.setPrecoUnitario(38.00); + produtoUm.setPrecoUnitario(new BigDecimal(38.00)); produtoUm.setQuantidade(2); System.out.println(produtoUm); Produto produtoDois = new Produto(); produtoDois.setNome("Mouse"); produtoDois.setDescricao("Mouse USB"); - produtoDois.setPrecoUnitario(14.00); + produtoDois.setPrecoUnitario(new BigDecimal(14.00)); produtoDois.setQuantidade(5); System.out.println(produtoDois); if (produtoUm.equals(produtoDois)){ System.out.println("Os produtos são iguais"); } else System.out.println("Os produtos não são iguais"); - +*/ } } diff --git a/src/main/java/br/com/alura/comex/dao/CategoriaDao.java b/src/main/java/br/com/alura/comex/dao/CategoriaDao.java index 259b61fb..e24312c2 100644 --- a/src/main/java/br/com/alura/comex/dao/CategoriaDao.java +++ b/src/main/java/br/com/alura/comex/dao/CategoriaDao.java @@ -13,4 +13,13 @@ public void cadastra(Categoria novaCategoria) { entityManager.persist(novaCategoria); entityManager.getTransaction().commit(); } + + public Categoria buscarPorId(long id) { + EntityManager entityManager = JPAUtil.getEntityManager(); + + Categoria categoriaCarregada = entityManager.find(Categoria.class, id); + + return categoriaCarregada; + + } } diff --git a/src/main/java/br/com/alura/comex/dao/ProdutoDao.java b/src/main/java/br/com/alura/comex/dao/ProdutoDao.java new file mode 100644 index 00000000..d33d496d --- /dev/null +++ b/src/main/java/br/com/alura/comex/dao/ProdutoDao.java @@ -0,0 +1,17 @@ +package br.com.alura.comex.dao; + +import br.com.alura.comex.JPAUtil; +import br.com.alura.comex.model.Produto; + +import javax.persistence.EntityManager; + +public class ProdutoDao { + public void cadastra(Produto celular) { + + EntityManager entityManager = JPAUtil.getEntityManager(); + + entityManager.getTransaction().begin(); + entityManager.persist(celular); + entityManager.getTransaction().commit(); + } +} \ No newline at end of file diff --git a/src/main/java/br/com/alura/comex/model/Categoria.java b/src/main/java/br/com/alura/comex/model/Categoria.java index 1460380a..129c6775 100644 --- a/src/main/java/br/com/alura/comex/model/Categoria.java +++ b/src/main/java/br/com/alura/comex/model/Categoria.java @@ -20,4 +20,6 @@ public Categoria() { public Categoria(String nome) { this.nome = nome; } + + } diff --git a/src/main/java/br/com/alura/comex/model/Produto.java b/src/main/java/br/com/alura/comex/model/Produto.java index 3068bd35..c869e9f1 100644 --- a/src/main/java/br/com/alura/comex/model/Produto.java +++ b/src/main/java/br/com/alura/comex/model/Produto.java @@ -1,12 +1,27 @@ package br.com.alura.comex.model; +import javax.persistence.*; +import java.math.BigDecimal; import java.util.Objects; +@Entity +@Table(name = "produto") public class Produto { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "produto_id") + private Long id; + @Column(name = "nome", nullable = false) private String nome; + @Column(name = "descricao", nullable = true) private String descricao; - private Double precoUnitario; + @Column(name = "precoUnitario", nullable = false) + private BigDecimal precoUnitario; + @Column(name = "quantidade", nullable = false) private int quantidade; + @ManyToOne(fetch = FetchType.EAGER) + @JoinColumn(name = "categoria_id", nullable = false) + private Categoria categoria; public String getNome() { return nome; @@ -24,11 +39,11 @@ public void setDescricao(String descricao) { this.descricao = descricao; } - public Double getPrecoUnitario() { + public BigDecimal getPrecoUnitario() { return precoUnitario; } - public void setPrecoUnitario(Double precoUnitario) { + public void setPrecoUnitario(BigDecimal precoUnitario) { this.precoUnitario = precoUnitario; } @@ -40,6 +55,14 @@ public void setQuantidade(int quantidade) { this.quantidade = quantidade; } + public Categoria getCategoria() { + return categoria; + } + + public void setCategoria(Categoria categoria) { + this.categoria = categoria; + } + @Override public String toString() { return "Produto{" + @@ -58,4 +81,16 @@ public boolean equals(Object objeto) { return Objects.equals(getNome(), produto.getNome()); } + public Produto() { + + } + + public Produto(String nome, String descricao, BigDecimal precoUnitario, int quantidade, Categoria categoria) { + this.nome = nome; + this.descricao = descricao; + this.precoUnitario = precoUnitario; + this.quantidade = quantidade; + this.categoria = categoria; + } } + From 83750867083071191c74d3a5c88667969978c97c Mon Sep 17 00:00:00 2001 From: willbertini Date: Fri, 3 May 2024 01:37:57 -0300 Subject: [PATCH 05/10] =?UTF-8?q?Continua=C3=A7=C3=A3o=20de=20mapeamentos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../br/com/alura/comex/TestaJpaPedido.java | 7 +++ .../java/br/com/alura/comex/TestaPedido.java | 8 +-- .../br/com/alura/comex/dao/ClienteDao.java | 9 ++- .../br/com/alura/comex/dao/PedidoDao.java | 27 +++++++++ .../br/com/alura/comex/dao/ProdutoDao.java | 9 +++ .../br/com/alura/comex/model/Categoria.java | 3 +- .../br/com/alura/comex/model/ItemPedido.java | 46 +++++++++++++++ .../java/br/com/alura/comex/model/Pedido.java | 56 +++++++++++-------- .../comex/model/StatusCategoriaEnum.java | 16 ++++++ .../comex/model/TipoDescontoPedidoEnum.java | 18 ++++++ .../comex/model/TipoDescontoProdutoEnum.java | 17 ++++++ 11 files changed, 187 insertions(+), 29 deletions(-) create mode 100644 src/main/java/br/com/alura/comex/TestaJpaPedido.java create mode 100644 src/main/java/br/com/alura/comex/dao/PedidoDao.java create mode 100644 src/main/java/br/com/alura/comex/model/ItemPedido.java create mode 100644 src/main/java/br/com/alura/comex/model/StatusCategoriaEnum.java create mode 100644 src/main/java/br/com/alura/comex/model/TipoDescontoPedidoEnum.java create mode 100644 src/main/java/br/com/alura/comex/model/TipoDescontoProdutoEnum.java diff --git a/src/main/java/br/com/alura/comex/TestaJpaPedido.java b/src/main/java/br/com/alura/comex/TestaJpaPedido.java new file mode 100644 index 00000000..bb27d85c --- /dev/null +++ b/src/main/java/br/com/alura/comex/TestaJpaPedido.java @@ -0,0 +1,7 @@ +package br.com.alura.comex; + +public class TestaJpaPedido { + public static void main(String[] args) { + + } +} diff --git a/src/main/java/br/com/alura/comex/TestaPedido.java b/src/main/java/br/com/alura/comex/TestaPedido.java index e849c906..f22b42c1 100644 --- a/src/main/java/br/com/alura/comex/TestaPedido.java +++ b/src/main/java/br/com/alura/comex/TestaPedido.java @@ -17,10 +17,10 @@ public static void main(String[] args) { Endereco enderecoClienteUm = new Endereco("Alto","São Paulo","Apto 12","SP","Silva Jardim", "112"); clienteUm.setEndereco(enderecoClienteUm); - Pedido pedido = new Pedido(clienteUm,new BigDecimal("2500.0"), 42); - System.out.println(pedido); + // Pedido pedido = new Pedido(clienteUm,new BigDecimal("2500.0"), 42L); + // System.out.println(pedido); - BigDecimal valorTotal = pedido.getValorTotal(); - System.out.println(valorTotal); + // BigDecimal valorTotal = pedido.getValorTotal(); + //System.out.println(valorTotal); } } \ No newline at end of file diff --git a/src/main/java/br/com/alura/comex/dao/ClienteDao.java b/src/main/java/br/com/alura/comex/dao/ClienteDao.java index 69329b1b..6fd20fae 100644 --- a/src/main/java/br/com/alura/comex/dao/ClienteDao.java +++ b/src/main/java/br/com/alura/comex/dao/ClienteDao.java @@ -1,13 +1,13 @@ package br.com.alura.comex.dao; import br.com.alura.comex.JPAUtil; +import br.com.alura.comex.model.Categoria; import br.com.alura.comex.model.Cliente; import javax.persistence.EntityManager; public class ClienteDao { - public void cadastra(Cliente novoCliente) { EntityManager entityManager = JPAUtil.getEntityManager(); @@ -15,6 +15,13 @@ public void cadastra(Cliente novoCliente) { entityManager.getTransaction().begin(); entityManager.persist(novoCliente); entityManager.getTransaction().commit(); + } + + public Cliente buscarPorId(long id) { + EntityManager entityManager = JPAUtil.getEntityManager(); + + Cliente clienteCarregado = entityManager.find(Cliente.class, id); + return clienteCarregado; } } diff --git a/src/main/java/br/com/alura/comex/dao/PedidoDao.java b/src/main/java/br/com/alura/comex/dao/PedidoDao.java new file mode 100644 index 00000000..3d50ba30 --- /dev/null +++ b/src/main/java/br/com/alura/comex/dao/PedidoDao.java @@ -0,0 +1,27 @@ +package br.com.alura.comex.dao; + +import br.com.alura.comex.JPAUtil; +import br.com.alura.comex.model.Cliente; +import br.com.alura.comex.model.Pedido; + +import javax.persistence.EntityManager; + +public class PedidoDao { + + public void cadastra(Pedido novoPedido) { + + EntityManager entityManager = JPAUtil.getEntityManager(); + + entityManager.getTransaction().begin(); + entityManager.persist(novoPedido); + entityManager.getTransaction().commit(); + } + + public Pedido buscarPorId(long id) { + EntityManager entityManager = JPAUtil.getEntityManager(); + + Pedido pedidoCarregado = entityManager.find(Pedido.class, id); + + return pedidoCarregado; + } +} diff --git a/src/main/java/br/com/alura/comex/dao/ProdutoDao.java b/src/main/java/br/com/alura/comex/dao/ProdutoDao.java index d33d496d..8a152a56 100644 --- a/src/main/java/br/com/alura/comex/dao/ProdutoDao.java +++ b/src/main/java/br/com/alura/comex/dao/ProdutoDao.java @@ -1,6 +1,7 @@ package br.com.alura.comex.dao; import br.com.alura.comex.JPAUtil; +import br.com.alura.comex.model.Pedido; import br.com.alura.comex.model.Produto; import javax.persistence.EntityManager; @@ -14,4 +15,12 @@ public void cadastra(Produto celular) { entityManager.persist(celular); entityManager.getTransaction().commit(); } + + public Produto buscarPorId(long id) { + EntityManager entityManager = JPAUtil.getEntityManager(); + + Produto produtoCarregado = entityManager.find(Produto.class, id); + + return produtoCarregado; + } } \ No newline at end of file diff --git a/src/main/java/br/com/alura/comex/model/Categoria.java b/src/main/java/br/com/alura/comex/model/Categoria.java index 129c6775..a7daef52 100644 --- a/src/main/java/br/com/alura/comex/model/Categoria.java +++ b/src/main/java/br/com/alura/comex/model/Categoria.java @@ -12,7 +12,8 @@ public class Categoria { @Column(name = "nome", nullable = false) private String nome; @Column(name = "status", nullable = false) - private Boolean status = Boolean.TRUE; + @Enumerated(EnumType.STRING) + private StatusCategoriaEnum status = StatusCategoriaEnum.ATIVO; public Categoria() { diff --git a/src/main/java/br/com/alura/comex/model/ItemPedido.java b/src/main/java/br/com/alura/comex/model/ItemPedido.java new file mode 100644 index 00000000..706c3b9e --- /dev/null +++ b/src/main/java/br/com/alura/comex/model/ItemPedido.java @@ -0,0 +1,46 @@ +package br.com.alura.comex.model; + +import javax.persistence.*; +import java.math.BigDecimal; +@Entity +@Table(name = "item_pedido") +public class ItemPedido { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + @OneToMany(fetch = FetchType.LAZY) + @JoinColumn(name = "produto", nullable = false) + private Produto produto; + @OneToMany(fetch = FetchType.LAZY) + @JoinColumn(name = "pedido", nullable = false) + private Pedido pedido; + @Column(name = "precoUnitario", nullable = false) + private BigDecimal precoUnitario; + @Column(name = "quantidade", nullable = false) + private int quantidade; + @Column(name = "desconto", nullable = true) + private BigDecimal desconto = new BigDecimal(0); + @Column(name = "tipo_desconto", , nullable = false) + @Enumerated(EnumType.STRING) + private TipoDescontoProdutoEnum tipoDescontoProduto = TipoDescontoProdutoEnum.NENHUM; + + public ItemPedido(){ + + } + + public ItemPedido(Produto produto, Pedido pedido, BigDecimal precoUnitario, int quantidade, BigDecimal desconto, + TipoDescontoProdutoEnum tipoDescontoProduto) { + this.produto = produto; + this.pedido = pedido; + this.precoUnitario = precoUnitario; + this.quantidade = quantidade; + this.desconto = desconto; + this.tipoDescontoProduto = tipoDescontoProduto; + } + + //obtenha o total considerando preço unitário, quantidade e desconto. + public BigDecimal getTotal(){ + return (this.desconto.subtract( + (this.precoUnitario.multiply(BigDecimal.valueOf(this.quantidade))))); + } +} diff --git a/src/main/java/br/com/alura/comex/model/Pedido.java b/src/main/java/br/com/alura/comex/model/Pedido.java index 82a04195..6a4ecc23 100644 --- a/src/main/java/br/com/alura/comex/model/Pedido.java +++ b/src/main/java/br/com/alura/comex/model/Pedido.java @@ -1,41 +1,51 @@ package br.com.alura.comex.model; +import javax.persistence.*; import java.math.BigDecimal; +import java.util.Date; +@Entity +@Table(name = "pedido") public class Pedido { - + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "cliente_id", nullable = false) private Cliente cliente; - private BigDecimal preco; - private Integer quantidade; + @Column(name = "data", nullable = true) + private Date data = new Date(); + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "itemPedido_id", nullable = false) + private ItemPedido itemPedido; + @Column(name = "desconto", nullable = true) + private BigDecimal desconto; + @Column(name = "status", nullable = false) + @Enumerated(EnumType.STRING) + private StatusCategoriaEnum status = StatusCategoriaEnum.ATIVO; + @Column(name = "tipoDesconto", nullable = true) + @Enumerated(EnumType.STRING) + private TipoDescontoPedidoEnum tipoDescontoPedido = TipoDescontoPedidoEnum.NENHUM; - //public LocalDate getData() { - // return data; - //} + public Pedido(){ - public void setId(Long id) { - this.id = id; } - public void setCliente(Cliente cliente) { + public Pedido(Cliente cliente, Date data, ItemPedido itemPedido, BigDecimal desconto, StatusCategoriaEnum status, + TipoDescontoPedidoEnum tipoDescontoPedido) { this.cliente = cliente; + this.data = data; + this.itemPedido = itemPedido; + this.desconto = desconto; + this.status = status; + this.tipoDescontoPedido = tipoDescontoPedido; } - public void setPreco(BigDecimal preco) { - this.preco = preco; - } - - public void setQuantidade(Integer quantidade) { - this.quantidade = quantidade; + public BigDecimal getDesconto() { + return desconto; } + /*@Override - public Pedido(Cliente cliente, BigDecimal preco, Integer quantidade) { - this.cliente = cliente; - this.preco = preco; - this.quantidade = quantidade; - } - - @Override public String toString() { return "Pedido{" + "id=" + id + @@ -49,7 +59,6 @@ public BigDecimal getValorTotal() { return this.preco.multiply(new BigDecimal(this.quantidade)); } - public boolean isMaisBaratoQue(Pedido outroPedido) { return this.getValorTotal().compareTo(outroPedido.getValorTotal()) == -1; } @@ -57,5 +66,6 @@ public boolean isMaisBaratoQue(Pedido outroPedido) { public boolean isMaisCaroQue(Pedido outroPedido) { return this.getValorTotal().compareTo(outroPedido.getValorTotal()) == 1; } + */ } \ No newline at end of file diff --git a/src/main/java/br/com/alura/comex/model/StatusCategoriaEnum.java b/src/main/java/br/com/alura/comex/model/StatusCategoriaEnum.java new file mode 100644 index 00000000..717c1de4 --- /dev/null +++ b/src/main/java/br/com/alura/comex/model/StatusCategoriaEnum.java @@ -0,0 +1,16 @@ +package br.com.alura.comex.model; + +public enum StatusCategoriaEnum { + ATIVO(Boolean.TRUE), + INATIVO(Boolean.FALSE); + + private Boolean status; + + StatusCategoriaEnum(Boolean status) { + this.status = status; + } + + public boolean getStatus() { + return status; + } +} diff --git a/src/main/java/br/com/alura/comex/model/TipoDescontoPedidoEnum.java b/src/main/java/br/com/alura/comex/model/TipoDescontoPedidoEnum.java new file mode 100644 index 00000000..6f98f3bf --- /dev/null +++ b/src/main/java/br/com/alura/comex/model/TipoDescontoPedidoEnum.java @@ -0,0 +1,18 @@ +package br.com.alura.comex.model; + +public enum TipoDescontoPedidoEnum { + + FIDELIDADE("FIDELIDADE"), + NENHUM("NENHUM"); + + private String tipoDescontoPedido; + + TipoDescontoPedidoEnum(String status) { + this.tipoDescontoPedido = status; + } + + public String getStatus() { + return tipoDescontoPedido; + } +} + diff --git a/src/main/java/br/com/alura/comex/model/TipoDescontoProdutoEnum.java b/src/main/java/br/com/alura/comex/model/TipoDescontoProdutoEnum.java new file mode 100644 index 00000000..0965069a --- /dev/null +++ b/src/main/java/br/com/alura/comex/model/TipoDescontoProdutoEnum.java @@ -0,0 +1,17 @@ +package br.com.alura.comex.model; + +public enum TipoDescontoProdutoEnum { + QUANTIDADE("Quantidade"), + PROMOCAO("Promoção"), + NENHUM("Nenhum"); + + private String tipoDescontoProduto; + + TipoDescontoProdutoEnum(String status) { + this.tipoDescontoProduto = status; + } + + public String getStatus() { + return tipoDescontoProduto; + } +} From 893023041e6bfd40701d7f720357ae977ca05c46 Mon Sep 17 00:00:00 2001 From: willbertini Date: Thu, 9 May 2024 02:30:31 -0300 Subject: [PATCH 06/10] =?UTF-8?q?Finalizado=20exerc=C3=ADcios=20da=20Seman?= =?UTF-8?q?a=207?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 55 +++++--------- .../br/com/alura/comex/ComexApplication.java | 11 +++ .../br/com/alura/comex/TestaCategoria.java | 6 +- .../br/com/alura/comex/TestaJpaPedido.java | 19 +++++ .../br/com/alura/comex/TestaJpaProduto.java | 2 +- .../com/alura/comex/TesteJpaComHibernate.java | 74 ++++++++++++++++++- .../com/alura/comex/TesteJpaItemPedido.java | 27 +++++++ .../br/com/alura/comex/dao/CategoriaDao.java | 26 ++++--- .../br/com/alura/comex/dao/ClienteDao.java | 44 ++++++++--- .../br/com/alura/comex/dao/ItemPedidoDao.java | 18 +++++ .../br/com/alura/comex/dao/PedidoDao.java | 25 ++++--- .../br/com/alura/comex/dao/ProdutoDao.java | 28 ++++--- .../br/com/alura/comex/model/Categoria.java | 20 ++++- .../br/com/alura/comex/model/Cliente.java | 52 +++++++------ .../br/com/alura/comex/model/Endereco.java | 51 ++++++++++--- .../br/com/alura/comex/model/ItemPedido.java | 41 +++++++--- .../java/br/com/alura/comex/model/Pedido.java | 74 +++++++++++++++---- .../br/com/alura/comex/model/Produto.java | 15 +++- 18 files changed, 439 insertions(+), 149 deletions(-) create mode 100644 src/main/java/br/com/alura/comex/ComexApplication.java create mode 100644 src/main/java/br/com/alura/comex/TesteJpaItemPedido.java create mode 100644 src/main/java/br/com/alura/comex/dao/ItemPedidoDao.java diff --git a/pom.xml b/pom.xml index d40d07f7..10639fca 100644 --- a/pom.xml +++ b/pom.xml @@ -1,27 +1,21 @@ - - + 4.0.0 - + + org.springframework.boot + spring-boot-starter-parent + 3.1.1 + + + br.com.alura comex - 0.1.3-SNAPSHOT - + 0.0.1-SNAPSHOT + 17 17 17 - 17 - 8.3.0 - 10 - - - ch.qos.logback - logback-classic - 1.2.6 - org.junit.jupiter junit-jupiter @@ -38,41 +32,28 @@ jackson-datatype-jsr310 2.13.1 - - com.opencsv - opencsv - 5.7.1 - - com.google.code.gson gson - 2.9.0 + 2.10.1 - org.hibernate hibernate-entitymanager 5.4.27.Final - com.mysql mysql-connector-j - ${mysql.version} + 8.2.0 + + + org.springframework.boot + spring-boot-starter-web - - com.oracle.database.jdbc - ojdbc8 - 23.2.0.0 + org.springframework.boot + spring-boot-starter-validation - - - - - - - \ No newline at end of file diff --git a/src/main/java/br/com/alura/comex/ComexApplication.java b/src/main/java/br/com/alura/comex/ComexApplication.java new file mode 100644 index 00000000..a527af6e --- /dev/null +++ b/src/main/java/br/com/alura/comex/ComexApplication.java @@ -0,0 +1,11 @@ +package br.com.alura.comex; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class ComexApplication { + public static void main(String[] args) { + SpringApplication.run(ComexApplication.class, args); + } +} \ No newline at end of file diff --git a/src/main/java/br/com/alura/comex/TestaCategoria.java b/src/main/java/br/com/alura/comex/TestaCategoria.java index 74755dec..e6734557 100644 --- a/src/main/java/br/com/alura/comex/TestaCategoria.java +++ b/src/main/java/br/com/alura/comex/TestaCategoria.java @@ -2,16 +2,14 @@ import br.com.alura.comex.dao.CategoriaDao; import br.com.alura.comex.model.Categoria; +import br.com.alura.comex.model.StatusCategoriaEnum; public class TestaCategoria { public static void main(String[] args) { - Categoria novaCategoria = new Categoria("Informática"); + Categoria novaCategoria = new Categoria("Esporte", StatusCategoriaEnum.ATIVO); CategoriaDao categoriaDao = new CategoriaDao(); categoriaDao.cadastra(novaCategoria); - - //a linha abaixo tem o mesmo resultado: - //new CategoriaDao().cadastrar(new Categoria("Veículo")); } } diff --git a/src/main/java/br/com/alura/comex/TestaJpaPedido.java b/src/main/java/br/com/alura/comex/TestaJpaPedido.java index bb27d85c..05ebe761 100644 --- a/src/main/java/br/com/alura/comex/TestaJpaPedido.java +++ b/src/main/java/br/com/alura/comex/TestaJpaPedido.java @@ -1,7 +1,26 @@ package br.com.alura.comex; +import br.com.alura.comex.dao.CategoriaDao; +import br.com.alura.comex.dao.ClienteDao; +import br.com.alura.comex.dao.PedidoDao; +import br.com.alura.comex.dao.ProdutoDao; +import br.com.alura.comex.model.*; + +import java.math.BigDecimal; +import java.time.LocalDate; + public class TestaJpaPedido { public static void main(String[] args) { + ClienteDao clienteDao = new ClienteDao(); + Cliente cliente = clienteDao.buscaPorId(2L); + + Pedido novoPedido = new Pedido(LocalDate.now(),cliente, new BigDecimal(140.80), + TipoDescontoPedidoEnum.FIDELIDADE); + + PedidoDao pedidoDao = new PedidoDao(); + pedidoDao.cadastra(novoPedido); + + } } diff --git a/src/main/java/br/com/alura/comex/TestaJpaProduto.java b/src/main/java/br/com/alura/comex/TestaJpaProduto.java index c532a4c1..9c5ba73e 100644 --- a/src/main/java/br/com/alura/comex/TestaJpaProduto.java +++ b/src/main/java/br/com/alura/comex/TestaJpaProduto.java @@ -11,7 +11,7 @@ public class TestaJpaProduto { public static void main(String[] args) { - Categoria categoriaDoBanco = new CategoriaDao().buscarPorId(1L); + Categoria categoriaDoBanco = new CategoriaDao().buscaPorId(1L); Produto celular = new Produto("Samsung S21","Android 512GB", new BigDecimal("940.58"), 2, categoriaDoBanco); diff --git a/src/main/java/br/com/alura/comex/TesteJpaComHibernate.java b/src/main/java/br/com/alura/comex/TesteJpaComHibernate.java index fb7184a9..d976a069 100644 --- a/src/main/java/br/com/alura/comex/TesteJpaComHibernate.java +++ b/src/main/java/br/com/alura/comex/TesteJpaComHibernate.java @@ -3,20 +3,86 @@ import br.com.alura.comex.dao.ClienteDao; import br.com.alura.comex.model.Cliente; import br.com.alura.comex.model.Endereco; -import javax.persistence.EntityManager; + public class TesteJpaComHibernate { public static void main(String[] args) { - Cliente novoCliente = new Cliente("Willian","88777885445", - new Endereco("Alto","Piracicaba","Apto 999", - "SP", "Rua Wer Fgh","444"),"will@alura.com"); + /* Cria o cliente Willian - ID 1 + Cliente novoCliente = new Cliente("Willian","88777885445","aa@aa.com","Desenvolvedor", + "(16)99999999", + new Endereco("Rua XXX","855","Bairro AAA", "Apto 98","Piracicaba", + "SP")); + + ClienteDao clienteDao = new ClienteDao(); + clienteDao.cadastra(novoCliente); + + */ + + /* Cria o cliente Cristiano - ID 2 + Cliente novoCliente = new Cliente("Cristiano","74258741255","aa@rtrt.com","Programador", + "(16)99999999", + new Endereco("Rua ZZZ","855","Bairro BBB", "Casa 02","Piracicaba", + "SP")); + ClienteDao clienteDao = new ClienteDao(); + clienteDao.cadastra(novoCliente); + */ + /* + // Cria o cliente Silvia - ID 3 + Cliente novoCliente = new Cliente("Silvia","56776543222","silvia@rtrt.com","Programador", + "(16)545487877", + new Endereco("Rua WWW","567","Bairro BBB", "Casa 2","Piracicaba", + "SP")); ClienteDao clienteDao = new ClienteDao(); clienteDao.cadastra(novoCliente); + System.out.println(novoCliente); + */ + //Teste da Busca pelo ID + /* + ClienteDao clienteDao = new ClienteDao(); + Cliente cliente = clienteDao.buscaPorId(2L); + System.out.println(cliente); + */ + + //Teste da Busca pelo listaTodos() + /* + + List clientes = clienteDao.listaTodos(); + for (Cliente cliente : clientes) { + System.out.println(cliente); + } + */ + + //Teste da Busca listaPorNome() + /* + List clientes = clienteDao.listaPorNome("Cristiano"); + for (Cliente cliente : clientes) { + System.out.println(cliente); + } + */ + + /* + //Teste do método atualiza (Cliente cliente) + //primeiro é necessário encontrar o cliente pelo ID (por exemplo) + ClienteDao clienteDao = new ClienteDao(); + Cliente cliente = clienteDao.buscaPorId(2L); + //Após isso, atualizar o que for necessário: + cliente.setEmail("email@atualizado.com.br"); + cliente.getEndereco().setCidade("Campinas"); //atualização da cidade no endereço + clienteDao.atualiza(cliente); + System.out.println("Cliente atualizado: " + cliente); + */ + + //Teste do método remove(Cliente cliente) + ClienteDao clienteDao = new ClienteDao(); + //primeiro é necessário encontrar o cliente pelo ID (por exemplo) + Cliente cliente = clienteDao.buscaPorId(3L); + clienteDao.remove(cliente); + System.out.println("Cliente ID " + cliente.getId() + " removido"); } } diff --git a/src/main/java/br/com/alura/comex/TesteJpaItemPedido.java b/src/main/java/br/com/alura/comex/TesteJpaItemPedido.java new file mode 100644 index 00000000..a21110f0 --- /dev/null +++ b/src/main/java/br/com/alura/comex/TesteJpaItemPedido.java @@ -0,0 +1,27 @@ +package br.com.alura.comex; + +import br.com.alura.comex.dao.ItemPedidoDao; +import br.com.alura.comex.dao.PedidoDao; +import br.com.alura.comex.dao.ProdutoDao; +import br.com.alura.comex.model.ItemPedido; +import br.com.alura.comex.model.Pedido; +import br.com.alura.comex.model.Produto; +import br.com.alura.comex.model.TipoDescontoProdutoEnum; + +import java.math.BigDecimal; + +public class TesteJpaItemPedido { + public static void main(String[] args) { + ProdutoDao produtoDao = new ProdutoDao(); + Produto produto = produtoDao.buscaPorId(1L); + + PedidoDao pedidoDao = new PedidoDao(); + Pedido pedido = pedidoDao.buscaPorId(1L); + + ItemPedido itemPedido = new ItemPedido(produto,pedido,new BigDecimal(780.00),5, + pedido.getDesconto(), TipoDescontoProdutoEnum.PROMOCAO); + + ItemPedidoDao itemPedidoDao = new ItemPedidoDao(); + itemPedidoDao.cadastra(itemPedido); + } +} diff --git a/src/main/java/br/com/alura/comex/dao/CategoriaDao.java b/src/main/java/br/com/alura/comex/dao/CategoriaDao.java index e24312c2..d10664df 100644 --- a/src/main/java/br/com/alura/comex/dao/CategoriaDao.java +++ b/src/main/java/br/com/alura/comex/dao/CategoriaDao.java @@ -2,24 +2,30 @@ import br.com.alura.comex.JPAUtil; import br.com.alura.comex.model.Categoria; +import br.com.alura.comex.model.Cliente; import javax.persistence.EntityManager; +import javax.persistence.TypedQuery; +import java.util.List; public class CategoriaDao { - public void cadastra(Categoria novaCategoria) { - EntityManager entityManager = JPAUtil.getEntityManager(); - entityManager.getTransaction().begin(); - entityManager.persist(novaCategoria); - entityManager.getTransaction().commit(); - } + private EntityManager em = JPAUtil.getEntityManager(); - public Categoria buscarPorId(long id) { - EntityManager entityManager = JPAUtil.getEntityManager(); + public void cadastra(Categoria categoria) { + em.getTransaction().begin(); + em.persist(categoria); + em.getTransaction().commit(); + } - Categoria categoriaCarregada = entityManager.find(Categoria.class, id); + public List listaTodos() { + TypedQuery query = em.createQuery("SELECT c FROM Categoria c", Categoria.class); + return query.getResultList(); + } + public Categoria buscaPorId(Long id) { + em.getTransaction().begin(); + Categoria categoriaCarregada = em.find(Categoria.class, id); return categoriaCarregada; - } } diff --git a/src/main/java/br/com/alura/comex/dao/ClienteDao.java b/src/main/java/br/com/alura/comex/dao/ClienteDao.java index 6fd20fae..c3987b99 100644 --- a/src/main/java/br/com/alura/comex/dao/ClienteDao.java +++ b/src/main/java/br/com/alura/comex/dao/ClienteDao.java @@ -1,27 +1,51 @@ package br.com.alura.comex.dao; - import br.com.alura.comex.JPAUtil; -import br.com.alura.comex.model.Categoria; import br.com.alura.comex.model.Cliente; import javax.persistence.EntityManager; +import javax.persistence.TypedQuery; +import java.util.List; public class ClienteDao { - public void cadastra(Cliente novoCliente) { + private EntityManager em = JPAUtil.getEntityManager(); + + public void cadastra(Cliente cliente) { + em.getTransaction().begin(); + em.persist(cliente); + em.getTransaction().commit(); + } + + public void atualiza(Cliente cliente) { + em.merge(cliente); + em.getTransaction().commit(); + } - EntityManager entityManager = JPAUtil.getEntityManager(); + public void remove(Cliente cliente) { + //em.getTransaction().begin(); + cliente = em.merge(cliente); // Garante que o cliente está no contexto de persistência + em.remove(cliente); + em.getTransaction().commit(); + } - entityManager.getTransaction().begin(); - entityManager.persist(novoCliente); - entityManager.getTransaction().commit(); + public List listaTodos() { + TypedQuery query = em.createQuery("SELECT c FROM Cliente c", Cliente.class); + return query.getResultList(); } - public Cliente buscarPorId(long id) { - EntityManager entityManager = JPAUtil.getEntityManager(); + public List listaPorNome(String nome) { + TypedQuery query = em.createQuery("SELECT c FROM Cliente c WHERE c.nome LIKE :nome", Cliente.class); + query.setParameter("nome", "%" + nome + "%"); + return query.getResultList(); + } - Cliente clienteCarregado = entityManager.find(Cliente.class, id); + public Cliente buscaPorId(Long id) { + em.getTransaction().begin(); + Cliente clienteCarregado = em.find(Cliente.class, id); return clienteCarregado; } + + + } diff --git a/src/main/java/br/com/alura/comex/dao/ItemPedidoDao.java b/src/main/java/br/com/alura/comex/dao/ItemPedidoDao.java new file mode 100644 index 00000000..94e863dd --- /dev/null +++ b/src/main/java/br/com/alura/comex/dao/ItemPedidoDao.java @@ -0,0 +1,18 @@ +package br.com.alura.comex.dao; + +import br.com.alura.comex.JPAUtil; +import br.com.alura.comex.model.ItemPedido; +import br.com.alura.comex.model.Pedido; + +import javax.persistence.EntityManager; + +public class ItemPedidoDao { + + private EntityManager em = JPAUtil.getEntityManager(); + + public void cadastra(ItemPedido itemPedido) { + em.getTransaction().begin(); + em.persist(itemPedido); + em.getTransaction().commit(); + } +} diff --git a/src/main/java/br/com/alura/comex/dao/PedidoDao.java b/src/main/java/br/com/alura/comex/dao/PedidoDao.java index 3d50ba30..6991c208 100644 --- a/src/main/java/br/com/alura/comex/dao/PedidoDao.java +++ b/src/main/java/br/com/alura/comex/dao/PedidoDao.java @@ -3,25 +3,30 @@ import br.com.alura.comex.JPAUtil; import br.com.alura.comex.model.Cliente; import br.com.alura.comex.model.Pedido; +import br.com.alura.comex.model.Produto; import javax.persistence.EntityManager; +import javax.persistence.TypedQuery; +import java.util.List; public class PedidoDao { - public void cadastra(Pedido novoPedido) { + private EntityManager em = JPAUtil.getEntityManager(); - EntityManager entityManager = JPAUtil.getEntityManager(); - - entityManager.getTransaction().begin(); - entityManager.persist(novoPedido); - entityManager.getTransaction().commit(); + public void cadastra(Pedido pedido) { + em.getTransaction().begin(); + em.persist(pedido); + em.getTransaction().commit(); } - public Pedido buscarPorId(long id) { - EntityManager entityManager = JPAUtil.getEntityManager(); - - Pedido pedidoCarregado = entityManager.find(Pedido.class, id); + public List listaTodos() { + TypedQuery query = em.createQuery("SELECT c FROM Categoria c", Pedido.class); + return query.getResultList(); + } + public Pedido buscaPorId(Long id) { + em.getTransaction().begin(); + Pedido pedidoCarregado = em.find(Pedido.class, id); return pedidoCarregado; } } diff --git a/src/main/java/br/com/alura/comex/dao/ProdutoDao.java b/src/main/java/br/com/alura/comex/dao/ProdutoDao.java index 8a152a56..8c8e4314 100644 --- a/src/main/java/br/com/alura/comex/dao/ProdutoDao.java +++ b/src/main/java/br/com/alura/comex/dao/ProdutoDao.java @@ -1,26 +1,34 @@ package br.com.alura.comex.dao; import br.com.alura.comex.JPAUtil; -import br.com.alura.comex.model.Pedido; import br.com.alura.comex.model.Produto; import javax.persistence.EntityManager; +import javax.persistence.TypedQuery; +import java.util.List; public class ProdutoDao { - public void cadastra(Produto celular) { + private EntityManager em = JPAUtil.getEntityManager(); - EntityManager entityManager = JPAUtil.getEntityManager(); - - entityManager.getTransaction().begin(); - entityManager.persist(celular); - entityManager.getTransaction().commit(); + public void cadastra(Produto produto) { + em.getTransaction().begin(); + em.persist(produto); + em.getTransaction().commit(); } - public Produto buscarPorId(long id) { - EntityManager entityManager = JPAUtil.getEntityManager(); + public List listaTodos() { + TypedQuery query = em.createQuery("SELECT p FROM Produto p", Produto.class); + return query.getResultList(); + } - Produto produtoCarregado = entityManager.find(Produto.class, id); + public List listaIndisponiveis() { + TypedQuery query = em.createQuery("SELECT p FROM Produto p WHERE p.quantidade = 0", Produto.class); + return query.getResultList(); + } + public Produto buscaPorId(Long id) { + em.getTransaction().begin(); + Produto produtoCarregado = em.find(Produto.class, id); return produtoCarregado; } } \ No newline at end of file diff --git a/src/main/java/br/com/alura/comex/model/Categoria.java b/src/main/java/br/com/alura/comex/model/Categoria.java index a7daef52..1d21bb05 100644 --- a/src/main/java/br/com/alura/comex/model/Categoria.java +++ b/src/main/java/br/com/alura/comex/model/Categoria.java @@ -9,8 +9,10 @@ public class Categoria { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; + @Column(name = "nome", nullable = false) private String nome; + @Column(name = "status", nullable = false) @Enumerated(EnumType.STRING) private StatusCategoriaEnum status = StatusCategoriaEnum.ATIVO; @@ -18,9 +20,25 @@ public class Categoria { public Categoria() { } - public Categoria(String nome) { + + public Categoria(String nome, StatusCategoriaEnum status) { + this.nome = nome; + this.status = status; + } + + public String getNome() { + return nome; + } + + public void setNome(String nome) { this.nome = nome; } + public StatusCategoriaEnum getStatus() { + return status; + } + public void setStatus(StatusCategoriaEnum status) { + this.status = status; + } } diff --git a/src/main/java/br/com/alura/comex/model/Cliente.java b/src/main/java/br/com/alura/comex/model/Cliente.java index 76128f9b..7ac6719c 100644 --- a/src/main/java/br/com/alura/comex/model/Cliente.java +++ b/src/main/java/br/com/alura/comex/model/Cliente.java @@ -8,19 +8,27 @@ public class Cliente { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; - @Column(name = "nome", length = 120, nullable = false) + + @Column(name = "nome", length = 150, nullable = false) private String nome; - @Column(name = "cpf", length = 11, nullable = false) + + @Column(name = "cpf", length = 11, nullable = false, unique = true) private String cpf; + @Column(name = "email", length = 120, nullable = false) private String email; + @Column(name = "profissao", length = 80, nullable = true) private String profissao; - @Column(name = "telefone", length = 25, nullable = true) + + @Column(name = "telefone", length = 25, nullable = false) private String telefone; - @Embedded + + @Embedded // Indica que o atributo é um tipo embutido private Endereco endereco; + + public void setNome(String nome) { this.nome = nome; } @@ -45,41 +53,37 @@ public void setEndereco(Endereco endereco) { this.endereco = endereco; } - public Long getId() { - return id; + public Endereco getEndereco() { + return endereco; } - public void setId(Long id) { - this.id = id; + public Long getId() { + return id; } @Override public String toString() { - return "Cliente" + - "Nome='" + nome + '\'' + - ", Cpf='" + cpf + '\'' + - ", E-mail='" + email + '\'' + - ", Profissão='" + profissao + '\'' + - ", Telefone='" + telefone + '\'' + - ", Endereco=" + endereco; - + return "Cliente{" + + "id=" + id + + ", nome='" + nome + '\'' + + ", cpf='" + cpf + '\'' + + ", email='" + email + '\'' + + ", profissao='" + profissao + '\'' + + ", telefone='" + telefone + '\'' + + ", endereco=" + endereco + + '}'; } public Cliente() { } - public Cliente(String nome, String cpf, String email) { + public Cliente(String nome, String cpf, String email, String profissao, String telefone, Endereco endereco) { this.nome = nome; this.cpf = cpf; this.email = email; - } - - public Cliente(String nome, String cpf, Endereco endereco, String email) { - this.nome = nome; - this.cpf = cpf; + this.profissao = profissao; + this.telefone = telefone; this.endereco = endereco; - this.email = email; } - } diff --git a/src/main/java/br/com/alura/comex/model/Endereco.java b/src/main/java/br/com/alura/comex/model/Endereco.java index 7aee9744..147aae00 100644 --- a/src/main/java/br/com/alura/comex/model/Endereco.java +++ b/src/main/java/br/com/alura/comex/model/Endereco.java @@ -3,31 +3,60 @@ import javax.persistence.Column; import javax.persistence.Embeddable; -@Embeddable +@Embeddable // Indica que a classe está sendo embutida em outra entidade public class Endereco { + @Column(name = "rua", length = 120, nullable = false) + private String rua; + + @Column(name = "numero", length = 20, nullable = false) + private String numero; + @Column(name = "bairro", length = 80, nullable = false) private String bairro; + + @Column(name = "complemento", length = 120, nullable = true) + private String complemento; + @Column(name = "cidade", length = 100, nullable = false) private String cidade; - @Column(name = "complemento", length = 120, nullable = false) - private String complemento; - @Column(name = "estado", length = 60, nullable = false) + + @Column(name = "estado", length = 2, nullable = false) private String estado; - @Column(name = "rua", length = 120, nullable = false) - private String rua; - @Column(name = "numero", length = 20, nullable = false) - private String numero; - public Endereco() { + public void setRua(String rua) { + this.rua = rua; } - public Endereco(String bairro, String cidade, String complemento, String estado, String rua, String numero) { + public void setNumero(String numero) { + this.numero = numero; + } + + public void setBairro(String bairro) { this.bairro = bairro; - this.cidade = cidade; + } + + public void setComplemento(String complemento) { this.complemento = complemento; + } + + public void setCidade(String cidade) { + this.cidade = cidade; + } + + public void setEstado(String estado) { this.estado = estado; + } + + public Endereco() { + } + + public Endereco(String rua, String numero, String bairro, String complemento, String cidade, String estado) { this.rua = rua; this.numero = numero; + this.bairro = bairro; + this.complemento = complemento; + this.cidade = cidade; + this.estado = estado; } @Override diff --git a/src/main/java/br/com/alura/comex/model/ItemPedido.java b/src/main/java/br/com/alura/comex/model/ItemPedido.java index 706c3b9e..8403e0b8 100644 --- a/src/main/java/br/com/alura/comex/model/ItemPedido.java +++ b/src/main/java/br/com/alura/comex/model/ItemPedido.java @@ -8,22 +8,42 @@ public class ItemPedido { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; - @OneToMany(fetch = FetchType.LAZY) - @JoinColumn(name = "produto", nullable = false) + + @ManyToOne(fetch = FetchType.LAZY, optional = false) //Define o relacionamento com a entidade Produto. + /* + um item de pedido está associado a apenas um produto, mas um produto pode fazer parte de muitos itens de pedido. + */ + @JoinColumn(name = "produto_id", nullable = false) private Produto produto; - @OneToMany(fetch = FetchType.LAZY) - @JoinColumn(name = "pedido", nullable = false) + + @ManyToOne(fetch = FetchType.LAZY, optional = false) //Define o relacionamento com a entidade Pedido. + /* + Um item de pedido pertence a apenas um pedido, mas um pedido pode ter muitos itens de pedido. + */ + @JoinColumn(name = "pedido_id", nullable = false) private Pedido pedido; + @Column(name = "precoUnitario", nullable = false) private BigDecimal precoUnitario; + @Column(name = "quantidade", nullable = false) private int quantidade; - @Column(name = "desconto", nullable = true) + + @Column(name = "desconto", nullable = true, precision = 10, scale = 2) private BigDecimal desconto = new BigDecimal(0); - @Column(name = "tipo_desconto", , nullable = false) + + @Column(name = "tipo_desconto", nullable = false) @Enumerated(EnumType.STRING) private TipoDescontoProdutoEnum tipoDescontoProduto = TipoDescontoProdutoEnum.NENHUM; + public Pedido getPedido() { + return pedido; + } + + public void setPedido(Pedido pedido) { + this.pedido = pedido; + } + public ItemPedido(){ } @@ -39,8 +59,11 @@ public ItemPedido(Produto produto, Pedido pedido, BigDecimal precoUnitario, int } //obtenha o total considerando preço unitário, quantidade e desconto. - public BigDecimal getTotal(){ - return (this.desconto.subtract( - (this.precoUnitario.multiply(BigDecimal.valueOf(this.quantidade))))); + public BigDecimal getTotal() { + BigDecimal valorTotal = precoUnitario.multiply(BigDecimal.valueOf(quantidade)); + if (desconto != null) { + valorTotal = valorTotal.subtract(desconto); + } + return valorTotal; } } diff --git a/src/main/java/br/com/alura/comex/model/Pedido.java b/src/main/java/br/com/alura/comex/model/Pedido.java index 6a4ecc23..e8c3a6fc 100644 --- a/src/main/java/br/com/alura/comex/model/Pedido.java +++ b/src/main/java/br/com/alura/comex/model/Pedido.java @@ -2,48 +2,92 @@ import javax.persistence.*; import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.ArrayList; import java.util.Date; +import java.util.List; @Entity @Table(name = "pedido") public class Pedido { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "pedido_id") private Long id; - @ManyToOne(fetch = FetchType.LAZY) + + @Column(name = "data", nullable = false) + private LocalDate data; + + @ManyToOne(fetch = FetchType.LAZY, optional = false) + /* + Relacionamento muitos-para-um entre Pedido e Cliente. Um pedido pertence a apenas um cliente, + mas um cliente pode ter muitos pedidos. + */ @JoinColumn(name = "cliente_id", nullable = false) private Cliente cliente; - @Column(name = "data", nullable = true) - private Date data = new Date(); - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "itemPedido_id", nullable = false) - private ItemPedido itemPedido; - @Column(name = "desconto", nullable = true) + + @OneToMany(mappedBy = "pedido", fetch = FetchType.LAZY, cascade = CascadeType.ALL) + /* + Relacionamento um-para-muitos entre Pedido e ItemPedido. Um pedido pode ter muitos itens, mas um item pertence + a apenas um pedido. + mappedBy = "pedido" indica que o atributo pedido na classe ItemPedido é o lado proprietário do relacionamento. + cascade = CascadeType.ALL propaga todas as operações de persistência (persistir, atualizar, remover) do Pedido para + os ItemPedido associados. + */ + private List itens; + + @Column(name = "desconto", nullable = false, precision = 10, scale = 2) private BigDecimal desconto; - @Column(name = "status", nullable = false) - @Enumerated(EnumType.STRING) - private StatusCategoriaEnum status = StatusCategoriaEnum.ATIVO; - @Column(name = "tipoDesconto", nullable = true) + + @Column(name = "tipo_Desconto", nullable = false) @Enumerated(EnumType.STRING) private TipoDescontoPedidoEnum tipoDescontoPedido = TipoDescontoPedidoEnum.NENHUM; + public List getItemPedido() { + return itens; + } + + public void setItemPedido(List itemPedido) { + this.itens = itemPedido; + } + + public void setDesconto(BigDecimal desconto) { + this.desconto = desconto; + } + public Pedido(){ } - public Pedido(Cliente cliente, Date data, ItemPedido itemPedido, BigDecimal desconto, StatusCategoriaEnum status, - TipoDescontoPedidoEnum tipoDescontoPedido) { + public Pedido(LocalDate data, Cliente cliente, List itens, BigDecimal desconto, TipoDescontoPedidoEnum tipoDescontoPedido) { + this.data = data; this.cliente = cliente; + this.itens = itens; + this.desconto = desconto; + this.tipoDescontoPedido = tipoDescontoPedido; + } + + public Pedido(LocalDate data, Cliente cliente, BigDecimal desconto, TipoDescontoPedidoEnum tipoDescontoPedido) { this.data = data; - this.itemPedido = itemPedido; + this.cliente = cliente; this.desconto = desconto; - this.status = status; this.tipoDescontoPedido = tipoDescontoPedido; } + public LocalDate getData() { + return data; + } + public BigDecimal getDesconto() { return desconto; } + + public void adicionaItem (ItemPedido item){ + item.setPedido(this); + this.itens.add(item); + } + + /*@Override public String toString() { diff --git a/src/main/java/br/com/alura/comex/model/Produto.java b/src/main/java/br/com/alura/comex/model/Produto.java index c869e9f1..d860b24e 100644 --- a/src/main/java/br/com/alura/comex/model/Produto.java +++ b/src/main/java/br/com/alura/comex/model/Produto.java @@ -11,15 +11,24 @@ public class Produto { @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "produto_id") private Long id; - @Column(name = "nome", nullable = false) + + @Column(name = "nome", nullable = false, length = 100) private String nome; - @Column(name = "descricao", nullable = true) + + @Column(name = "descricao", nullable = true, length = 255) private String descricao; - @Column(name = "precoUnitario", nullable = false) + + @Column(name = "precoUnitario", nullable = false, precision = 10, scale = 2) private BigDecimal precoUnitario; + @Column(name = "quantidade", nullable = false) private int quantidade; + @ManyToOne(fetch = FetchType.EAGER) + /* + A anotação @ManyToOne indica um relacionamento muitos-para-um entre Produto e Categoria. + Um produto pertence a apenas uma categoria, mas uma categoria pode ter muitos produtos. + */ @JoinColumn(name = "categoria_id", nullable = false) private Categoria categoria; From 7f6969fe0426c00da6a2ca1c9fccee10af331078 Mon Sep 17 00:00:00 2001 From: willbertini Date: Sat, 18 May 2024 00:35:59 -0300 Subject: [PATCH 07/10] Semana 8 --- pom.xml | 6 +- src/main/java/br/com/alura/comex/Main.java | 83 ------------------- .../comex/controller/BemVindoController.java | 13 +++ .../comex/controller/CategoriaController.java | 32 +++++++ .../br/com/alura/comex/dao/CategoriaDao.java | 18 +++- .../br/com/alura/comex/dao/ClienteDao.java | 2 +- .../br/com/alura/comex/dao/ItemPedidoDao.java | 3 +- .../br/com/alura/comex/dao/PedidoDao.java | 4 +- .../br/com/alura/comex/dao/ProdutoDao.java | 2 +- .../comex/{ => testes}/TestaCategoria.java | 2 +- .../comex/{ => testes}/TestaJpaPedido.java | 4 +- .../comex/{ => testes}/TestaJpaProduto.java | 3 +- .../alura/comex/{ => testes}/TestaPedido.java | 5 +- .../alura/comex/testes/TestaPedidoDao.java | 32 +++++++ .../comex/{ => testes}/TesteCliente.java | 2 +- .../{ => testes}/TesteJpaComHibernate.java | 3 +- .../{ => testes}/TesteJpaItemPedido.java | 2 +- .../comex/{ => testes}/TesteProduto.java | 6 +- .../com/alura/comex/{ => util}/JPAUtil.java | 2 +- 19 files changed, 111 insertions(+), 113 deletions(-) delete mode 100644 src/main/java/br/com/alura/comex/Main.java create mode 100644 src/main/java/br/com/alura/comex/controller/BemVindoController.java create mode 100644 src/main/java/br/com/alura/comex/controller/CategoriaController.java rename src/main/java/br/com/alura/comex/{ => testes}/TestaCategoria.java (92%) rename src/main/java/br/com/alura/comex/{ => testes}/TestaJpaPedido.java (83%) rename src/main/java/br/com/alura/comex/{ => testes}/TestaJpaProduto.java (89%) rename src/main/java/br/com/alura/comex/{ => testes}/TestaPedido.java (89%) create mode 100644 src/main/java/br/com/alura/comex/testes/TestaPedidoDao.java rename src/main/java/br/com/alura/comex/{ => testes}/TesteCliente.java (94%) rename src/main/java/br/com/alura/comex/{ => testes}/TesteJpaComHibernate.java (97%) rename src/main/java/br/com/alura/comex/{ => testes}/TesteJpaItemPedido.java (96%) rename src/main/java/br/com/alura/comex/{ => testes}/TesteProduto.java (89%) rename src/main/java/br/com/alura/comex/{ => util}/JPAUtil.java (89%) diff --git a/pom.xml b/pom.xml index 10639fca..5abcef0d 100644 --- a/pom.xml +++ b/pom.xml @@ -1,5 +1,8 @@ - + 4.0.0 + org.springframework.boot spring-boot-starter-parent @@ -7,6 +10,7 @@ + br.com.alura comex 0.0.1-SNAPSHOT diff --git a/src/main/java/br/com/alura/comex/Main.java b/src/main/java/br/com/alura/comex/Main.java deleted file mode 100644 index ff8c1234..00000000 --- a/src/main/java/br/com/alura/comex/Main.java +++ /dev/null @@ -1,83 +0,0 @@ -package br.com.alura.comex; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.IOException; -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.net.URISyntaxException; -import java.text.NumberFormat; -import java.util.Arrays; -import java.util.Locale; - -public class Main { - - private static final Logger logger = LoggerFactory.getLogger(Main.class); - - public static void main(String[] args) throws IOException, URISyntaxException { -/* Pedido[] pedidos = ProcessadorDeCsv.processaArquivo("pedidos.csv"); - - int totalDeProdutosVendidos = 0; - int totalDePedidosRealizados = 0; - BigDecimal montanteDeVendas = BigDecimal.ZERO; - Pedido pedidoMaisBarato = null; - Pedido pedidoMaisCaro = null; - - String[] categoriasProcessadas = new String[10]; - int totalDeCategorias = 0; - - for (int i = 0; i < pedidos.length; i++) { - Pedido pedidoAtual = pedidos[i]; - - if (pedidoAtual == null) { - break; - } - - if (pedidoMaisBarato == null || pedidoAtual.getPreco().multiply(new BigDecimal(pedidoAtual.getQuantidade())).compareTo(pedidoMaisBarato.getPreco().multiply(new BigDecimal(pedidoMaisBarato.getQuantidade()))) < 0) { - pedidoMaisBarato = pedidoAtual; - } - - if (pedidoMaisCaro == null || pedidoAtual.getPreco().multiply(new BigDecimal(pedidoAtual.getQuantidade())).compareTo(pedidoMaisCaro.getPreco().multiply(new BigDecimal(pedidoMaisCaro.getQuantidade()))) > 0) { - pedidoMaisCaro = pedidoAtual; - } - - montanteDeVendas = montanteDeVendas.add(pedidoAtual.getPreco().multiply(new BigDecimal(pedidoAtual.getQuantidade()))); - totalDeProdutosVendidos += pedidoAtual.getQuantidade(); - totalDePedidosRealizados++; - - boolean jahProcessouCategoria = false; - for (int j = 0; j < categoriasProcessadas.length; j++) { - if (pedidoAtual.getCategoria().equalsIgnoreCase(categoriasProcessadas[j])) { - jahProcessouCategoria = true; - } - } - - if (!jahProcessouCategoria) { - totalDeCategorias++; - - if (categoriasProcessadas[categoriasProcessadas.length - 1] != null) { - categoriasProcessadas = Arrays.copyOf(categoriasProcessadas, categoriasProcessadas.length * 2); - } else { - for (int k = 0; k < categoriasProcessadas.length; k++) { - if (categoriasProcessadas[k] == null) { - categoriasProcessadas[k] = pedidoAtual.getCategoria(); - break; - } - } - } - } - } - - logger.info("##### RELATÓRIO DE VALORES TOTAIS #####"); - logger.info("TOTAL DE PEDIDOS REALIZADOS: {}", totalDePedidosRealizados); - logger.info("TOTAL DE PRODUTOS VENDIDOS: {}", totalDeProdutosVendidos); - logger.info("TOTAL DE CATEGORIAS: {}", totalDeCategorias); - logger.info("MONTANTE DE VENDAS: {}", NumberFormat.getCurrencyInstance(new Locale("pt", "BR")).format(montanteDeVendas.setScale(2, RoundingMode.HALF_DOWN))); - logger.info("PEDIDO MAIS BARATO: {} ({})", NumberFormat.getCurrencyInstance(new Locale("pt", "BR")).format(pedidoMaisBarato.getPreco().multiply(new BigDecimal(pedidoMaisBarato.getQuantidade())).setScale(2, RoundingMode.HALF_DOWN)), pedidoMaisBarato.getProduto()); - logger.info("PEDIDO MAIS CARO: {} ({})\n", NumberFormat.getCurrencyInstance(new Locale("pt", "BR")).format(pedidoMaisCaro.getPreco().multiply(new BigDecimal(pedidoMaisCaro.getQuantidade())).setScale(2, RoundingMode.HALF_DOWN)), pedidoMaisCaro.getProduto()); - logger.info("### FIM DO RELATÓRIO ###"); - - */ - } -} \ No newline at end of file diff --git a/src/main/java/br/com/alura/comex/controller/BemVindoController.java b/src/main/java/br/com/alura/comex/controller/BemVindoController.java new file mode 100644 index 00000000..21c8a29b --- /dev/null +++ b/src/main/java/br/com/alura/comex/controller/BemVindoController.java @@ -0,0 +1,13 @@ +package br.com.alura.comex.controller; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class BemVindoController { + + @RequestMapping("/comex/bemvindo") + public String bemvindo(){ + return "Bem vindo ao Comex, na Web!"; + } +} diff --git a/src/main/java/br/com/alura/comex/controller/CategoriaController.java b/src/main/java/br/com/alura/comex/controller/CategoriaController.java new file mode 100644 index 00000000..e927d716 --- /dev/null +++ b/src/main/java/br/com/alura/comex/controller/CategoriaController.java @@ -0,0 +1,32 @@ +package br.com.alura.comex.controller; + +import br.com.alura.comex.dao.CategoriaDao; +import br.com.alura.comex.model.Categoria; +import br.com.alura.comex.model.StatusCategoriaEnum; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class CategoriaController { + + @RequestMapping("/categoria") + public void cadastra(String nomeDaCategoria){ + System.out.println("Estou cadastrando uma nova categoria! " + nomeDaCategoria); + + Categoria novaCategoria = new Categoria(nomeDaCategoria, StatusCategoriaEnum.ATIVO); + CategoriaDao categoriaDao = new CategoriaDao(); + categoriaDao.cadastra(novaCategoria); + } + + /* + @GetMapping("/categoria") + public Categoria getCategoriaPorNome (String nome){ + String nomeDaCategoria = nome; + CategoriaDao categoriaDao = new CategoriaDao(); + Categoria categoria = categoriaDao.buscarPorNome(nomeDaCategoria); + } + + */ +} diff --git a/src/main/java/br/com/alura/comex/dao/CategoriaDao.java b/src/main/java/br/com/alura/comex/dao/CategoriaDao.java index d10664df..7be19b0d 100644 --- a/src/main/java/br/com/alura/comex/dao/CategoriaDao.java +++ b/src/main/java/br/com/alura/comex/dao/CategoriaDao.java @@ -1,8 +1,8 @@ package br.com.alura.comex.dao; -import br.com.alura.comex.JPAUtil; -import br.com.alura.comex.model.Categoria; import br.com.alura.comex.model.Cliente; +import br.com.alura.comex.util.JPAUtil; +import br.com.alura.comex.model.Categoria; import javax.persistence.EntityManager; import javax.persistence.TypedQuery; @@ -28,4 +28,18 @@ public Categoria buscaPorId(Long id) { Categoria categoriaCarregada = em.find(Categoria.class, id); return categoriaCarregada; } + + public List gerarRelatorioVendasPorCategoria() { + String jpql = "SELECT c.nome AS categoria, " + + "SUM(ip.quantidade) AS quantidade_vendida, "+ + "SUM(ip.quantidade * ip.precoUnitario) AS montante_vendido "+ + "FROM Categoria c JOIN Produto p "+ + "ON c.id = p.categoria_id "+ + "JOIN ItemPedido ip "+ + "ON p.produto_id = ip.produto_id "+ + "GROUP BY c.nome"; + + TypedQuery query = em.createQuery(jpql, Object[].class); + return query.getResultList(); + } } diff --git a/src/main/java/br/com/alura/comex/dao/ClienteDao.java b/src/main/java/br/com/alura/comex/dao/ClienteDao.java index c3987b99..966f0e1b 100644 --- a/src/main/java/br/com/alura/comex/dao/ClienteDao.java +++ b/src/main/java/br/com/alura/comex/dao/ClienteDao.java @@ -1,5 +1,5 @@ package br.com.alura.comex.dao; -import br.com.alura.comex.JPAUtil; +import br.com.alura.comex.util.JPAUtil; import br.com.alura.comex.model.Cliente; import javax.persistence.EntityManager; diff --git a/src/main/java/br/com/alura/comex/dao/ItemPedidoDao.java b/src/main/java/br/com/alura/comex/dao/ItemPedidoDao.java index 94e863dd..e58b1f85 100644 --- a/src/main/java/br/com/alura/comex/dao/ItemPedidoDao.java +++ b/src/main/java/br/com/alura/comex/dao/ItemPedidoDao.java @@ -1,8 +1,7 @@ package br.com.alura.comex.dao; -import br.com.alura.comex.JPAUtil; +import br.com.alura.comex.util.JPAUtil; import br.com.alura.comex.model.ItemPedido; -import br.com.alura.comex.model.Pedido; import javax.persistence.EntityManager; diff --git a/src/main/java/br/com/alura/comex/dao/PedidoDao.java b/src/main/java/br/com/alura/comex/dao/PedidoDao.java index 6991c208..9139f5a7 100644 --- a/src/main/java/br/com/alura/comex/dao/PedidoDao.java +++ b/src/main/java/br/com/alura/comex/dao/PedidoDao.java @@ -1,9 +1,7 @@ package br.com.alura.comex.dao; -import br.com.alura.comex.JPAUtil; -import br.com.alura.comex.model.Cliente; +import br.com.alura.comex.util.JPAUtil; import br.com.alura.comex.model.Pedido; -import br.com.alura.comex.model.Produto; import javax.persistence.EntityManager; import javax.persistence.TypedQuery; diff --git a/src/main/java/br/com/alura/comex/dao/ProdutoDao.java b/src/main/java/br/com/alura/comex/dao/ProdutoDao.java index 8c8e4314..38d8a280 100644 --- a/src/main/java/br/com/alura/comex/dao/ProdutoDao.java +++ b/src/main/java/br/com/alura/comex/dao/ProdutoDao.java @@ -1,6 +1,6 @@ package br.com.alura.comex.dao; -import br.com.alura.comex.JPAUtil; +import br.com.alura.comex.util.JPAUtil; import br.com.alura.comex.model.Produto; import javax.persistence.EntityManager; diff --git a/src/main/java/br/com/alura/comex/TestaCategoria.java b/src/main/java/br/com/alura/comex/testes/TestaCategoria.java similarity index 92% rename from src/main/java/br/com/alura/comex/TestaCategoria.java rename to src/main/java/br/com/alura/comex/testes/TestaCategoria.java index e6734557..3621853f 100644 --- a/src/main/java/br/com/alura/comex/TestaCategoria.java +++ b/src/main/java/br/com/alura/comex/testes/TestaCategoria.java @@ -1,4 +1,4 @@ -package br.com.alura.comex; +package br.com.alura.comex.testes; import br.com.alura.comex.dao.CategoriaDao; import br.com.alura.comex.model.Categoria; diff --git a/src/main/java/br/com/alura/comex/TestaJpaPedido.java b/src/main/java/br/com/alura/comex/testes/TestaJpaPedido.java similarity index 83% rename from src/main/java/br/com/alura/comex/TestaJpaPedido.java rename to src/main/java/br/com/alura/comex/testes/TestaJpaPedido.java index 05ebe761..d6a8c4c0 100644 --- a/src/main/java/br/com/alura/comex/TestaJpaPedido.java +++ b/src/main/java/br/com/alura/comex/testes/TestaJpaPedido.java @@ -1,9 +1,7 @@ -package br.com.alura.comex; +package br.com.alura.comex.testes; -import br.com.alura.comex.dao.CategoriaDao; import br.com.alura.comex.dao.ClienteDao; import br.com.alura.comex.dao.PedidoDao; -import br.com.alura.comex.dao.ProdutoDao; import br.com.alura.comex.model.*; import java.math.BigDecimal; diff --git a/src/main/java/br/com/alura/comex/TestaJpaProduto.java b/src/main/java/br/com/alura/comex/testes/TestaJpaProduto.java similarity index 89% rename from src/main/java/br/com/alura/comex/TestaJpaProduto.java rename to src/main/java/br/com/alura/comex/testes/TestaJpaProduto.java index 9c5ba73e..74796bc5 100644 --- a/src/main/java/br/com/alura/comex/TestaJpaProduto.java +++ b/src/main/java/br/com/alura/comex/testes/TestaJpaProduto.java @@ -1,11 +1,10 @@ -package br.com.alura.comex; +package br.com.alura.comex.testes; import br.com.alura.comex.dao.CategoriaDao; import br.com.alura.comex.dao.ProdutoDao; import br.com.alura.comex.model.Categoria; import br.com.alura.comex.model.Produto; -import javax.persistence.EntityManager; import java.math.BigDecimal; public class TestaJpaProduto { diff --git a/src/main/java/br/com/alura/comex/TestaPedido.java b/src/main/java/br/com/alura/comex/testes/TestaPedido.java similarity index 89% rename from src/main/java/br/com/alura/comex/TestaPedido.java rename to src/main/java/br/com/alura/comex/testes/TestaPedido.java index f22b42c1..2d7c9e89 100644 --- a/src/main/java/br/com/alura/comex/TestaPedido.java +++ b/src/main/java/br/com/alura/comex/testes/TestaPedido.java @@ -1,10 +1,7 @@ -package br.com.alura.comex; +package br.com.alura.comex.testes; import br.com.alura.comex.model.Cliente; import br.com.alura.comex.model.Endereco; -import br.com.alura.comex.model.Pedido; - -import java.math.BigDecimal; public class TestaPedido { public static void main(String[] args) { diff --git a/src/main/java/br/com/alura/comex/testes/TestaPedidoDao.java b/src/main/java/br/com/alura/comex/testes/TestaPedidoDao.java new file mode 100644 index 00000000..b82c2818 --- /dev/null +++ b/src/main/java/br/com/alura/comex/testes/TestaPedidoDao.java @@ -0,0 +1,32 @@ +package br.com.alura.comex.testes; + + +import br.com.alura.comex.dao.CategoriaDao; + +import java.math.BigDecimal; +import java.util.List; + +public class TestaPedidoDao { + public static void main(String[] args) { + + /* + CategoriaDao categoriaDao = new CategoriaDao(); + List relatorio = categoriaDao.gerarRelatorioVendasPorCategoria(); + + for (Object[] linha : relatorio) { + String nomeCategoria = (String) linha[0]; + Long quantidadeVendida = (Long) linha[1]; + BigDecimal montanteTotal = (BigDecimal) linha[2]; + + System.out.println("Categoria: " + nomeCategoria + + ", Quantidade Vendida: " + quantidadeVendida + + ", Montante Total: " + montanteTotal); + } + + */ + } + + + + +} diff --git a/src/main/java/br/com/alura/comex/TesteCliente.java b/src/main/java/br/com/alura/comex/testes/TesteCliente.java similarity index 94% rename from src/main/java/br/com/alura/comex/TesteCliente.java rename to src/main/java/br/com/alura/comex/testes/TesteCliente.java index 1d1ce0d6..f36a065f 100644 --- a/src/main/java/br/com/alura/comex/TesteCliente.java +++ b/src/main/java/br/com/alura/comex/testes/TesteCliente.java @@ -1,4 +1,4 @@ -package br.com.alura.comex; +package br.com.alura.comex.testes; import br.com.alura.comex.model.Cliente; import br.com.alura.comex.model.Endereco; diff --git a/src/main/java/br/com/alura/comex/TesteJpaComHibernate.java b/src/main/java/br/com/alura/comex/testes/TesteJpaComHibernate.java similarity index 97% rename from src/main/java/br/com/alura/comex/TesteJpaComHibernate.java rename to src/main/java/br/com/alura/comex/testes/TesteJpaComHibernate.java index d976a069..8fc5143b 100644 --- a/src/main/java/br/com/alura/comex/TesteJpaComHibernate.java +++ b/src/main/java/br/com/alura/comex/testes/TesteJpaComHibernate.java @@ -1,8 +1,7 @@ -package br.com.alura.comex; +package br.com.alura.comex.testes; import br.com.alura.comex.dao.ClienteDao; import br.com.alura.comex.model.Cliente; -import br.com.alura.comex.model.Endereco; public class TesteJpaComHibernate { diff --git a/src/main/java/br/com/alura/comex/TesteJpaItemPedido.java b/src/main/java/br/com/alura/comex/testes/TesteJpaItemPedido.java similarity index 96% rename from src/main/java/br/com/alura/comex/TesteJpaItemPedido.java rename to src/main/java/br/com/alura/comex/testes/TesteJpaItemPedido.java index a21110f0..89fe5aa8 100644 --- a/src/main/java/br/com/alura/comex/TesteJpaItemPedido.java +++ b/src/main/java/br/com/alura/comex/testes/TesteJpaItemPedido.java @@ -1,4 +1,4 @@ -package br.com.alura.comex; +package br.com.alura.comex.testes; import br.com.alura.comex.dao.ItemPedidoDao; import br.com.alura.comex.dao.PedidoDao; diff --git a/src/main/java/br/com/alura/comex/TesteProduto.java b/src/main/java/br/com/alura/comex/testes/TesteProduto.java similarity index 89% rename from src/main/java/br/com/alura/comex/TesteProduto.java rename to src/main/java/br/com/alura/comex/testes/TesteProduto.java index 03b60a30..14cf9e79 100644 --- a/src/main/java/br/com/alura/comex/TesteProduto.java +++ b/src/main/java/br/com/alura/comex/testes/TesteProduto.java @@ -1,8 +1,4 @@ -package br.com.alura.comex; - -import br.com.alura.comex.model.Produto; - -import java.math.BigDecimal; +package br.com.alura.comex.testes; public class TesteProduto { public static void main(String[] args) { diff --git a/src/main/java/br/com/alura/comex/JPAUtil.java b/src/main/java/br/com/alura/comex/util/JPAUtil.java similarity index 89% rename from src/main/java/br/com/alura/comex/JPAUtil.java rename to src/main/java/br/com/alura/comex/util/JPAUtil.java index 9ebd05be..b11bb673 100644 --- a/src/main/java/br/com/alura/comex/JPAUtil.java +++ b/src/main/java/br/com/alura/comex/util/JPAUtil.java @@ -1,4 +1,4 @@ -package br.com.alura.comex; +package br.com.alura.comex.util; import javax.persistence.EntityManager; import javax.persistence.Persistence; From 44909ca5728b0b6718059601c87c4a6a3204ba15 Mon Sep 17 00:00:00 2001 From: willbertini Date: Sat, 18 May 2024 00:51:36 -0300 Subject: [PATCH 08/10] Update TestaPedidoDao.java --- src/main/java/br/com/alura/comex/testes/TestaPedidoDao.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/br/com/alura/comex/testes/TestaPedidoDao.java b/src/main/java/br/com/alura/comex/testes/TestaPedidoDao.java index b82c2818..d185dd52 100644 --- a/src/main/java/br/com/alura/comex/testes/TestaPedidoDao.java +++ b/src/main/java/br/com/alura/comex/testes/TestaPedidoDao.java @@ -22,7 +22,7 @@ public static void main(String[] args) { ", Quantidade Vendida: " + quantidadeVendida + ", Montante Total: " + montanteTotal); } - + */ } From 9904e02cac7a8ef52f88fc7ecf6738c9983584c2 Mon Sep 17 00:00:00 2001 From: willbertini Date: Mon, 20 May 2024 00:47:47 -0300 Subject: [PATCH 09/10] Semana 9 --- html/css/style.css | 45 +++++++++++++++++++ html/index.html | 35 +++++++++++++++ .../br/com/alura/comex/dao/CategoriaDao.java | 8 ++-- .../alura/comex/testes/TestaPedidoDao.java | 2 + 4 files changed, 87 insertions(+), 3 deletions(-) create mode 100644 html/css/style.css create mode 100644 html/index.html diff --git a/html/css/style.css b/html/css/style.css new file mode 100644 index 00000000..9cc4bd3d --- /dev/null +++ b/html/css/style.css @@ -0,0 +1,45 @@ +body { + font-family: Arial, sans-serif; /* Define a fonte padrão do corpo da página */ + margin: 0; /* Remove as margens padrão do corpo */ +} + +header { + background-color: #f0f0f5; /* Define a cor de fundo do cabeçalho */ + padding: 20px 0; /* Adiciona espaçamento interno ao cabeçalho */ + text-align: center; /* Centraliza o conteúdo do cabeçalho */ +} + +h1 { + color: #333; /* Define a cor do título principal */ +} + +nav ul { + list-style: none; /* Remove marcadores da lista de navegação */ + padding: 0; /* Remove espaçamento interno da lista */ +} + +nav li { + display: inline; /* Exibe os itens do menu lado a lado */ + margin: 0 10px; /* Adiciona margem entre os itens do menu */ +} + +nav a { + text-decoration: none; /* Remove sublinhado dos links */ + color: #333; /* Define a cor dos links */ + font-weight: bold; /* Define o peso da fonte dos links */ +} + +main { + padding: 20px; /* Adiciona espaçamento interno ao conteúdo principal */ +} + +h2 { + color: #333; /* Define a cor dos títulos do conteúdo principal */ +} + +footer { + background-color: #333; /* Define a cor de fundo do rodapé */ + color: #fff; /* Define a cor do texto do rodapé */ + text-align: center; /* Centraliza o conteúdo do rodapé */ + padding: 10px 0; /* Adiciona espaçamento interno ao rodapé */ +} \ No newline at end of file diff --git a/html/index.html b/html/index.html new file mode 100644 index 00000000..12a9a0ba --- /dev/null +++ b/html/index.html @@ -0,0 +1,35 @@ + + + + + + Comex - Sua Plataforma de Comércio Exterior + + + + +
+

Comex

+ +
+ +
+

Bem-vindo ao Comex!

+

Sua solução completa para gerenciar as operações de comércio exterior da sua empresa.

+

Aqui você encontra uma diversidade de produtos, entre eles, eletrônicos, eletrodomesticos e utilidades em geral.

+
+ +
+

© 2024 Comex. Todos os direitos reservados.

+
+ + + \ No newline at end of file diff --git a/src/main/java/br/com/alura/comex/dao/CategoriaDao.java b/src/main/java/br/com/alura/comex/dao/CategoriaDao.java index 7be19b0d..56b545ee 100644 --- a/src/main/java/br/com/alura/comex/dao/CategoriaDao.java +++ b/src/main/java/br/com/alura/comex/dao/CategoriaDao.java @@ -30,9 +30,9 @@ public Categoria buscaPorId(Long id) { } public List gerarRelatorioVendasPorCategoria() { - String jpql = "SELECT c.nome AS categoria, " + - "SUM(ip.quantidade) AS quantidade_vendida, "+ - "SUM(ip.quantidade * ip.precoUnitario) AS montante_vendido "+ + String jpql = "SELECT c.nome AS nomeCategoria, " + + "SUM(ip.quantidade) AS quantidadeVendida, "+ + "SUM(ip.quantidade * ip.precoUnitario) AS montanteTotal "+ "FROM Categoria c JOIN Produto p "+ "ON c.id = p.categoria_id "+ "JOIN ItemPedido ip "+ @@ -42,4 +42,6 @@ public List gerarRelatorioVendasPorCategoria() { TypedQuery query = em.createQuery(jpql, Object[].class); return query.getResultList(); } + + } diff --git a/src/main/java/br/com/alura/comex/testes/TestaPedidoDao.java b/src/main/java/br/com/alura/comex/testes/TestaPedidoDao.java index d185dd52..8ef34018 100644 --- a/src/main/java/br/com/alura/comex/testes/TestaPedidoDao.java +++ b/src/main/java/br/com/alura/comex/testes/TestaPedidoDao.java @@ -23,7 +23,9 @@ public static void main(String[] args) { ", Montante Total: " + montanteTotal); } + */ + } From 33877306a386d3674332dbc89a156fd890b4d661 Mon Sep 17 00:00:00 2001 From: willbertini Date: Thu, 23 May 2024 03:09:16 -0300 Subject: [PATCH 10/10] Semana 10 --- pom.xml | 4 ++ .../comex/controller/CategoriaController.java | 7 +++- .../br/com/alura/comex/model/Cliente.java | 19 +++++++++ .../comex/repository/CategoriaRepository.java | 19 +++++++++ .../comex/repository/ClienteRepository.java | 19 +++++++++ .../comex/repository/ProdutoRepository.java | 22 ++++++++++ .../alura/comex/service/CategoriaService.java | 40 +++++++++++++++++++ .../alura/comex/service/ClienteService.java | 35 ++++++++++++++++ .../alura/comex/service/ProdutoService.java | 38 ++++++++++++++++++ src/main/resources/application.properties | 9 +++++ 10 files changed, 210 insertions(+), 2 deletions(-) create mode 100644 src/main/java/br/com/alura/comex/repository/CategoriaRepository.java create mode 100644 src/main/java/br/com/alura/comex/repository/ClienteRepository.java create mode 100644 src/main/java/br/com/alura/comex/repository/ProdutoRepository.java create mode 100644 src/main/java/br/com/alura/comex/service/CategoriaService.java create mode 100644 src/main/java/br/com/alura/comex/service/ClienteService.java create mode 100644 src/main/java/br/com/alura/comex/service/ProdutoService.java create mode 100644 src/main/resources/application.properties diff --git a/pom.xml b/pom.xml index 5abcef0d..a5493d21 100644 --- a/pom.xml +++ b/pom.xml @@ -59,5 +59,9 @@ org.springframework.boot spring-boot-starter-validation + + org.springframework.boot + spring-boot-starter-data-jpa +
\ No newline at end of file diff --git a/src/main/java/br/com/alura/comex/controller/CategoriaController.java b/src/main/java/br/com/alura/comex/controller/CategoriaController.java index e927d716..a905faec 100644 --- a/src/main/java/br/com/alura/comex/controller/CategoriaController.java +++ b/src/main/java/br/com/alura/comex/controller/CategoriaController.java @@ -3,6 +3,7 @@ import br.com.alura.comex.dao.CategoriaDao; import br.com.alura.comex.model.Categoria; import br.com.alura.comex.model.StatusCategoriaEnum; +import br.com.alura.comex.repository.CategoriaRepository; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -11,13 +12,15 @@ @RestController public class CategoriaController { + private CategoriaRepository categoriaRepository; + @RequestMapping("/categoria") public void cadastra(String nomeDaCategoria){ System.out.println("Estou cadastrando uma nova categoria! " + nomeDaCategoria); Categoria novaCategoria = new Categoria(nomeDaCategoria, StatusCategoriaEnum.ATIVO); - CategoriaDao categoriaDao = new CategoriaDao(); - categoriaDao.cadastra(novaCategoria); + categoriaRepository.save(novaCategoria); + } /* diff --git a/src/main/java/br/com/alura/comex/model/Cliente.java b/src/main/java/br/com/alura/comex/model/Cliente.java index 7ac6719c..ba90539b 100644 --- a/src/main/java/br/com/alura/comex/model/Cliente.java +++ b/src/main/java/br/com/alura/comex/model/Cliente.java @@ -28,6 +28,25 @@ public class Cliente { private Endereco endereco; + public String getNome() { + return nome; + } + + public String getCpf() { + return cpf; + } + + public String getEmail() { + return email; + } + + public String getProfissao() { + return profissao; + } + + public String getTelefone() { + return telefone; + } public void setNome(String nome) { this.nome = nome; diff --git a/src/main/java/br/com/alura/comex/repository/CategoriaRepository.java b/src/main/java/br/com/alura/comex/repository/CategoriaRepository.java new file mode 100644 index 00000000..954ee373 --- /dev/null +++ b/src/main/java/br/com/alura/comex/repository/CategoriaRepository.java @@ -0,0 +1,19 @@ +package br.com.alura.comex.repository; + +import br.com.alura.comex.model.Categoria; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface CategoriaRepository extends JpaRepository { + // Encontra todas as categorias com nome contendo o parâmetro (case-insensitive) + List findByNomeContainingIgnoreCase(String nome); + + // Encontra todas as categorias ordenadas pelo nome em ordem crescente + List findAllByOrderByNomeAsc(); + + + +} diff --git a/src/main/java/br/com/alura/comex/repository/ClienteRepository.java b/src/main/java/br/com/alura/comex/repository/ClienteRepository.java new file mode 100644 index 00000000..30662398 --- /dev/null +++ b/src/main/java/br/com/alura/comex/repository/ClienteRepository.java @@ -0,0 +1,19 @@ +package br.com.alura.comex.repository; + +import br.com.alura.comex.model.Categoria; +import br.com.alura.comex.model.Cliente; +import br.com.alura.comex.model.Produto; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface ClienteRepository extends JpaRepository { + + // Encontra todos os clientes com nome contendo o parâmetro (case-insensitive) + List findByNomeContainingIgnoreCase(String nome); + + // Encontra todos os clientes ordenados pelo nome em ordem crescente + List findAllByOrderByNomeAsc(); +} diff --git a/src/main/java/br/com/alura/comex/repository/ProdutoRepository.java b/src/main/java/br/com/alura/comex/repository/ProdutoRepository.java new file mode 100644 index 00000000..83618dd7 --- /dev/null +++ b/src/main/java/br/com/alura/comex/repository/ProdutoRepository.java @@ -0,0 +1,22 @@ +package br.com.alura.comex.repository; + +import br.com.alura.comex.model.Categoria; +import br.com.alura.comex.model.Produto; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface ProdutoRepository extends JpaRepository { + + // Encontra todos os produtos com nome contendo o parâmetro (case-insensitive) + List findByNomeContainingIgnoreCase(String nome); + + // Encontra todos os produtos ordenados pelo nome em ordem crescente + List findAllByOrderByNomeAsc(); + + @Query("SELECT p FROM Produto p WHERE p.quantidadeEstoque = 0") + List findProdutosIndisponiveis(); +} diff --git a/src/main/java/br/com/alura/comex/service/CategoriaService.java b/src/main/java/br/com/alura/comex/service/CategoriaService.java new file mode 100644 index 00000000..34c3f87f --- /dev/null +++ b/src/main/java/br/com/alura/comex/service/CategoriaService.java @@ -0,0 +1,40 @@ +package br.com.alura.comex.service; + +import br.com.alura.comex.model.Categoria; +import br.com.alura.comex.repository.CategoriaRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; + +@Service +public class CategoriaService { + @Autowired + CategoriaRepository repository; + + public void cadastro(Categoria novaCategoria) { + if (novaCategoria == null) return; + if (novaCategoria.getNome() == null) return; + + repository.save(novaCategoria); + } + + public Optional buscaPorId(Long categoriaId) { + return repository.findById(categoriaId); + } + + public List buscaPorNome(String nome){ + return repository.findByNomeContainingIgnoreCase(nome); + } + + public List listarCategorias(){ + return repository.findAllByOrderByNomeAsc(); + } + + + + + + +} diff --git a/src/main/java/br/com/alura/comex/service/ClienteService.java b/src/main/java/br/com/alura/comex/service/ClienteService.java new file mode 100644 index 00000000..ad4bc894 --- /dev/null +++ b/src/main/java/br/com/alura/comex/service/ClienteService.java @@ -0,0 +1,35 @@ +package br.com.alura.comex.service; + +import br.com.alura.comex.model.Cliente; +import br.com.alura.comex.model.Produto; +import br.com.alura.comex.repository.ClienteRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class ClienteService { + + @Autowired + private ClienteRepository repository; + + public void cadastro (Cliente novoCliente){ + if (novoCliente == null) return; + if (novoCliente.getNome() == null) return; + + repository.save(novoCliente); + } + + public void deleta(Cliente cliente) { + repository.delete(cliente); + } + + public List listarClientes(){ + return repository.findAllByOrderByNomeAsc(); + } + + public List buscaPorNome(String nome){ + return repository.findByNomeContainingIgnoreCase(nome); + } +} diff --git a/src/main/java/br/com/alura/comex/service/ProdutoService.java b/src/main/java/br/com/alura/comex/service/ProdutoService.java new file mode 100644 index 00000000..0ce82614 --- /dev/null +++ b/src/main/java/br/com/alura/comex/service/ProdutoService.java @@ -0,0 +1,38 @@ +package br.com.alura.comex.service; + +import br.com.alura.comex.model.Categoria; +import br.com.alura.comex.model.Produto; +import br.com.alura.comex.repository.ProdutoRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.persistence.TypedQuery; +import java.util.List; + +@Service +public class ProdutoService { + + @Autowired + private ProdutoRepository repository; + + public void cadastro (Produto novoProduto){ + if (novoProduto == null) return; + if (novoProduto.getNome() == null) return; + + repository.save(novoProduto); + } + + public List listarProdutos(){ + return repository.findAllByOrderByNomeAsc(); + } + + public List listarProdutosIndisponiveis(){ + return repository.findProdutosIndisponiveis(); + } + + public List buscaPorNome(String nome){ + return repository.findByNomeContainingIgnoreCase(nome); + } + + +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties new file mode 100644 index 00000000..1b34eb95 --- /dev/null +++ b/src/main/resources/application.properties @@ -0,0 +1,9 @@ +spring.datasource.url=jdbc:mysql://localhost:3306/comex_senac +spring.datasource.username=root +spring.datasource.password=12345 +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver +hibernate.dialect=org.hibernate.dialect.MySQL8Dialect + +spring.jpa.hibernate.ddl-auto=update +spring.jpa.show-sql=true +spring.jpa.format-sql=true \ No newline at end of file