Controlador.Contr_Evento.java Source code

Java tutorial

Introduction

Here is the source code for Controlador.Contr_Evento.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 Controlador;

import Modelo.Cls_Evento;
import Modelo.Cls_Mensajeria;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
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 org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

/**
 *
 * @author santiago
 */
@WebServlet(name = "Contr_Evento", urlPatterns = { "/Contr_Evento" })
public class Contr_Evento extends HttpServlet {

    /**
     * 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 {
        /*Se detalla el contenido que tendra el servlet*/
        response.setContentType("text/html;charset=UTF-8");
        request.setCharacterEncoding("UTF-8");
        /*Se crea una variable para la sesion*/
        HttpSession session = request.getSession(true);

        boolean b;
        try {
            /*Se declaran las variables necesarias*/
            Cls_Evento eve = new Cls_Evento();
            Cls_Mensajeria sms = new Cls_Mensajeria();
            String Codigo = "", Mensaje = "", Nombre = "", Tipo = "", Imagen = "", url, Peti;
            String urlsalidaimg;
            urlsalidaimg = "/media/santiago/Santiago/IMGTE/";
            //urlsalidaimg = "I:\\IMGTE\\";
            String urlimgservidor = this.getServletContext().getRealPath("/Libs/Customs/images/Evento");

            /*FileItemFactory es una interfaz para crear FileItem*/
            FileItemFactory file_factory = new DiskFileItemFactory();

            /*ServletFileUpload esta clase convierte los input file a FileItem*/
            ServletFileUpload servlet_up = new ServletFileUpload(file_factory);
            /*sacando los FileItem del ServletFileUpload en una lista */

            List items = servlet_up.parseRequest(request);
            Iterator it = items.iterator();

            /*Se evalua cada una de las posibles peticiones y los posibles campos que envien*/
            while (it.hasNext()) {
                FileItem item = (FileItem) it.next();
                if (item.isFormField()) {
                    //Plain request parameters will come here. 

                    String name = item.getFieldName();
                    if (name.equals("Creador")) {
                        /*Se guarda el campo en la clase*/
                        eve.setCreador(item.getString());
                    } else if (name.equals("Nombre")) {
                        /*Se guarda el campo en la clase*/
                        eve.setNombre(item.getString());
                    } else if (name.equals("Codigo")) {
                        /*Se guarda el campo en la clase*/
                        eve.setCodigo(item.getString());
                    } else if (name.equals("Rango")) {
                        /*Se guarda el campo en la clase*/
                        eve.setRango(item.getString());
                    } else if (name.equals("Rangomaximo")) {
                        /*Se guarda el campo en la clase*/
                        eve.setRangoMaximo(item.getString());
                    } else if (name.equals("Fecha")) {
                        /*Se guarda el campo en la clase*/
                        eve.setFecha(item.getString());
                    } else if (name.equals("Descripcion")) {
                        /*Se guarda el campo en la clase*/
                        eve.setDescipcion(item.getString());
                    } else if (name.equals("Ciudad")) {
                        /*Se guarda el campo en la clase*/
                        eve.setCiudad(item.getString());
                    } else if (name.equals("Direccion")) {
                        /*Se guarda el campo en la clase*/
                        eve.setDireccion(item.getString());
                    } else if (name.equals("Motivo")) {
                        /*Se guarda el campo en la clase*/
                        eve.setMotivo(item.getString());
                    } else if (name.equals("Latitud")) {
                        /*Se guarda el campo en la clase*/
                        eve.setLatitud(item.getString());
                    } else if (name.equals("Longitud")) {
                        /*Se guarda el campo en la clase*/
                        eve.setLongitud(item.getString());
                    } else if (name.equals("RegistrarEvento")) {
                        /*Se convierte la fecha a date*/
                        if (eve.ConvertirFecha(eve.getFecha())) {
                            /*Se evalua si la fecha tiene dos dias mas a la fecha de hoy*/
                            if (eve.ValidarDosDiasFecha(eve.getFechaDate())) {
                                /*Se evalua si se mando una iamgen*/
                                if (!eve.getImagen().equals("")) {
                                    /*Si se envia una imagen obtiene la imagen para eliminarla luego*/
                                    File img = new File(eve.getImagen());
                                    /*Se ejecuta el metodo de registrar evento, en la clase modelo
                                     con los datos que se encuentran en la clase*/
                                    String rangoprecios = eve.getRango() + "-" + eve.getRangoMaximo();
                                    b = eve.setRegistrarEvento(eve.getTypeimg(), eve.getNombre(),
                                            eve.getFechaDate(), eve.getDescipcion(), rangoprecios, eve.getCreador(),
                                            eve.getCiudad(), eve.getDireccion(), eve.getLatitud(),
                                            eve.getLongitud());
                                    if (b) {
                                        File imagedb = new File(
                                                urlimgservidor + "/" + eve.getCodigo() + eve.getTypeimg());
                                        img.renameTo(imagedb);
                                        /*Se guarda un mensaje mediante las sesiones
                                         y se redirecciona*/
                                        session.setAttribute("Mensaje",
                                                "Se registro el evento satisfactoriamente.");
                                        session.setAttribute("TipoMensaje", "Dio");
                                        response.sendRedirect(
                                                "View/RClasificacionEvento.jsp?CodigoEvento=" + eve.getCodigo());
                                    } else {
                                        img.delete();
                                        /*Se guarda un mensaje mediante las sesiones
                                         y se redirecciona*/
                                        session.setAttribute("Mensaje", eve.getMensaje());
                                        session.setAttribute("TipoMensaje", "NODio");
                                        response.sendRedirect("View/RegistrarEvento.jsp");
                                    }
                                } else {
                                    /*Se guarda un mensaje mediante las sesiones
                                     y se redirecciona*/
                                    session.setAttribute("Mensaje",
                                            "Seleccione una imagen para registrar el evento");
                                    session.setAttribute("TipoMensaje", "NODio");
                                    response.sendRedirect("View/RegistrarEvento.jsp");
                                }

                            } else {
                                /*Se guarda un mensaje mediante las sesiones
                                 y se redirecciona*/
                                session.setAttribute("Mensaje",
                                        "No se puede registrar un evento que inicie antes de dos das");
                                session.setAttribute("TipoMensaje", "NODio");
                                response.sendRedirect("View/RegistrarEvento.jsp");
                            }
                        } else {
                            /*Se guarda un mensaje mediante las sesiones
                             y se redirecciona*/
                            session.setAttribute("Mensaje",
                                    "Ocurri un problema inesperado con la fecha del evento. Estamos trabajando para solucionar este problema.");
                            session.setAttribute("TipoMensaje", "NODio");
                            response.sendRedirect("View/RegistrarEvento.jsp");
                        }

                    } else if (name.equals("DesactivarEvento")) {
                        if (eve.validar_Cancelar_Evento_Un_Dia(eve.getCodigo())) {
                            /*Se ejecuta el metodo de desaprobar evento, en la clase modelo
                             con los datos que se encuentran en la clase*/
                            if (eve.setDesaprobarEvento(eve.getCodigo(), eve.getMotivo())) {
                                String[] Datos = eve.BuscarEventoParaMensaje(eve.getCodigo());
                                if (sms.EnviarMensajeCambioEstadoEvento(Datos, "Desaprobado", eve.getMotivo())) {
                                    /*Se guarda un mensaje mediante las sesiones
                                     y se redirecciona*/
                                    session.setAttribute("Mensaje", "Se cancel el evento satisfactoriamente.");
                                    session.setAttribute("TipoMensaje", "Dio");
                                } else {
                                    /*Se guarda un mensaje mediante las sesiones
                                     y se redirecciona*/
                                    session.setAttribute("Mensaje",
                                            "Se cancel el evento, pero no se logr enviar la notificacin al correo electrnico de la empresa.");
                                    session.setAttribute("TipoMensaje", "NODio");
                                }
                            } else {
                                /*Se guarda un mensaje mediante las sesiones
                                 y se redirecciona*/
                                session.setAttribute("Mensaje",
                                        "Ocurri un error al cancelar el evento. Estamos trabajando para solucionar este problema.");
                                session.setAttribute("TipoMensaje", "NODio");
                            }
                        } else {
                            session.setAttribute("Mensaje",
                                    "No se puede cancelar un evento antes de un da de su inicio. Lo lamentamos.");
                            session.setAttribute("TipoMensaje", "NODio");
                        }
                        response.sendRedirect("View/CEventoPendiente.jsp");
                    } else if (name.equals("DesactivarEventoAdmin")) {
                        if (eve.validar_Cancelar_Evento_Un_Dia(eve.getCodigo())) {
                            /*Se ejecuta el metodo de desaprobar evento, en la clase modelo
                             con los datos que se encuentran en la clase(administradir)*/
                            if (eve.setDesaprobarEvento(eve.getCodigo(), eve.getMotivo())) {
                                String[] Datos = eve.BuscarEventoParaMensaje(eve.getCodigo());
                                if (sms.EnviarMensajeCambioEstadoEvento(Datos, "Desaprobado", eve.getMotivo())) {
                                    /*Se guarda un mensaje mediante las sesiones
                                     y se redirecciona*/
                                    session.setAttribute("Mensaje", "Se desaprob el evento satisfactoriamente.");
                                    session.setAttribute("TipoMensaje", "Dio");
                                } else {
                                    /*Se guarda un mensaje mediante las sesiones
                                     y se redirecciona*/
                                    session.setAttribute("Mensaje",
                                            "Se desaprob el evento, pero no se logr enviar la notificacin al correo electrnico de la empresa.");
                                    session.setAttribute("TipoMensaje", "NODio");
                                }
                            } else {
                                /*Se guarda un mensaje mediante las sesiones
                                 y se redirecciona*/
                                session.setAttribute("Mensaje",
                                        "Ocurri un error al desaprobar el evento. Estamos trabajando para solucionar este problema.");
                                session.setAttribute("TipoMensaje", "NODio");
                            }
                        } else {
                            session.setAttribute("Mensaje",
                                    "No se puede cancelar un evento antes de un da de su inicio. Lo lamentamos.");
                            session.setAttribute("TipoMensaje", "NODio");
                        }
                        response.sendRedirect("View/ConsultaTodosEventos.jsp");
                    } else if (name.equals("DesactivarEventoEmpresa")) {
                        if (eve.validar_Cancelar_Evento_Un_Dia(eve.getCodigo())) {
                            /*Se ejecuta el metodo de desaprobar evento, en la clase modelo
                             con los datos que se encuentran en la clase(Empresa)*/
                            if (eve.setCancelarEvento(eve.getCodigo(), eve.getMotivo())) {
                                session.setAttribute("Mensaje", "Se cancel el evento satisfactoriamente.");
                                session.setAttribute("TipoMensaje", "Dio");
                            } else {
                                session.setAttribute("Mensaje",
                                        "Ocurri un error al cancelar el evento. Estamos trabajando para solucionar este problema.");
                                session.setAttribute("TipoMensaje", "NODio");
                            }

                        } else {
                            session.setAttribute("Mensaje",
                                    "No se puede cancelar un evento antes de un da de su inicio. Lo lamentamos.");
                            session.setAttribute("TipoMensaje", "NODio");
                        }
                        response.sendRedirect("View/MisEventos.jsp");
                    }

                } else {
                    if (!item.getName().equals("")) {
                        //uploaded files will come here.
                        FileItem file = item;
                        String fieldName = item.getFieldName();
                        String fileName = item.getName();
                        String contentType = item.getContentType();
                        boolean isInMemory = item.isInMemory();
                        long sizeInBytes = item.getSize();

                        if (sizeInBytes > 1000000) {
                            /*Se muestra un mensaje en caso de pesar mas de 3 MB*/
                            session.setAttribute("Mensaje", "El tamao lmite de la imagen es: 1 MB");
                            session.setAttribute("TipoMensaje", "NODio");
                            /*Se redirecciona*/
                            response.sendRedirect("View/ConsultaSeleccion.jsp");
                        } else {
                            if (contentType.indexOf("jpeg") > 0 || contentType.indexOf("png") > 0) {
                                if (contentType.indexOf("jpeg") > 0) {
                                    contentType = ".jpg";
                                } else {
                                    contentType = ".png";
                                }
                                /*Se crea la imagne*/
                                File archivo_server = new File(urlimgservidor + "/" + item.getName());
                                /*Se guardael url de la imagen en la clase*/
                                eve.setImagen(urlimgservidor + "/" + item.getName());
                                eve.setTypeimg(contentType);
                                /*Se guarda la imagen*/
                                item.write(archivo_server);
                            } else {
                                session.setAttribute("Mensaje", "Solo se pueden registrar imagenes JPG o PNG");
                                session.setAttribute("TipoMensaje", "NODio");
                            }
                        }
                    } else {
                        /**
                         * Se guardael url de la imagen en la clase
                         */
                        eve.setImagen("");
                    }
                }
            }

            response.sendRedirect("View/index.jsp");
        } catch (FileUploadException ex) {
            System.out.print(ex.getMessage().toString());

        } catch (Exception ex) {
            Logger.getLogger(Contr_Seleccion.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    // <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>

}