package agilpizza.dao;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import agilpizza.modelo.Ingrediente;
import agilpizza.modelo.PizzaTradicional;

public class PizzaTradicionalDAO {

	private Map<String, PizzaTradicional> pizzaTradicional;

	/**
	 * Construtor padrão para o DAO que armazena pizzas tradicionais na memória.
	 * 
	 */
	public PizzaTradicionalDAO() {
		pizzaTradicional = new HashMap<String, PizzaTradicional>();
		pizzaTradicional.put("Portuguesa", new PizzaTradicional("Portuguesa", listaDePortuguesa()));
		pizzaTradicional.put("QuatroQueijos", new PizzaTradicional("QuatroQueijos", listaDeQuatroQueijos()));
		pizzaTradicional.put("Romana", new PizzaTradicional("Romana", listaDeRomana()));
		pizzaTradicional.put("Calabreza", new PizzaTradicional("Calabreza", listaDeCalabreza()));
		pizzaTradicional.put("Vegetariana", new PizzaTradicional("Vegetariana", listaDeVegetariana()));
	}

	private List<Ingrediente> listaDePortuguesa() {
		List<Ingrediente> listaPortuguesa = new ArrayList<Ingrediente>();
		listaPortuguesa.add(IngredienteDAO.getInstance().busca("Ovo"));
		listaPortuguesa.add(IngredienteDAO.getInstance().busca("Presunto"));
		listaPortuguesa.add(IngredienteDAO.getInstance().busca("Ervilha"));
		listaPortuguesa.add(IngredienteDAO.getInstance().busca("Cebola"));
		listaPortuguesa.add(IngredienteDAO.getInstance().busca("Muzzarela"));
		listaPortuguesa.add(IngredienteDAO.getInstance().busca("Molho de tomate"));
		return listaPortuguesa;
	}

	private List<Ingrediente> listaDeQuatroQueijos() {
		List<Ingrediente> listaQuatroQueijos = new ArrayList<Ingrediente>();
		listaQuatroQueijos.add(IngredienteDAO.getInstance().busca("Muzzarela"));
		listaQuatroQueijos.add(IngredienteDAO.getInstance().busca("Provolone"));
		listaQuatroQueijos.add(IngredienteDAO.getInstance().busca("Gorgonzola"));
		listaQuatroQueijos.add(IngredienteDAO.getInstance().busca("Parmesão"));
		listaQuatroQueijos.add(IngredienteDAO.getInstance().busca("Molho de tomate"));
		return listaQuatroQueijos;
	}

	private List<Ingrediente> listaDeRomana() {
		List<Ingrediente> listaRomana = new ArrayList<Ingrediente>();
		listaRomana.add(IngredienteDAO.getInstance().busca("Muzzarela"));
		listaRomana.add(IngredienteDAO.getInstance().busca("Aliche"));
		listaRomana.add(IngredienteDAO.getInstance().busca("Molho de tomate"));
		return listaRomana;
	}

	private List<Ingrediente> listaDeCalabreza() {
		List<Ingrediente> listaCalabreza = new ArrayList<Ingrediente>();
		listaCalabreza.add(IngredienteDAO.getInstance().busca("Calabresa"));
		listaCalabreza.add(IngredienteDAO.getInstance().busca("Cebola"));
		listaCalabreza.add(IngredienteDAO.getInstance().busca("Molho de tomate"));
		return listaCalabreza;
	}

	private List<Ingrediente> listaDeVegetariana() {
		List<Ingrediente> listaVegetariana = new ArrayList<Ingrediente>();
		listaVegetariana.add(IngredienteDAO.getInstance().busca("Escarola"));
		listaVegetariana.add(IngredienteDAO.getInstance().busca("Palmito"));
		listaVegetariana.add(IngredienteDAO.getInstance().busca("Muzzarela"));
		listaVegetariana.add(IngredienteDAO.getInstance().busca("Molho de tomate"));
		return listaVegetariana;
	}

	/**
	 * Busca pizzaTradicional pelo nome.
	 * 
	 * @param nomeDaPizzaTradicional
	 * @return PizzaTradicional encontrada.
	 */
	public PizzaTradicional buscaPizzaTradicional(String nomeDaPizzaTradicional) {
		return pizzaTradicional.get(nomeDaPizzaTradicional);
	}

	/**
	 * Busca todas as pizzaTradicional cadastradas.
	 * 
	 * @return	Coleção de pizzaTradicional cadastradas.
	 */
	public Collection<PizzaTradicional> buscaPizzaTradicional() {
		return pizzaTradicional.values();
	}
	
}