vista.RegistroVideojuegoServlet.java Source code

Java tutorial

Introduction

Here is the source code for vista.RegistroVideojuegoServlet.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package vista;

import controlador.RegistroDesarrolladorController;
import controlador.RegistroVideojuegoController;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.Resource;
import javax.persistence.EntityManagerFactory;
import javax.persistence.PersistenceUnit;
import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
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 javax.servlet.http.Part;
import javax.transaction.UserTransaction;
import modelo.Desarrollador;
import modelo.Videojuego;
import org.apache.commons.io.IOUtils;

/**
 *
 * @author Alejandro Hernndez Mora <alejandrohmora@ciencias.unam.mx>
 */
@WebServlet("/uploadVideojuego")
@MultipartConfig
public class RegistroVideojuegoServlet extends HttpServlet {

    @PersistenceUnit(unitName = "untitledWebpagePU")
    private EntityManagerFactory emf;

    @Resource
    private UserTransaction utx;

    private boolean validaNombreImagen(String ext) {
        return ext.toLowerCase().equals(".jpg") || ext.toLowerCase().equals(".png")
                || ext.toLowerCase().equals(".jpeg") || ext.toLowerCase().equals(".gif");
    }

    private boolean validaNombreVideo(String ext) {
        return ext.toLowerCase().equals(".mp4") || ext.toLowerCase().equals(".flv")
                || ext.toLowerCase().equals(".avi") || ext.toLowerCase().equals(".wmv");
    }

    private boolean validaNombreArchivo(String ext) {
        return ext.toLowerCase().equals(".zip");
    }

    private byte[] convierteArchivo(Part filePart, int tipo) {
        InputStream fileContent = null;
        byte[] imagen = null;
        try {
            InputStream inputStream = filePart.getInputStream();
            String fileName = filePart.getSubmittedFileName();
            String ext = fileName.substring(fileName.indexOf("."));
            boolean validacion = tipo == 1 ? validaNombreVideo(ext)
                    : tipo == 0 ? validaNombreImagen(ext) : validaNombreArchivo(ext);
            fileContent = filePart.getInputStream();
            //String nombreArchivo = validaHistorial(fileName, fileContent, usuario, email);
            if (validacion) {
                imagen = new byte[inputStream.available()];
                imagen = IOUtils.toByteArray(inputStream);
            }

        } catch (IOException ex) {
            Logger.getLogger(RegistroVideojuegoServlet.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                fileContent.close();
                return imagen;
            } catch (IOException ex) {
                Logger.getLogger(RegistroVideojuegoServlet.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return imagen;
    }

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");

        Videojuego videojuego = new Videojuego();
        videojuego.setNombre(request.getParameter("nombre"));
        videojuego.setCosto(Double.parseDouble(request.getParameter("costo")));
        videojuego.setDescripcion(request.getParameter("descripcion"));
        byte[] imagen;
        imagen = convierteArchivo(request.getPart("imagena"), 0);
        videojuego.setImagena(imagen);
        imagen = convierteArchivo(request.getPart("imagenb"), 0);
        videojuego.setImagenb(imagen);
        imagen = convierteArchivo(request.getPart("imagenc"), 0);
        videojuego.setImagenc(imagen);
        imagen = convierteArchivo(request.getPart("video"), 1);
        videojuego.setVideo(imagen);
        imagen = convierteArchivo(request.getPart("archivo"), 2);
        videojuego.setArchivo(imagen);
        videojuego.setLinkdescarga("down_" + videojuego.getNombre().replace(" ", "_"));

        RegistroVideojuegoController controller = new RegistroVideojuegoController(utx, emf);
        String mensaje = controller.registrar(videojuego);
        HttpSession session = request.getSession();
        Desarrollador desarrollador = (Desarrollador) session.getAttribute("desarrollador");
        if (desarrollador == null) {
            response.sendRedirect("loginDesarrollador.jsp");
        } else if (mensaje.equals("")) {
            response.sendRedirect("Galeria");
        } else {
            session.setAttribute("mensaje", mensaje);
            response.sendRedirect("subirVideojuego.jsp");
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}