CategoriaDAO.java
package model.DAO;
import model.beans.Categoria;
import model.storage.ConPool;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public final class CategoriaDAO implements DAO<Categoria> {
@Override
public Categoria getById(final int id) {
Categoria c = null;
if (id <= 0) {
throw new IllegalArgumentException("Id <= 0");
} else {
try (Connection con = ConPool.getInstance().getConnection()) {
try (PreparedStatement stmt =
con.prepareStatement("SELECT * FROM categoria "
+ "WHERE idCategoria = ?")) {
stmt.setInt(1, id);
ResultSet resultSet = stmt.executeQuery();
if (resultSet.next()) {
c = extract(resultSet);
}
}
return c;
} catch (SQLException e) {
throw new RuntimeException("SQL error: " + e.getMessage());
}
}
}
@Override
public List<Categoria> getAll() {
List<Categoria> cList = null;
try (Connection con = ConPool.getInstance().getConnection();
PreparedStatement stmt =
con.prepareStatement("SELECT * FROM categoria")) {
ResultSet resultSet = stmt.executeQuery();
cList = new ArrayList<>();
while (resultSet.next()) {
cList.add(extract(resultSet));
}
} catch (SQLException e) {
throw new RuntimeException("SQL error: " + e.getMessage());
}
return cList;
}
@Override
public boolean save(final Categoria entity) {
if (entity == null) {
throw new IllegalArgumentException("Null object");
} else {
try (Connection con = ConPool.getInstance().getConnection()) {
try (PreparedStatement stmt =
con.prepareStatement("INSERT INTO "
+ "categoria (nomeCategoria)"
+ " VALUES (?)",
PreparedStatement
.RETURN_GENERATED_KEYS)) {
stmt.setString(1, entity.getNome());
boolean flag = stmt.executeUpdate() > 0;
ResultSet set = stmt.getGeneratedKeys();
if (set.next()) {
entity.setIdCategoria(set.getInt(1));
}
return flag;
}
} catch (SQLException e) {
throw new RuntimeException("SQL error: " + e.getMessage());
}
}
}
@Override
public boolean update(final Categoria entity) {
if (entity == null) {
throw new IllegalArgumentException("Null object");
} else {
try (Connection con = ConPool.getInstance().getConnection()) {
try (PreparedStatement stmt =
con.prepareStatement("UPDATE categoria "
+ "SET nomeCategoria = ? "
+ "WHERE idCategoria = ?")) {
int index = 1;
stmt.setString(index++, entity.getNome());
stmt.setInt(index, entity.getIdCategoria());
return stmt.executeUpdate() > 0;
}
} catch (SQLException e) {
throw new RuntimeException("SQL error: " + e.getMessage());
}
}
}
@Override
public boolean delete(final Categoria entity) {
if (entity == null) {
throw new IllegalArgumentException("Null object");
} else {
try (Connection con = ConPool.getInstance().getConnection()) {
try (PreparedStatement stmt =
con.prepareStatement("DELETE FROM categoria "
+ "WHERE idCategoria = ?")) {
stmt.setInt(1, entity.getIdCategoria());
return stmt.executeUpdate() > 0;
}
} catch (SQLException e) {
throw new RuntimeException("SQL error: " + e.getMessage());
}
}
}
@Override
public Categoria extract(final ResultSet resultSet) throws SQLException {
if (resultSet != null) {
Categoria c = new Categoria();
c.setNome(resultSet.getString("nomeCategoria"));
c.setIdCategoria(resultSet.getInt("idCategoria"));
return c;
} else {
throw new IllegalArgumentException("Null object");
}
}
}