package servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class ConversorServlet
 */
@WebServlet("/ConversorServlet")
public class ConversorServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ConversorServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
		ArrayList<Float>resultado= new ArrayList<Float>();
		System.out.println("P1");
		int error=0;
		try {
			if(request.getParameter("P1")!=null && request.getParameter("P0")!=null) {
			System.out.println(request.getParameter("P0").toString());
			System.out.println(request.getParameter("P1").toString());
			String p0=(String) request.getParameter("P0");
			if(("C".equals(p0.toUpperCase())) || ("K".equals(p0.toUpperCase())) || ("F".equals(p0.toUpperCase()))) {
				
			}else {
				error=1;
			}
			
			resultado = convertidor(request.getParameter("P0").toString(),Float.parseFloat(request.getParameter("P1")));
			System.out.println("aca llego");
			request.setAttribute("P0", request.getParameter("P0"));
			request.setAttribute("P1", request.getParameter("P1"));
			request.setAttribute("array", resultado);
			}else {
				
				error=2;
				
				
			}
				
		} catch (Exception e) {
			// TODO: handle exception
			System.out.println("exploto");
			
			error=3;
			
			/*PrintWriter respuesta= response.getWriter();
			
			respuesta.println("<!DOCTYPE html>");
			respuesta.print("<html>");
			respuesta.println("<head>");
			respuesta.println("<meta charset=\"UTF-8\">");
			respuesta.println("<title>Convertidor!</title>");
			respuesta.println("</head>");
			respuesta.println("<body>");
			respuesta.println("El valor introducido no es valido" );
			respuesta.println("</body>");
			respuesta.println("</html>");
			return;*/
			 
		}
		finally {
			
			
			if(error==1) {
				request.setAttribute("resultado", "valor de palo no esperado");
				RequestDispatcher rd = request.getRequestDispatcher("Error.jsp");
		         if (rd != null) {
		             rd.forward(request, response);
		         }
			}else if(error==2){
				request.setAttribute("resultado", "Parametros nulos");
				RequestDispatcher rd = request.getRequestDispatcher("Error.jsp");
		         if (rd != null) {
		             rd.forward(request, response);
		         }
			}else if(error==3){
				request.setAttribute("resultado", "el valor no es numerico");
				RequestDispatcher rd = request.getRequestDispatcher("Error.jsp");
		         if (rd != null) {
		             rd.forward(request, response);
		         }
			}else {
				RequestDispatcher rd = request.getRequestDispatcher("/ConversorResultado.jsp");
		         if (rd != null) {
		             rd.forward(request, response);
		         }
			}
			
	        PrintWriter respuesta=response.getWriter(); 
	        respuesta.println("<!DOCTYPE html>");
	 		respuesta.print("<html>");
	 		respuesta.println("<head>");
	 		respuesta.println("<meta charset=\"UTF-8\">");
	 		respuesta.println("<title>Convertidor!</title>");
	 		respuesta.println("</head>");
	 		respuesta.println("<body>");
	 		respuesta.println("En grados Celsius: " + resultado.get(0) );
	 		respuesta.println("<br>");
	 		respuesta.println("En grados Fharenheit: " + resultado.get(1));
	 		respuesta.println("<br>");
	 		respuesta.println("En grados kelvin: " + resultado.get(2));
	 		respuesta.println("</body>");
	 		respuesta.println("</html>");
		}
		
		
	}
	
	
	protected ArrayList<Float> convertidor(String tipo_temperatura, Float temperatura) {
		ArrayList<Float> resultado= new ArrayList<Float>();
		resultado.add((float) 0);
		resultado.add((float) 0);
		resultado.add((float) 0);
		if(tipo_temperatura.toLowerCase().equals("c") ) {
			resultado.clear();
			resultado.add(temperatura);
			resultado.add((float) ((temperatura * 9/5) + 32));
			resultado.add((float) (temperatura + 273.15));
		}
		if(tipo_temperatura.toLowerCase().equals("f")) {
			
			resultado.clear();
			resultado.add((float)((temperatura - 32) * 5/9));
			resultado.add(temperatura);
			resultado.add((float)((temperatura - 32) * 5/9 + 273.15 ));
			
		}
		if(tipo_temperatura.toLowerCase().equals("k")) {
			resultado.clear();
			resultado.add((float)(temperatura - 273.15));
			resultado.add((float)((temperatura - 273.15) * 9/5 + 32));
			resultado.add(temperatura);
		}
		for(Float item: resultado) {
			System.out.println("asdasdasd");
			System.out.println(item);
		}
		return resultado;
	}
	
	

}
