package docen_servlet01;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

/**********************************************************************************
 * Este servlet recibe dos parametros, valida que son convertibles a numérico y si
 * lo son, los redirige (SendRedirect) a otro servlet para que este muestre el producto.
 * Si no son válidos, devuelve un código de error en la respuesta: response.SC_NOT_FOUND.
 *********************************************************************************/
public class SendRedirect extends HttpServlet {
	private Propiedades acceso;                // Clase de propiedades: host, etc.
	private ServletContext sc;
	
	public void init(ServletConfig config) throws ServletException {
		super.init(config);
		sc = config.getServletContext();    // Obtengo contexto del servlet
		
		//// El path donde está el archivo de propiedades es 'contexto/propiedades/paquete/'
		//// sc.RealPath("/") me da el path del contexto de aplicación
		acceso = new Propiedades( sc.getRealPath("/")+"propiedades/" + getClass().getPackage().getName()+"/");
	}
	
	public void doGet(HttpServletRequest request, HttpServletResponse response)
											throws ServletException, IOException {
		try {
			//// Si he leido archivo de propiedades
			if ( acceso.mensajeError == null) {
			
				int num1 = Integer.parseInt(request.getParameter("num1"));
				int num2 = Integer.parseInt(request.getParameter("num2"));
				response.sendRedirect( acceso.getHostHTTP()+"servlet/SendRedirect2?num1="
						+request.getParameter("num1")+"&num2="+
						request.getParameter("num2"));
			}
			else {
			      response.setContentType("text/html; charset=iso-8859-1");  // Definir tipo de salida
			      PrintWriter out = response.getWriter();
				
			      //// Página para informar de error de lectura de propiedades
			      out.println("<html>");
			      out.println("<head><title>Ejemplo de Servlet</title></head>");
			      out.println("<body bgcolor=\"#FFFF9D\"><FONT color=\"#000080\" FACE=\"Arial,Helvetica,Times\" SIZE=2>");
			      out.println("<CENTER><H3>SendRedirect (1)</H3></CENTER><HR>");
			      out.println("<p>Error al leer de " + sc.getRealPath("/")+"propiedades/" + 
			    		  		getClass().getPackage().getName()+"/parametros.properties</p>"); 
			      out.println("</body></font></html>");
				
			}
		}
		catch (NumberFormatException e) {
			response.sendError( response.SC_NOT_FOUND, "Error en la conversión a numérico.");
		}
	}
	
	/*****************************************************************
	 * Procesar una petición HTTP con el método POST.
	 *****************************************************************/
	public void doPost( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}
	
}
