Setup postgresql connection

This commit is contained in:
GuilhermeWerner
2021-09-18 11:03:27 -03:00
parent 5b4b79a929
commit 2d5d47150b
4 changed files with 131 additions and 111 deletions

View File

@ -14,5 +14,10 @@
<artifactId>slf4j-simple</artifactId> <artifactId>slf4j-simple</artifactId>
<version>1.7.21</version> <version>1.7.21</version>
</dependency> </dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.16</version>
</dependency>
</dependencies> </dependencies>
</project> </project>

View File

@ -1,123 +1,129 @@
package dao; package dao;
import model.Produto; import model.Produto;
import java.sql.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;
public class ProdutoDAO { public class ProdutoDAO {
private List<Produto> produtos; private Connection conexao;
private int maxId = 0;
private File file; public ProdutoDAO() throws Exception {
private FileOutputStream fos; String driverName = "org.postgresql.Driver";
private ObjectOutputStream outputFile;
public int getMaxId() { String server = "localhost";
return maxId; int porta = 5432;
String username = "postgres";
String password = "1234";
String mydatabase = "postgres";
String url = "jdbc:postgresql://" + server + ":" + porta + "/" + mydatabase;
Class.forName(driverName);
conexao = DriverManager.getConnection(url, username, password);
} }
public ProdutoDAO(String filename) throws IOException { public int getRandomId() {
file = new File(filename); return (int) (Math.random() * (1000));
produtos = new ArrayList<Produto>();
if (file.exists()) {
readFromFile();
}
} }
public void add(Produto produto) { public boolean close() {
boolean status = false;
try { try {
produtos.add(produto); conexao.close();
this.maxId = (produto.getId() > this.maxId) ? produto.getId() : this.maxId; status = true;
this.saveToFile(); } catch (SQLException e) {
} catch (Exception e) { System.err.println(e.getMessage());
System.out.println("ERRO ao gravar o produto '" + produto.getDescricao() + "' no disco!");
} }
return status;
} }
public Produto get(int id) { public boolean inserirProduto(Produto produto) {
for (Produto produto : produtos) { boolean status = false;
if (id == produto.getId()) {
return produto; try {
Statement st = conexao.createStatement();
st.executeUpdate("INSERT INTO produto (id, descricao, preco, quantidade, dataFabricacao, dataValidade) "
+ "VALUES (" + produto.getId() + ", '" + produto.getDescricao() + "', '" + produto.getPreco()
+ "', '" + produto.getQuant() + "', '" + produto.getDataFabricacao() + "', '"
+ produto.getDataValidade() + "');");
st.close();
status = true;
} catch (SQLException u) {
throw new RuntimeException(u);
}
return status;
}
public boolean atualizarProduto(Produto produto) {
boolean status = false;
try {
Statement st = conexao.createStatement();
String sql = "UPDATE produto SET descricao = '" + produto.getDescricao() + "', preco = '"
+ produto.getPreco() + "', quantidade = '" + produto.getQuant() + "', dataFabricacao = '"
+ produto.getDataFabricacao() + "', dataValidade = '" + produto.getDataValidade() + "'"
+ " WHERE id = " + produto.getId();
st.executeUpdate(sql);
st.close();
status = true;
} catch (SQLException u) {
throw new RuntimeException(u);
}
return status;
}
public boolean excluirProduto(int id) {
boolean status = false;
try {
Statement st = conexao.createStatement();
st.executeUpdate("DELETE FROM produto WHERE id = " + id);
st.close();
status = true;
} catch (SQLException u) {
throw new RuntimeException(u);
}
return status;
}
public Produto[] getProdutos() {
Produto[] produtos = null;
try {
Statement st = conexao.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs = st.executeQuery("SELECT * FROM produto");
if (rs.next()) {
rs.last();
produtos = new Produto[rs.getRow()];
rs.beforeFirst();
for (int i = 0; rs.next(); i++) {
produtos[i] = new Produto(rs.getInt("id"), rs.getString("descricao"), rs.getFloat("preco"),
rs.getInt("quantidade")/* , rs.getDate("dataFabricacao"), rs.getDate("dataFabricacao") */);
}
} }
st.close();
} catch (Exception e) {
System.err.println(e.getMessage());
} }
return null;
}
public void update(Produto p) {
int index = produtos.indexOf(p);
if (index != -1) {
produtos.set(index, p);
this.saveToFile();
}
}
public void remove(Produto p) {
int index = produtos.indexOf(p);
if (index != -1) {
produtos.remove(index);
this.saveToFile();
}
}
public List<Produto> getAll() {
return produtos; return produtos;
} }
private List<Produto> readFromFile() { public Produto getProduto(int id) {
produtos.clear();
Produto produto = null; Produto produto = null;
try (FileInputStream fis = new FileInputStream(file);
ObjectInputStream inputFile = new ObjectInputStream(fis)) {
while (fis.available() > 0) {
produto = (Produto) inputFile.readObject();
produtos.add(produto);
maxId = (produto.getId() > maxId) ? produto.getId() : maxId;
}
} catch (Exception e) {
System.out.println("ERRO ao gravar produto no disco!");
e.printStackTrace();
}
return produtos;
}
private void saveToFile() {
try { try {
fos = new FileOutputStream(file, false); Statement st = conexao.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
outputFile = new ObjectOutputStream(fos); ResultSet rs = st.executeQuery("SELECT * FROM produto WHERE produto.id = " + id);
if (rs.first()) {
for (Produto produto : produtos) { produto = new Produto(rs.getInt("id"), rs.getString("descricao"), rs.getFloat("preco"),
outputFile.writeObject(produto); rs.getInt("quantidade")/* , rs.getDate("dataFabricacao"), rs.getDate("dataFabricacao") */);
} }
outputFile.flush(); st.close();
this.close(); } catch (SQLException u) {
} catch (Exception e) { throw new RuntimeException(u);
System.out.println("ERRO ao gravar produto no disco!");
e.printStackTrace();
} }
}
private void close() throws IOException { return produto;
outputFile.close();
fos.close();
}
@Override
protected void finalize() throws Throwable {
try {
this.saveToFile();
this.close();
} catch (Exception e) {
System.out.println("ERRO ao salvar a base de dados no disco!");
e.printStackTrace();
}
} }
} }

