/*
 * XXXX 
 *
 * Fecha 08/05/2007
 * 
 *  
 */
 
package com.ejie.p06b.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;



/**
 *  Esta clase representa un modelo abstracto que sirve como guía de
 *  implementación para los servlets de manejo de las pantallas de
 *  de la aplicación.
 *  Incluye una serie de métodos comunes a todos los servlets de manejo 
 *  de pantallas.
 */
public abstract class P06BServletGenerico extends P06BServlet {

    /**
     *  Representa la operación de petición HTTP get
     *  @param  request     Petición del cliente
     *  @param  response    Respuesta al cliente
     *  @throws ServletException
     *  @throws IOException
     */
    public void doGet (HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doPost (request, response);
    }

    /**
     *  Representa la operación de petición HTTP post
     *  @param  request     Petición del cliente
     *  @param  response    Respuesta al cliente
     *  @throws ServletException 
     *  @throws IOException
     */
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        if (verificarSesion(request, response)) {
            manejarErrorSesion(request, response);
        } else  {            
            manejarPeticion (request, response);
        }
    }

    /**
     *  Ejecuta la operación requerida por el usuario desde una pantalla.
     *  @param  request     Petición del cliente
     *  @param  response    Respuesta al cliente
     *  @throws ServletException 
     *  @throws IOException
     */
    public void manejarPeticion (HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
    	try 
    	{
    	    ejecutar (request, response);
    	}

    	catch (Exception e) 
    	{
            e.printStackTrace();
    		manejarErrores (request, response, e);
    	}
    }

    /**
     *  Operacion abstracta que gestionará las diferentes operaciones que 
     *  se manejarán desde una pantalla.
     *  @param  request     Petición del cliente
     *  @param  response    Respuesta al cliente
     */
    public abstract void ejecutar (HttpServletRequest request, HttpServletResponse response);

}