From 9545b7de90520e19b9d1d87ccab69cae35d8df81 Mon Sep 17 00:00:00 2001
From: Giovanni Pereira <arcarigiovanni@gmail.com>
Date: Thu, 3 Aug 2023 15:23:53 +0000
Subject: [PATCH 1/2] Adicionado Teste.java

---
 src/main/java/com/example/Teste.java | 7 +++++++
 1 file changed, 7 insertions(+)
 create mode 100644 src/main/java/com/example/Teste.java

diff --git a/src/main/java/com/example/Teste.java b/src/main/java/com/example/Teste.java
new file mode 100644
index 00000000..c861594d
--- /dev/null
+++ b/src/main/java/com/example/Teste.java
@@ -0,0 +1,7 @@
+package com.example;
+
+public class Teste {
+    public static void main(String[] args) {
+        System.out.println("meu java\n");
+    }
+}

From d5d88f41a167dc8254c40446d7c09cb6cd70f542 Mon Sep 17 00:00:00 2001
From: Giovanni Pereira <arcarigiovanni@gmail.com>
Date: Wed, 16 Aug 2023 00:42:51 +0000
Subject: [PATCH 2/2] First commit

---
 .vscode/launch.json                         |  12 ++
 src/main/java/com/example/AppBDNovo.java    |  18 +++
 src/main/java/com/example/AppBd.java        | 139 ++++++++++++++++++++
 src/main/java/com/example/Marca.java        |  18 +++
 src/main/java/com/example/MathUtil.java     |  15 +++
 src/main/java/com/example/Produto.java      |  33 +++++
 src/test/java/com/example/MathUtilTest.java |  61 +++++++++
 7 files changed, 296 insertions(+)
 create mode 100644 .vscode/launch.json
 create mode 100644 src/main/java/com/example/AppBDNovo.java
 create mode 100644 src/main/java/com/example/AppBd.java
 create mode 100644 src/main/java/com/example/Marca.java
 create mode 100644 src/main/java/com/example/MathUtil.java
 create mode 100644 src/main/java/com/example/Produto.java
 create mode 100644 src/test/java/com/example/MathUtilTest.java