View File

@ -24,6 +24,15 @@ public class Produto implements Serializable {
dataValidade = LocalDate.now().plusMonths(6); // o default é uma validade de 6 meses. dataValidade = LocalDate.now().plusMonths(6); // o default é uma validade de 6 meses.
} }
public Produto(int id, String descricao, float preco, int quantidade) {
setId(id);
setDescricao(descricao);
setPreco(preco);
setQuant(quantidade);
dataFabricacao = LocalDateTime.now();
dataValidade = LocalDate.now().plusMonths(6); // o default é uma validade de 6 meses.
}
public Produto(int id, String descricao, float preco, int quantidade, LocalDateTime fabricacao, LocalDate v) { public Produto(int id, String descricao, float preco, int quantidade, LocalDateTime fabricacao, LocalDate v) {
setId(id); setId(id);
setDescricao(descricao); setDescricao(descricao);

View File

@ -1,9 +1,7 @@
package service; package service;
import java.io.IOException;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import dao.ProdutoDAO; import dao.ProdutoDAO;
import model.Produto; import model.Produto;
import spark.Request; import spark.Request;
@ -14,9 +12,9 @@ public class ProdutoService {
public ProdutoService() { public ProdutoService() {
try { try {
produtoDAO = new ProdutoDAO("produto.dat"); produtoDAO = new ProdutoDAO();
} catch (IOException e) { } catch (Exception e) {
System.out.println(e.getMessage()); e.printStackTrace();
} }
} }
@ -24,14 +22,16 @@ public class ProdutoService {
String descricao = request.queryParams("descricao"); String descricao = request.queryParams("descricao");
float preco = Float.parseFloat(request.queryParams("preco")); float preco = Float.parseFloat(request.queryParams("preco"));
int quantidade = Integer.parseInt(request.queryParams("quantidade")); int quantidade = Integer.parseInt(request.queryParams("quantidade"));
LocalDateTime dataFabricacao = LocalDateTime.parse(request.queryParams("dataFabricacao")); // LocalDateTime dataFabricacao =
LocalDate dataValidade = LocalDate.parse(request.queryParams("dataValidade")); // LocalDateTime.parse(request.queryParams("dataFabricacao"));
// LocalDate dataValidade =
// LocalDate.parse(request.queryParams("dataValidade"));
int id = produtoDAO.getMaxId() + 1; int id = produtoDAO.getRandomId();
Produto produto = new Produto(id, descricao, preco, quantidade, dataFabricacao, dataValidade); Produto produto = new Produto(id, descricao, preco, quantidade/* , dataFabricacao, dataValidade */);
produtoDAO.add(produto); produtoDAO.inserirProduto(produto);
response.status(201); // 201 Created response.status(201); // 201 Created
return id; return id;
@ -40,7 +40,7 @@ public class ProdutoService {
public Object get(Request request, Response response) { public Object get(Request request, Response response) {
int id = Integer.parseInt(request.params(":id")); int id = Integer.parseInt(request.params(":id"));
Produto produto = (Produto) produtoDAO.get(id); Produto produto = (Produto) produtoDAO.getProduto(id);
if (produto != null) { if (produto != null) {
response.header("Content-Type", "application/xml"); response.header("Content-Type", "application/xml");
@ -60,7 +60,7 @@ public class ProdutoService {
public Object update(Request request, Response response) { public Object update(Request request, Response response) {
int id = Integer.parseInt(request.params(":id")); int id = Integer.parseInt(request.params(":id"));
Produto produto = (Produto) produtoDAO.get(id); Produto produto = (Produto) produtoDAO.getProduto(id);
if (produto != null) { if (produto != null) {
produto.setDescricao(request.queryParams("descricao")); produto.setDescricao(request.queryParams("descricao"));
@ -69,7 +69,7 @@ public class ProdutoService {
produto.setDataFabricacao(LocalDateTime.parse(request.queryParams("dataFabricacao"))); produto.setDataFabricacao(LocalDateTime.parse(request.queryParams("dataFabricacao")));
produto.setDataValidade(LocalDate.parse(request.queryParams("dataValidade"))); produto.setDataValidade(LocalDate.parse(request.queryParams("dataValidade")));
produtoDAO.update(produto); produtoDAO.atualizarProduto(produto);
return id; return id;
} else { } else {
@ -82,11 +82,11 @@ public class ProdutoService {
public Object remove(Request request, Response response) { public Object remove(Request request, Response response) {
int id = Integer.parseInt(request.params(":id")); int id = Integer.parseInt(request.params(":id"));
Produto produto = (Produto) produtoDAO.get(id); Produto produto = (Produto) produtoDAO.getProduto(id);
if (produto != null) { if (produto != null) {
produtoDAO.remove(produto); produtoDAO.excluirProduto(id);
response.status(200); // success response.status(200); // success
return id; return id;
@ -98,7 +98,7 @@ public class ProdutoService {
public Object getAll(Request request, Response response) { public Object getAll(Request request, Response response) {
StringBuffer returnValue = new StringBuffer("<produtos type=\"array\">"); StringBuffer returnValue = new StringBuffer("<produtos type=\"array\">");
for (Produto produto : produtoDAO.getAll()) { for (Produto produto : produtoDAO.getProdutos()) {
returnValue.append("\n<produto>\n" + "\t<id>" + produto.getId() + "</id>\n" + "\t<descricao>" returnValue.append("\n<produto>\n" + "\t<id>" + produto.getId() + "</id>\n" + "\t<descricao>"
+ produto.getDescricao() + "</descricao>\n" + "\t<preco>" + produto.getPreco() + "</preco>\n" + produto.getDescricao() + "</descricao>\n" + "\t<preco>" + produto.getPreco() + "</preco>\n"
+ "\t<quantidade>" + produto.getQuant() + "</quantidade>\n" + "\t<fabricacao>" + "\t<quantidade>" + produto.getQuant() + "</quantidade>\n" + "\t<fabricacao>"