ImmagineDAO.java
package model.DAO;
import model.beans.Campagna;
import model.beans.Immagine;
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 ImmagineDAO implements DAO<Immagine> {
@Override
public Immagine getById(final int id) {
if (id > 0) {
try (Connection connection = ConPool.getInstance().getConnection()) {
String query = "SELECT * FROM immagine WHERE idImmagine = ?";
try (PreparedStatement preparedStatement =
connection.prepareStatement(query)) {
preparedStatement.setInt(1, id);
ResultSet resultSet = preparedStatement.executeQuery();
Immagine immagine = null;
if (resultSet.next()) {
immagine = extract(resultSet);
}
return immagine;
}
} catch (SQLException e) {
throw new RuntimeException("SQL error: " + e.getMessage());
}
} else {
throw new IllegalArgumentException("Null object");
}
}
@Override
public List<Immagine> getAll() {
try (Connection connection = ConPool.getInstance().getConnection()) {
String query = "SELECT * FROM immagine";
try (PreparedStatement preparedStatement =
connection.prepareStatement(query)) {
ResultSet resultSet = preparedStatement.executeQuery();
List<Immagine> immagineList = new ArrayList<>();
while (resultSet.next()) {
immagineList.add(extract(resultSet));
}
return immagineList;
}
} catch (SQLException e) {
throw new RuntimeException("SQL error: " + e.getMessage());
}
}
@Override
public boolean save(final Immagine entity) {
if (entity != null) {
try (Connection connection =
ConPool.getInstance().getConnection()) {
String query =
"INSERT INTO immagine (idCampagna, path) "
+ "VALUES (?,?)";
try (PreparedStatement preparedStatement =
connection.prepareStatement(query,
PreparedStatement
.RETURN_GENERATED_KEYS)) {
int index = 1;
preparedStatement.setInt(index++,
entity.getCampagna().getIdCampagna());
preparedStatement.setString(index++, entity.getPath());
boolean esito = preparedStatement.executeUpdate() > 0;
ResultSet resultSet = preparedStatement.getGeneratedKeys();
if (resultSet.next()) {
entity.setId(resultSet.getInt(1));
}
return esito;
}
} catch (SQLException e) {
throw new RuntimeException("SQL error: " + e.getMessage());
}
} else {
throw new IllegalArgumentException("Null object");
}
}
@Override
public boolean update(final Immagine entity) {
if (entity != null) {
try (Connection connection =
ConPool.getInstance().getConnection()) {
String query = "UPDATE immagine "
+ "SET path = ? WHERE idImmagine = ?";
try (PreparedStatement preparedStatement =
connection.prepareStatement(query)) {
int index = 1;
preparedStatement.setString(index++, entity.getPath());
preparedStatement.setInt(index, entity.getId());
return preparedStatement.executeUpdate() > 0;
}
} catch (SQLException e) {
throw new RuntimeException("SQL error: " + e.getMessage());
}
} else {
throw new IllegalArgumentException("Null object");
}
}
@Override
public boolean delete(final Immagine entity) {
if (entity != null) {
try (Connection connection =
ConPool.getInstance().getConnection()) {
String query =
"DELETE FROM immagine WHERE idImmagine = ?";
try (PreparedStatement preparedStatement =
connection.prepareStatement(query)) {
preparedStatement.setInt(1, entity.getId());
return preparedStatement.executeUpdate() > 0;
}
} catch (SQLException e) {
throw new RuntimeException("SQL error: " + e.getMessage());
}
} else {
throw new IllegalArgumentException("Null object");
}
}
@Override
public Immagine extract(final ResultSet resultSet)
throws SQLException {
if (resultSet != null) {
Immagine immagine = new Immagine();
immagine.setId(resultSet.getInt("idImmagine"));
immagine.setPath(resultSet.getString("path"));
Campagna campagna = new Campagna();
campagna.setIdCampagna(resultSet.getInt("idCampagna"));
immagine.setCampagna(campagna);
return immagine;
} else {
throw new IllegalArgumentException("Null object");
}
}
/**
* Permette la cancellazione di tutte le foto collegate di una campagna.
*
* @param idCampagna l'idCampagna della campagna
* @return l'esito con cui si รจ conclusa l'operazione
*/
public boolean deleteByIdCampagna(final int idCampagna) {
if (idCampagna > 0) {
try (Connection connection =
ConPool.getInstance().getConnection()) {
String query =
"DELETE FROM immagine WHERE idCampagna = ?";
try (PreparedStatement preparedStatement =
connection.prepareStatement(query)) {
preparedStatement.setInt(1, idCampagna);
return preparedStatement.executeUpdate() > 0;
}
} catch (SQLException e) {
throw new RuntimeException("SQL error: " + e.getMessage());
}
} else {
throw new IllegalArgumentException("Id <= 0");
}
}
/**
* @param idCampagna id della campagna
* @return tutte le immagini della campagna
*/
public List<Immagine> getByIdCampagna(final int idCampagna) {
if (idCampagna > 0) {
try (Connection connection = ConPool.getInstance().getConnection()) {
List<Immagine> immagineList = new ArrayList<>();
String query = "SELECT * FROM immagine WHERE idCampagna = ?";
try (PreparedStatement preparedStatement =
connection.prepareStatement(query)) {
preparedStatement.setInt(1, idCampagna);
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
immagineList.add(extract(resultSet));
}
return immagineList;
}
} catch (SQLException e) {
throw new RuntimeException("SQL error: " + e.getMessage());
}
} else {
throw new IllegalArgumentException("Id <= 0");
}
}
}