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.CategoriaBebida;
import agilpizza.modelo.Bebida;

public class BebidasDAO {

	private Map<String, CategoriaBebida> categorias;

	/**
	 * Construtor padrão para o DAO que armazena categorias na memória.
	 * 
	 */
	public BebidasDAO() {
		categorias = new HashMap<String, CategoriaBebida>();
		categorias.put("Refrigerantes", new CategoriaBebida("Refrigerantes", listaDeRefrigerantes()));
		categorias.put("Cervejas", new CategoriaBebida("Cervejas", listaDeCervejas()));
		categorias.put("Vinhos", new CategoriaBebida("Vinhos", listaDeVinhos()));
		categorias.put("Outros", new CategoriaBebida("Outros", listaOutros()));
	}

	private List<Bebida> listaDeRefrigerantes() {
		List<Bebida> listaRefrigerantes = new ArrayList<Bebida>();
		listaRefrigerantes.add(new Bebida("Coca Cola", 5.0));
		listaRefrigerantes.add(new Bebida("Guaraná Antarctica", 5.0));
		listaRefrigerantes.add(new Bebida("Guaraná Kuat", 5.0));
		listaRefrigerantes.add(new Bebida("H2OH!", 5.0));
		listaRefrigerantes.add(new Bebida("Fanta Uva", 5.0));
		listaRefrigerantes.add(new Bebida("Fanta Laranja", 5.0));
		listaRefrigerantes.add(new Bebida("Schweppes", 7.0));
		return listaRefrigerantes;
	}

	private List<Bebida> listaDeCervejas() {
		List<Bebida> listaCervejas = new ArrayList<Bebida>();
		listaCervejas.add(new Bebida("Cerveja Antarctica", 5.0));
		listaCervejas.add(new Bebida("Brahma", 5.0));
		listaCervejas.add(new Bebida("Bohemia", 5.0));
		listaCervejas.add(new Bebida("Itaipava", 5.0));
		listaCervejas.add(new Bebida("Sol", 5.0));
		listaCervejas.add(new Bebida("Skol", 5.0));
		listaCervejas.add(new Bebida("Heinecken", 5.0));
		listaCervejas.add(new Bebida("Erlinger", 5.0));
		listaCervejas.add(new Bebida("Guiness", 5.0));
		return listaCervejas;
	}

	private List<Bebida> listaDeVinhos() {
		List<Bebida> listaVinhos = new ArrayList<Bebida>();
		listaVinhos.add(new Bebida("Sangue de Boi", 0.5));
		listaVinhos.add(new Bebida("Bourdeaux", 5.0));
		listaVinhos.add(new Bebida("Chapinha", 0.5));
		listaVinhos.add(new Bebida("Almaden", 5.0));
		return listaVinhos;
	}

	private List<Bebida> listaOutros() {
		List<Bebida> listaOutros = new ArrayList<Bebida>();
		listaOutros.add(new Bebida("Água Tônica", 5.0));
		listaOutros.add(new Bebida("Água com Gás", 5.0));
		listaOutros.add(new Bebida("Água sem Gás", 5.0));
		listaOutros.add(new Bebida("Suco Del Valle", 5.0));
		listaOutros.add(new Bebida("Suco de Caju Gelado", 10.0));
		return listaOutros;
	}

	/**
	 * Busca categoria pelo nome.
	 * 
	 * @param nomeDaCategoriaBebida
	 * @return CategoriaBebida encontrada.
	 */
	public CategoriaBebida buscaCategoriaBebida(String nomeDaCategoriaBebida) {
		return categorias.get(nomeDaCategoriaBebida);
	}

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