package celular.palavras;

/**
  * Universidade Federal de Pernambuco
  * Centro de Informática
  * Disciplina: Introducao a Programação
  * Projeto Celular
  *
  * Tipo: CadastroPalavras
  *
  * @author: Alberto César C. França     (accf2@cin.ufpe.br)
  * @author: Luciana Pereira Oliveira    (lpo@cin.ufpe.br)
  * @author: Milena Rocha Leite    (mrl@cin.ufpe.br)
  *
  * @since 2002
  * @version 1.1
  */
import celular.util.excecoes.ParametroNuloException;
import celular.palavras.excecoes.PalavraJaExisteException;
import celular.palavras.excecoes.PalavraNaoExisteException;
import celular.util.Console;

public class CadastroPalavras {
  private IListaPalavras palavras;

	/**
	 * Construtor
	 *
	 * @param IListaPalavras  lista de palavras
	 */
	public CadastroPalavras(IListaPalavras l) {
		if (l != null) {
			palavras = l;
		} else {
			throw new ParametroNuloException("A lista de palavras passadas"
											  + "como parametro estah nula");
		}
	}
	/**
	 * Método que exclui uma palavra da colecao
	 *
	 * @param Palavra  palvra a ser excluída
	 */
	public void excluir(Palavra palavra) throws PalavraNaoExisteException {
		if (palavra != null){
			this.palavras.excluir(palavra);
		} else {
			throw new ParametroNuloException("A palavras a ser excluida estah"
											  + " nula");
		}
   }      
	/**
	 * Método que indica se uma palavra existe na colecao
	 *
	 * @param  Palavra   palavra a ser procurada
	 * @return boolean   boleano que informa se a palavra existe ou nao na colecao
	 */
	public boolean existe(Palavra palavra) throws  PalavraNaoExisteException {
		return this.palavras.existe(palavra);
	}
   /**
	* Método que retorna todas as palavras do dicionario que possuem uma das
	* letras passadas da posicao indicada
	*
	* @param  char[]         characteres a serem verificados
	* @return ListaPalavras  lista de palavras que possuem um dos caracteres
	*                          passados
	*/
	public IListaPalavras filtrar(char[] letras,int posicaoAtual)throws PalavraNaoExisteException {
		return palavras.filtrar(letras,posicaoAtual);
	}
	/**
	 * Método que insere uma palavra na colecao
	 *
	 * @param Palvra   plavra a ser inserida
	 */
	public void inserir(Palavra palavra) throws PalavraJaExisteException,
												PalavraNaoExisteException {
		if (palavra != null){
			if (!palavras.existe(palavra))  {
			   this.palavras.inserir(palavra);
			} else {
				throw new PalavraJaExisteException("A palavra a ser inserida jah"
												  +"ja existe ");
			}
		} else {
			throw new ParametroNuloException("A palavras a ser inserida estah"
											  + " nula");
		}
   }      
	//main para verificacao de alguns metodos
	public static void main(String args[]){
	}
}
