UpdateProductServlet.java
package com.popx.presentazione;
import com.google.gson.JsonObject;
import com.popx.modello.ProdottoBean;
import com.popx.persistenza.ProdottoDAOImpl;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
import java.io.InputStream;
@WebServlet("/updateProductServlet")
@MultipartConfig(maxFileSize = 2 * 1024 * 1024) // Max file size 2MB
public class UpdateProductServlet extends HttpServlet {
private final ProdottoDAOImpl prodottoDAO = new ProdottoDAOImpl();
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("application/json");
JsonObject jsonResponse = new JsonObject();
try {
// Recupero e validazione dei dati del prodotto
String idProduct = request.getParameter("idProduct");
String name = request.getParameter("name");
String description = request.getParameter("description");
double price = Double.parseDouble(request.getParameter("price"));
int qty = Integer.parseInt(request.getParameter("qty"));
String brand = request.getParameter("brand");
String figure = request.getParameter("figure");
Part imgPart = request.getPart("img_src");
String currentImgSrc = request.getParameter("current_img_src");
// Creazione del prodotto da aggiornare
ProdottoBean prodotto = new ProdottoBean(idProduct, name, description, price, qty, brand, null, figure);
if (imgPart != null && imgPart.getSize() > 0) {
// Se è stata caricata una nuova immagine
if (imgPart.getContentType().startsWith("image/")) {
try (InputStream imgInputStream = imgPart.getInputStream()) {
byte[] imgBytes = imgInputStream.readAllBytes();
prodotto.setImg(imgBytes);
}
} else {
jsonResponse.addProperty("success", false);
jsonResponse.addProperty("message", "Il file caricato non è un'immagine valida.");
response.getWriter().write(jsonResponse.toString());
return;
}
} else if (currentImgSrc != null && !currentImgSrc.isEmpty()) {
// Se non è stata caricata una nuova immagine, utilizza quella esistente
ProdottoBean existingProduct = prodottoDAO.getProdottoById(idProduct);
if (existingProduct != null) {
prodotto.setImg(existingProduct.getImg());
}
} else {
// Nessuna immagine presente
prodotto.setImg(null);
}
// Aggiornamento del prodotto nel database
boolean isUpdated = prodottoDAO.updateProduct(prodotto);
if (isUpdated) {
jsonResponse.addProperty("success", true);
jsonResponse.addProperty("message", "Prodotto aggiornato con successo.");
} else {
jsonResponse.addProperty("success", false);
jsonResponse.addProperty("message", "Errore durante l'aggiornamento del prodotto.");
}
} catch (Exception e) {
e.printStackTrace();
jsonResponse.addProperty("success", false);
jsonResponse.addProperty("message", "Errore interno: " + e.getMessage());
}
response.getWriter().write(jsonResponse.toString());
}
}