administracion.actions.OperacionesDatosRestauranteAction.java Source code

Java tutorial

Introduction

Here is the source code for administracion.actions.OperacionesDatosRestauranteAction.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 administracion.actions;

import administracion.modelo.Impuesto;
import administracion.modelo.Restaurante;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import com.opensymphony.xwork2.ActionSupport;
import java.io.IOException;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;

/**
 *
 * @author juang
 */
public class OperacionesDatosRestauranteAction extends ActionSupport
        implements ServletRequestAware, ServletResponseAware {

    //Variables para gestionar la peticion
    private HttpServletRequest request;
    private HttpServletResponse response;
    private ServletOutputStream output;

    @Override
    public String execute() throws Exception {
        //Obtenemos los datos del request
        String operacion = request.getParameter("operacion");

        GestorOperacionesDatosRestaurante gdt = new GestorOperacionesDatosRestaurante();
        int resultadoOperacion = 0;

        Gson gson = new GsonBuilder().create();

        switch (operacion) {
        case "modificarDatosLocal":
            String datosLocalRequest = request.getParameter("datosLocal");
            //Reconstruimos el objeto JSON usuario del request
            Restaurante restaurante = gson.fromJson(datosLocalRequest, Restaurante.class);

            //Realizamos la operacion
            resultadoOperacion = gdt.actualizarDatosRestaurante(restaurante);

            try {
                montarVistaDatosRestaurante(resultadoOperacion, restaurante);
            } catch (IOException e) {
                System.out.println(
                        "OperacionesDatosRestauranteAction. Error al montar la vista datos restaurante: " + e);
            }

            break;

        case "modificarNumeroMesas":
            int numeroMesas = Integer.parseInt(request.getParameter("numeroMesas"));
            int numeroMesasInicial = Integer.parseInt(request.getParameter("numeroMesasInicial"));

            //Realizamos la operacion
            resultadoOperacion = gdt.actualizarNumeroMesas(numeroMesasInicial, numeroMesas);

            try {
                montarVistaNumeroMesas(resultadoOperacion, numeroMesas, numeroMesasInicial);
            } catch (IOException e) {
                System.out.println(
                        "OperacionesDatosRestauranteAction. Error al montar la vista numero de mesas: " + e);
            }

            break;

        case "modificarImpuestos":
            String listaImpuestosRequest = request.getParameter("listaImpuestos");
            String listaImpuestosInicialesRequest = request.getParameter("listaImpuestosIniciales");

            //Reconstruimos el objeto JSON usuario del request y obtenemos una lista
            Type listTypeImpuesto = new TypeToken<ArrayList<Impuesto>>() {
            }.getType();
            List<Impuesto> listaImpuestos = gson.fromJson(listaImpuestosRequest, listTypeImpuesto);
            List<Impuesto> listaImpuestosIniciales = gson.fromJson(listaImpuestosInicialesRequest,
                    listTypeImpuesto);

            //Realizamos la operacion
            //Por este motivo tenemos los valores iniciales porque si recibimos 4 impuestos en la lista pero solo se ha modificado 1, solo modificamos ese
            for (int i = 0; i < listaImpuestos.size(); i++) {
                if (listaImpuestos.get(i).getValor() != listaImpuestosIniciales.get(i).getValor()) {
                    resultadoOperacion = gdt.insertarImpuesto(listaImpuestos.get(i));
                    if (resultadoOperacion != 1) {
                        break;
                    }
                }
            }

            try {
                montarVistaImpuestos(resultadoOperacion, listaImpuestos);
            } catch (IOException e) {
                System.out.println("OperacionesDatosRestauranteAction. Error al montar la vista impuestos: " + e);
            }

            break;
        }

        return null; //Devilvemos null para no tener na vista
    }

    private void montarVistaDatosRestaurante(int resultadoOperacion, Restaurante restaurante) throws IOException {
        try {
            //Configuramos los datos del response
            response.setContentType("text/html; charset=iso-8859-1");
            output = response.getOutputStream(); //Obtenemos una referencia al objeto que nos permite escribir en la respuesta del servlet

            switch (resultadoOperacion) {
            case 1:
                output.print("<p>" + getText("datosRestaurante.success.realizarOperacion") + "</p>*");
                break;
            default:
                output.print("<p>" + getText("datosRestaurante.error.realizarOperacion") + "</p>*");
                break;
            }

            output.print("<form id='formDatosLocal'>");
            output.print("<div id='divCif' class='form-group' data-toggle='divCif' data-placement='bottom' title='"
                    + getText("global.error.campoObligatorio") + "'/>");
            output.print("<label class='control-label' for='cif'>" + getText("datosRestaurante.cif") + "</label>");
            output.print("<input type='text' id='cif' class='form-control' name='cif' value='"
                    + restaurante.getCif() + "' required autocomplete='off' disabled='true' />");
            output.print("</div>");
            output.print(
                    "<div id='divNombre' class='form-group' data-toggle='divNombre' data-placement='bottom' title='"
                            + getText("global.error.campoObligatorio") + "'/>");
            output.print(
                    "<label class='control-label' for='nombre'>" + getText("datosRestaurante.nombre") + "</label>");
            output.print("<input type='text' id='nombre' class='form-control' name='nombre' value='"
                    + restaurante.getNombre() + "' required autocomplete='off' />");
            output.print("</div>");
            output.print(
                    "<div id='divDireccion' class='form-group' data-toggle='divDireccion' data-placement='bottom' title='"
                            + getText("global.error.campoObligatorio") + "'/>");
            output.print("<label class='control-label' for='direccion'>" + getText("datosRestaurante.direccion")
                    + "</label>");
            output.print("<input type='text' id='direccion' class='form-control' name='direccion' value='"
                    + restaurante.getDireccion() + "' required autocomplete='off' />");
            output.print("</div>");
            output.print(
                    "<div id='divTelefono' class='form-group' data-toggle='divTelefono' data-placement='bottom' title='"
                            + getText("global.error.telefonoFormato") + "'/>");
            output.print("<label class='control-label' for='telefono'>" + getText("datosRestaurante.telefono")
                    + "</label>");
            output.print("<input type='tel' id='telefono' class='form-control' name='telefono' value='"
                    + restaurante.getTelefono() + "' required autocomplete='off' />");
            output.print("</div>");
            output.print("<div style='float: left'>");
            output.print(
                    "<button type='button' id='botonModificarDatosLocal' class='btn btn-default btn-sm has-spinner' style='margin-right: 3px' disabled>"
                            + "<span class='spinner'><i class='glyphicon glyphicon-refresh spin'></i></span>"
                            + getText("datosRestaurante.aplicarCambios") + "</button></td>");
            output.print("</div>");
            output.print("</form>");
        } catch (Exception e) {
            System.out.println("OperacionesDatosRestauranteAction. Error al montar la vista resultado: " + e);
            throw e;
        } finally {
            //Cerramos el flujo de respuesta del servlet
            output.flush();
            output.close();
        }
    }

    private void montarVistaNumeroMesas(int resultadoOperacion, int numeroMesas, int numeroMesasInicial)
            throws IOException {
        try {
            //Configuramos los datos del response
            response.setContentType("text/html; charset=iso-8859-1");
            output = response.getOutputStream(); //Obtenemos una referencia al objeto que nos permite escribir en la respuesta del servlet

            switch (resultadoOperacion) {
            case 1:
                output.print("<p>" + getText("datosRestaurante.success.realizarOperacion") + "</p>*");
                break;
            case -1:
                output.print("<p>" + getText("datosRestaurante.error.mesaOcupada") + "</p>*");
                break;
            default:
                output.print("<p>" + getText("datosRestaurante.error.realizarOperacion") + "</p>*");
                break;
            }

            output.print("<form id='formNumeroMesas'>");
            output.print(
                    "<div id='divNumeroMesas' class='form-group' data-toggle='divNumeroMesas' data-placement='bottom' title='"
                            + getText("global.error.campoObligatorio") + "'/>");
            output.print("<label for='numeroMesas'>" + getText("datosRestaurante.numeroMesas") + "</label>");
            output.print("<input type='number' id='numeroMesas' class='form-control' name='numeroMesas' value='"
                    + numeroMesas + "' required autocomplete='off' step='1' />");
            output.print("</div>");
            output.print("<div style='float: left'>");
            output.print(
                    "<button type='button' id='botonModificarNumeroMesas' class='btn btn-default btn-sm has-spinner' style='margin-right: 3px' disabled>"
                            + "<span class='spinner'><i class='glyphicon glyphicon-refresh spin'></i></span>"
                            + getText("datosRestaurante.aplicarCambios") + "</button></td>");
            output.print("</div>");
            output.print("</form>");
        } catch (Exception e) {
            System.out.println("OperacionesDatosRestauranteAction. Error al montar la vista resultado: " + e);
            throw e;
        } finally {
            //Cerramos el flujo de respuesta del servlet
            output.flush();
            output.close();
        }
    }

    private void montarVistaImpuestos(int resultadoOperacion, List<Impuesto> listaImpuestos) throws IOException {
        try {
            //Configuramos los datos del response
            response.setContentType("text/html; charset=iso-8859-1");
            output = response.getOutputStream(); //Obtenemos una referencia al objeto que nos permite escribir en la respuesta del servlet

            switch (resultadoOperacion) {
            case 1:
                output.print("<p>" + getText("datosRestaurante.success.realizarOperacion") + "</p>*");
                break;
            default:
                output.print("<p>" + getText("datosRestaurante.error.realizarOperacion") + "</p>*");
                break;
            }

            output.print("<form id='formImpuestos'>");
            for (int i = 0; i < listaImpuestos.size(); i++) {
                if (listaImpuestos.get(i).getNombre().equals("iva")) {
                    output.print(
                            "<div id='divImpuestoIva' class='form-group' data-toggle='divImpuestoIva' data-placement='bottom' title='"
                                    + getText("global.error.campoObligatorio") + "'/>");
                    output.print("<label class='control-label'>" + listaImpuestos.get(i).getNombre() + "</label>");
                    output.print("<input type='number' id='iva' class='form-control' name='iva' value="
                            + listaImpuestos.get(i).getValor() + " placeholder="
                            + getText("datosRestaurante.impuestos") + " required autocomplete='off' step='0.1' />");
                    output.print("<s:hidden id='idIva' value='" + listaImpuestos.get(i).getIdImpuesto() + "' />");
                    output.print("</div>");
                } else if (listaImpuestos.get(i).getNombre().equals("servicio mesa")) {
                    output.print(
                            "<div id='divImpuestoServicioMesa' class='form-group' data-toggle='divImpuestoServicioMesa' data-placement='bottom' title='"
                                    + getText("global.error.campoObligatorio") + "'/>");
                    output.print("<label class='control-label'>" + listaImpuestos.get(i).getNombre() + "</label>");
                    output.print(
                            "<input type='number' id='servicio mesa' class='form-control' name='servicio mesa' value="
                                    + listaImpuestos.get(i).getValor() + " placeholder="
                                    + getText("datosRestaurante.impuestos")
                                    + " required autocomplete='off' step='0.1' />");
                    output.print("<s:hidden id='idServicioMesa' value='" + listaImpuestos.get(i).getIdImpuesto()
                            + "' />");
                    output.print("</div>");
                }
            }
            output.print("<div style='float: left'>");
            output.print(
                    "<button type='button' id='botonModificarImpuestos' class='btn btn-default btn-sm has-spinner' style='margin-right: 3px' disabled>"
                            + "<span class='spinner'><i class='glyphicon glyphicon-refresh spin'></i></span>"
                            + getText("datosRestaurante.aplicarCambios") + "</button></td>");
            output.print("</div>");
            output.print("</form>");
        } catch (Exception e) {
            System.out.println("OperacionesDatosRestauranteAction. Error al montar la vista resultado: " + e);
            throw e;
        } finally {
            //Cerramos el flujo de respuesta del servlet
            output.flush();
            output.close();
        }
    }

    @Override
    public void setServletRequest(HttpServletRequest hsr) {
        this.request = hsr;
    }

    @Override
    public void setServletResponse(HttpServletResponse hsr) {
        this.response = hsr;
    }

}