package com.atrium.servlet;

import java.io.IOException;
import java.text.MessageFormat;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.atrium.hibernate.Recetas;
import com.atrium.hibernate.modelo.IGestion_Recetas;
import com.atrium.spring.Acceso_ApplicationContext;

public class Sugerencias_Recetas extends HttpServlet
	implements Comparator<Recetas>{
	
	private boolean sentido;
	
	public void doPost(HttpServletRequest peticion,
		HttpServletResponse respuesta) throws ServletException, IOException{
		boolean valido = true;
		String salida = "jsp/inicio.jsp?tarea=recetas_sugeridas.jsp";
		String error_ingrediente1 = null;
		String error_ingrediente2 = null;
		String error_ingrediente3 = null;
		String error_ingrediente4 = null;
		String error_ingrediente5 = null;
		String error_ingrediente6 = null;
		String error_ingrediente7 = null;
		String error_ingrediente8 = null;
		String error_ingrediente9 = null;
		String error_ingrediente10 = null;
		String error_ingrediente11 = null;
		String error_ingrediente12 = null;
		String error_ingrediente13 = null;
		String error_ingrediente14 = null;
		String error_ingrediente15 = null;
		String ingrediente1 = peticion.getParameter("ingrediente1");
		String ingrediente2 = peticion.getParameter("ingrediente2");
		String ingrediente3 = peticion.getParameter("ingrediente3");
		String ingrediente4 = peticion.getParameter("ingrediente4");
		String ingrediente5 = peticion.getParameter("ingrediente5");
		String ingrediente6 = peticion.getParameter("ingrediente6");
		String ingrediente7 = peticion.getParameter("ingrediente7");
		String ingrediente8 = peticion.getParameter("ingrediente8");
		String ingrediente9 = peticion.getParameter("ingrediente9");
		String ingrediente10 = peticion.getParameter("ingrediente10");
		String ingrediente11 = peticion.getParameter("ingrediente11");
		String ingrediente12 = peticion.getParameter("ingrediente12");
		String ingrediente13 = peticion.getParameter("ingrediente13");
		String ingrediente14 = peticion.getParameter("ingrediente14");
		String ingrediente15 = peticion.getParameter("ingrediente15");
		
		if (ingrediente1.equals("")) {
			// ERROR DE NOMBRE VACIO
			valido = false;
			error_ingrediente1 = "El nombre es un campo obligatorio";
		} else if (ingrediente1.length() > 60) {
			// ERROR EN LA VALIDACION DE TAMAÑO DE CAMPO (60 PARA NOMBRE)
			valido = false;
			error_ingrediente1 = MessageFormat.format("El tamaño máximo para el nombre son 60 caracteres"
					, ingrediente1.length());
		}
		if (ingrediente2.length() > 60) {
			// ERROR EN LA VALIDACION DE TAMAÑO DE CAMPO (60 PARA CLAVE)
			error_ingrediente2 = MessageFormat.format("El tamaño máximo para la clave son 60 caracteres"
					, ingrediente2.length());
		}
		if (ingrediente3.length() > 60) {
			// ERROR EN LA VALIDACION DE TAMAÑO DE CAMPO (60 PARA CLAVE)
			error_ingrediente3 = MessageFormat.format("El tamaño máximo para la clave son 60 caracteres"
					, ingrediente3.length());
		}
		if (ingrediente4.length() > 60) {
			// ERROR EN LA VALIDACION DE TAMAÑO DE CAMPO (60 PARA CLAVE)
			error_ingrediente4 = MessageFormat.format("El tamaño máximo para la clave son 60 caracteres"
					, ingrediente4.length());
		}
		if (ingrediente5.length() > 60) {
			// ERROR EN LA VALIDACION DE TAMAÑO DE CAMPO (60 PARA CLAVE)
			error_ingrediente5 = MessageFormat.format("El tamaño máximo para la clave son 60 caracteres"
					, ingrediente5.length());
		}
		if (ingrediente6.length() > 60) {
			// ERROR EN LA VALIDACION DE TAMAÑO DE CAMPO (60 PARA CLAVE)
			error_ingrediente6 = MessageFormat.format("El tamaño máximo para la clave son 60 caracteres"
					, ingrediente6.length());
		}
		if (ingrediente7.length() > 60) {
			// ERROR EN LA VALIDACION DE TAMAÑO DE CAMPO (60 PARA CLAVE)
			error_ingrediente7 = MessageFormat.format("El tamaño máximo para la clave son 60 caracteres"
					, ingrediente7.length());
		}
		if (ingrediente8.length() > 60) {
			// ERROR EN LA VALIDACION DE TAMAÑO DE CAMPO (60 PARA CLAVE)
			error_ingrediente8 = MessageFormat.format("El tamaño máximo para la clave son 60 caracteres"
					, ingrediente8.length());
		}
		if (ingrediente9.length() > 60) {
			// ERROR EN LA VALIDACION DE TAMAÑO DE CAMPO (60 PARA CLAVE)
			error_ingrediente9 = MessageFormat.format("El tamaño máximo para la clave son 60 caracteres"
					, ingrediente9.length());
		}
		if (ingrediente10.length() > 60) {
			// ERROR EN LA VALIDACION DE TAMAÑO DE CAMPO (60 PARA CLAVE)
			error_ingrediente10 = MessageFormat.format("El tamaño máximo para la clave son 60 caracteres"
					, ingrediente10.length());
		}
		if (ingrediente11.length() > 60) {
			// ERROR EN LA VALIDACION DE TAMAÑO DE CAMPO (60 PARA CLAVE)
			error_ingrediente11 = MessageFormat.format("El tamaño máximo para la clave son 60 caracteres"
					, ingrediente11.length());
		}
		if (ingrediente12.length() > 60) {
			// ERROR EN LA VALIDACION DE TAMAÑO DE CAMPO (60 PARA CLAVE)
			error_ingrediente12 = MessageFormat.format("El tamaño máximo para la clave son 60 caracteres"
					, ingrediente12.length());
		}
		if (ingrediente13.length() > 60) {
			// ERROR EN LA VALIDACION DE TAMAÑO DE CAMPO (60 PARA CLAVE)
			error_ingrediente13 = MessageFormat.format("El tamaño máximo para la clave son 60 caracteres"
					, ingrediente13.length());
		}
		if (ingrediente14.length() > 60) {
			// ERROR EN LA VALIDACION DE TAMAÑO DE CAMPO (60 PARA CLAVE)
			error_ingrediente14 = MessageFormat.format("El tamaño máximo para la clave son 60 caracteres"
					, ingrediente14.length());
		}
		if (ingrediente15.length() > 60) {
			// ERROR EN LA VALIDACION DE TAMAÑO DE CAMPO (60 PARA CLAVE)
			error_ingrediente15 = MessageFormat.format("El tamaño máximo para la clave son 60 caracteres"
					, ingrediente15.length());
		}
		// 4º LOGICA/NEGOCIO
		if (valido) {
		
		IGestion_Recetas gestion_recetas = Acceso_ApplicationContext
				.getBean(IGestion_Recetas.class);
		List<Recetas> lista_recetas = gestion_recetas
				.consultar_RecetasPorIngredientes(ingrediente1, ingrediente2, ingrediente3
						, ingrediente4, ingrediente5, ingrediente6, ingrediente7
						, ingrediente8, ingrediente9, ingrediente10, ingrediente11
						, ingrediente12, ingrediente13, ingrediente14, ingrediente15);
			Collections.sort(lista_recetas, this);
			
			HttpSession session = peticion.getSession();			 
			session.setAttribute("lista_recetas", lista_recetas);
			
		}
		
		if (error_ingrediente1 != null) {
			peticion.setAttribute("error_nombre", error_ingrediente1);
		}
		if (error_ingrediente2 != null) {
			peticion.setAttribute("error_clave", error_ingrediente2);
		}
		if (error_ingrediente3 != null) {
			peticion.setAttribute("error_clave", error_ingrediente3);
		}
		if (error_ingrediente4 != null) {
			peticion.setAttribute("error_clave", error_ingrediente4);
		}
		if (error_ingrediente5 != null) {
			peticion.setAttribute("error_clave", error_ingrediente5);
		}
		if (error_ingrediente6 != null) {
			peticion.setAttribute("error_clave", error_ingrediente6);
		}
		if (error_ingrediente7 != null) {
			peticion.setAttribute("error_clave", error_ingrediente7);
		}
		if (error_ingrediente8 != null) {
			peticion.setAttribute("error_clave", error_ingrediente8);
		}
		if (error_ingrediente9 != null) {
			peticion.setAttribute("error_clave", error_ingrediente9);
		}
		if (error_ingrediente10 != null) {
			peticion.setAttribute("error_clave", error_ingrediente10);
		}
		if (error_ingrediente11 != null) {
			peticion.setAttribute("error_clave", error_ingrediente11);
		}
		if (error_ingrediente12 != null) {
			peticion.setAttribute("error_clave", error_ingrediente12);
		}
		if (error_ingrediente13 != null) {
			peticion.setAttribute("error_clave", error_ingrediente13);
		}
		if (error_ingrediente14 != null) {
			peticion.setAttribute("error_clave", error_ingrediente14);
		}
		if (error_ingrediente15 != null) {
			peticion.setAttribute("error_clave", error_ingrediente15);
		}
		
		
		
				
		
		RequestDispatcher pagina_salida = peticion.getRequestDispatcher(salida);
		pagina_salida.forward(peticion, respuesta);
	}
	
	public int compare(Recetas recetas1, Recetas recetas2) {
		int comparacion = 0;
		if (new Boolean(isSentido())) {
			comparacion = recetas1.getNombre().compareTo(
					recetas2.getNombre());
		} else {
			comparacion = recetas2.getNombre().compareTo(
					recetas1.getNombre());
		}
		return comparacion;
	}
	
	// ACCESORES PARA EL ATRIBUTO DE LA PAGINA
	public boolean isSentido() {
		return sentido;
	}

	public void setSentido(boolean sentido) {
		this.sentido = sentido;
	}

}