diff --git a/.vscode/launch.json b/.vscode/launch.json
new file mode 100644
index 00000000..1a9b9eed
--- /dev/null
+++ b/.vscode/launch.json
@@ -0,0 +1,12 @@
+{
+    "configurations": [
+        {
+            "type": "java",
+            "name": "AppBd",
+            "request": "launch",
+            "mainClass": "com.example.AppBd",
+            "projectName": "demo"
+        },
+        {}
+    ]
+}
\ No newline at end of file
diff --git a/src/main/java/com/example/AppBDNovo.java b/src/main/java/com/example/AppBDNovo.java
new file mode 100644
index 00000000..08876674
--- /dev/null
+++ b/src/main/java/com/example/AppBDNovo.java
@@ -0,0 +1,18 @@
+package com.example;
+
+import java.sql.DriverManager;
+import java.sql.SQLException;
+
+public class AppBDNovo {
+    public static void main(String[] args) {
+        try {
+            Class.forName("org.postgres.Driver");
+            var conn = DriverManager.getConnection("jdbc:postgresql://localhost/postgresql", "gitpod", "");
+        } catch (SQLException e) {
+            System.err.println("Não foi possível conectar a biblioteca: " +e.getMessage());
+        } catch (ClassNotFoundException e) {
+            System.err.println("Não foi possível conectar ao BD: " +e.getMessage());
+        }
+        
+    }
+}
diff --git a/src/main/java/com/example/AppBd.java b/src/main/java/com/example/AppBd.java
new file mode 100644
index 00000000..6c98dfda
--- /dev/null
+++ b/src/main/java/com/example/AppBd.java
@@ -0,0 +1,139 @@
+package com.example;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+
+public class AppBd {
+    private static final String PASSWORD = "";
+    private static final String USERNAME = "gitpod";
+    private static final String JDBC_URL = "jdbc:postgresql://localhost/postgres";
+    
+    public static void main(String[] args) {
+        new AppBd();
+    }
+
+    public AppBd(){
+        try (var conn = getConnection()){
+            listarEstados(conn);
+            localizarEstado(conn, "PR");
+
+            var marca = new Marca();
+            marca.setId(3L);
+
+            var produto = new Produto();
+            produto.setId(203L);
+            produto.setMarca(marca);
+            produto.setValor(190);
+            produto.setNome("Produto Novo");
+            
+            //inserirProduto(conn, produto);
+            alterarProduto(conn, produto);
+            excluirProduto(conn, 202L);
+            listarDadosTabela(conn, "produto");
+        } catch (SQLException e){
+            System.err.println("nao foi possivel carregar"+ e.getMessage());
+        }
+    }
+
+    private void excluirProduto(Connection conn ,long id) {
+        var sql = ("delete from produto where id = ?");
+        try {
+            var statement = conn.prepareStatement(sql);
+            statement.setLong(1, id);
+            statement.executeUpdate();
+        } catch (SQLException e) {
+            System.err.println("nao foi possivel excluir"+ e.getMessage());
+        }
+        
+    }
+
+    /*private void inserirProduto(Connection conn, Produto produto) {
+        var sql = "insert into produto(nome, marca_id, valor) values (?, ?, ?)";
+        try (var statement = conn.prepareStatement(sql)){
+            statement.setString(1, produto.getNome());
+            statement.setLong(2, produto.getMarca().getId());
+            statement.setDouble(3, produto.getValor());
+            statement.executeUpdate();
+        } catch (SQLException e) {
+            System.err.println("nao foi possivel carregar"+ e.getMessage());
+        }
+    }*/
+
+    private void alterarProduto(Connection conn, Produto produto) {
+        var sql = "update produto set nome = ?, marca_id = ?, valor = ? where id = ?";
+        try (var statement = conn.prepareStatement(sql)){
+            statement.setString(1, produto.getNome());
+            statement.setLong(2, produto.getMarca().getId());
+            statement.setDouble(3, produto.getValor());
+            statement.setLong(4, produto.getId());
+            statement.executeUpdate();
+        } catch (SQLException e) {
+            System.err.println("Erro na alteração do produto"+ e.getMessage());
+        }
+    }
+
+    private void listarDadosTabela(Connection conn, String tabela) {
+        var sql = "select * from "+ tabela ;
+        System.out.println(sql);
+        try {
+            var statement = conn.createStatement();
+            var result = statement.executeQuery(sql);
+            var metadata = result.getMetaData();
+            int cols = metadata.getColumnCount();
+            for (int i = 1; i<=cols; i++){
+                System.out.printf("%-25s |", metadata.getColumnName(i));
+            }
+            System.out.println();
+
+            while(result.next()){
+                for (int i = 1; i<=cols; i++){
+                    System.out.printf("%-25s |", result.getString(i));
+                }
+                System.out.println();
+            }
+        } catch (SQLException e) {
+            e.printStackTrace();
+        }
+    }
+
+    private void localizarEstado(Connection conn, String uf) {
+        try{
+            var sql = "select * from estado where uf = ?";
+            var statement = conn.prepareStatement(sql);
+            System.out.println(sql);
+            statement.setString(1, uf);
+            var result = statement.executeQuery();
+            if(result.next()){
+                System.out.printf("ID: %d Nome: %s UF: %s\n", result.getInt("id"), result.getString("nome"), result.getString("uf"));
+            }
+        } catch(SQLException e){
+            System.err.println("erro ao executar consulta");
+        }
+
+    }
+    private void listarEstados(Connection conn) {
+        try {
+            System.out.println("conexao realizada com sucesso");
+
+            var statement = conn.createStatement();
+            var result = statement.executeQuery("select * from estado");
+            while(result.next()){
+                System.out.printf("ID: %d Nome: %s UF: %s\n", result.getInt("id"), result.getString("nome"), result.getString("uf"));
+            }
+        } catch (SQLException e){
+            System.err.println("nao foi possivel carregar"+ e.getMessage());
+        }
+        }
+    private Connection getConnection() throws SQLException {
+        return DriverManager.getConnection(JDBC_URL,USERNAME, PASSWORD);
+    }
+
+    /*private void carregarDriverJDBC() {
+        try {
+            Class.forName("org.postgresql.Driver");
+        } catch (ClassNotFoundException e) {
+            System.err.println("nao foi possível carregar");
+        }
+    }*/
+}
diff --git a/src/main/java/com/example/Marca.java b/src/main/java/com/example/Marca.java
new file mode 100644
index 00000000..6bc699cc
--- /dev/null
+++ b/src/main/java/com/example/Marca.java
@@ -0,0 +1,18 @@
+package com.example;
+
+public class Marca {
+    private Long id;
+    private String nome;
+    public Long getId() {
+        return id;
+    }
+    public void setId(Long id) {
+        this.id = id;
+    }
+    public String getNome() {
+        return nome;
+    }
+    public void setNome(String nome) {
+        this.nome = nome;
+    }
+}
diff --git a/src/main/java/com/example/MathUtil.java b/src/main/java/com/example/MathUtil.java
new file mode 100644
index 00000000..f68d1155
--- /dev/null
+++ b/src/main/java/com/example/MathUtil.java
@@ -0,0 +1,15 @@
+package com.example;
+
+public class MathUtil {
+    public static int mdc (int a, int b){
+        a = Math.abs(a);
+        b = Math.abs(b);
+        int maior = Math.max(a, b);
+        b = Math.min(a,b);
+        a = maior;
+        if(b>0 && a%b ==0) return b;
+
+        if (b == 0) return Math.abs(a);
+        throw new UnsupportedOperationException("Nao é possível calcular");
+    }
+}
diff --git a/src/main/java/com/example/Produto.java b/src/main/java/com/example/Produto.java
new file mode 100644
index 00000000..6ae2c017
--- /dev/null
+++ b/src/main/java/com/example/Produto.java
@@ -0,0 +1,33 @@
+package com.example;
+
+public class Produto {
+    private Long id;
+    private String nome;
+    private double valor;
+
+    public double getValor() {
+        return valor;
+    }
+    public void setValor(double valor) {
+        this.valor = valor;
+    }
+    public Long getId() {
+        return id;
+    }
+    public void setId(Long id) {
+        this.id = id;
+    }
+    public String getNome() {
+        return nome;
+    }
+    public void setNome(String nome) {
+        this.nome = nome;
+    }
+    public Marca getMarca() {
+        return marca;
+    }
+    public void setMarca(Marca marca) {
+        this.marca = marca;
+    }
+    private Marca marca;
+}
diff --git a/src/test/java/com/example/MathUtilTest.java b/src/test/java/com/example/MathUtilTest.java
new file mode 100644
index 00000000..31f69b03
--- /dev/null
+++ b/src/test/java/com/example/MathUtilTest.java
@@ -0,0 +1,61 @@
+package com.example;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import org.junit.jupiter.api.Test;
+
+public class MathUtilTest {
+    @Test
+    void testMdcP1BImpar() {
+        int a=6, b=3;
+        int esperado=3;
+        int obtido = MathUtil.mdc(a, b);
+
+        assertEquals(esperado, obtido);
+    }
+
+    @Test
+    void testMdcP1BPar() {
+        int a=6, b=2;
+        int esperado=2;
+        int obtido = MathUtil.mdc(a, b);
+
+        assertEquals(esperado, obtido);
+    }
+
+    @Test
+    void testMdcP3Negativo() {
+        int a=-6, b=0;
+        int esperado=6;
+        int obtido = MathUtil.mdc(a, b);
+
+        assertEquals(esperado, obtido);
+    }
+
+    @Test
+    void testMdcP3Positivo() {
+        int a=6, b=0;
+        int esperado=6;
+        int obtido = MathUtil.mdc(a, b);
+
+        assertEquals(esperado, obtido);
+    }
+
+    @Test
+    void testMdcP5() {
+        int a=6, b=2;
+        int esperado= MathUtil.mdc(b, a);
+        int obtido = MathUtil.mdc(a, b);
+
+        assertEquals(esperado, obtido);
+    }
+
+    @Test
+    void testMdcP7() {
+        int a=6, b=2;
+        int esperado= MathUtil.mdc(-a, b);
+        int obtido = MathUtil.mdc(-a, -b);
+
+        assertEquals(esperado, obtido);
+    }
+}
