SaveCustom.java

package control;

import model.CarrelloModel;
import model.maglietta.MagliettaBean;
import model.maglietta.MagliettaDAO;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.sql.SQLException;

@WebServlet("/SaveCustom")
public class SaveCustom extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {

        final String PATH = req.getServletContext().getRealPath("/images/grafiche/");
        final String ERROR_PAGE = "/pages/errorpage.jsp";
        String imgData = req.getParameter("imgData");

        if (imgData == null || imgData.isEmpty()) {
            req.getRequestDispatcher(ERROR_PAGE).forward(req, resp);
            return;
        }

        MagliettaDAO magliettaDAO = new MagliettaDAO();

        try {
            String base64Data = imgData.substring(imgData.indexOf(",") + 1);
            byte[] imageBytes = java.util.Base64.getDecoder().decode(base64Data);

            String nomeFile = magliettaDAO.getMaxID() + "PersonalizzataCustom.png";
            String relativePath = "images/grafiche/" + nomeFile;
            String filePath = PATH + nomeFile;

            java.nio.file.Files.write(
                    java.nio.file.Paths.get(filePath),
                    imageBytes
            );

            MagliettaBean maglietta = new MagliettaBean();
            maglietta.setNome("Custom");
            maglietta.setColore(req.getParameter("colore"));
            maglietta.setTipo("Personalizzata");
            maglietta.setPrezzo(20);
            maglietta.setIVA(3);
            maglietta.setDescrizione("Maglietta custom");
            maglietta.setGrafica(relativePath);

            magliettaDAO.doSave(maglietta);

            HttpSession session = req.getSession();
            CarrelloModel carrello;

            synchronized (session) {
                carrello = (CarrelloModel) session.getAttribute("carrello");
                if (carrello == null) {
                    carrello = new CarrelloModel();
                    session.setAttribute("carrello", carrello);
                }
            }

            int idMaglietta = magliettaDAO.getMaxID() - 1;
            String taglia = req.getParameter("taglia");

            carrello.aggiungi(idMaglietta, taglia);
            resp.sendRedirect("pages/carrello.jsp");

        } catch (SQLException | IOException e) {
            req.getRequestDispatcher(ERROR_PAGE).forward(req, resp);
        }
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        doPost(req, resp);
    }
}