package exemplo;

import java.util.Enumeration;

public class RepositorioPessoasArray 
    implements exemplo.RepositorioPessoas, java.util.Enumeration {

    private exemplo.Pessoa pessoas[];
    private int indice;
    private int indiceEnumeration;

    public RepositorioPessoasArray(int numeroPessoas) {
        pessoas = new exemplo.Pessoa[numeroPessoas];
        indice = 0;
        indiceEnumeration = 0;
    }

    public boolean hasMoreElements() {
        return indiceEnumeration < indice;
    }

    public java.lang.Object nextElement() {
        java.lang.Object resposta = pessoas[indiceEnumeration];
        indiceEnumeration = indiceEnumeration + 1;
        return resposta;
    }

    public java.util.Enumeration retornaTodos() throws exemplo.BancoDadosException {
        return this;
    }

    public void inserir(exemplo.Pessoa Pessoa) {
        if (Pessoa != null) {
            pessoas[indice] = Pessoa;
            indice = indice + 1;
        } else {
            throw new NullPointerException("Pessoa inv\341lida");
        }
    }

    public void remover(java.lang.String cpf) {
        if (existe(cpf)) {
            int i = procurarIndice(cpf);
            indice = indice - 1;
            pessoas[i] = pessoas[indice];
            pessoas[indice] = null;
        } else {
            throw new NullPointerException("Pessoa n\343o encontrada");
        }
    }

    public exemplo.Pessoa procurar(java.lang.String cpf) {
        exemplo.Pessoa resposta = null;
        int i = procurarIndice(cpf);
        if (i == -1) {
            throw new NullPointerException("Pessoa n\343o encontrada");
        } else {
            resposta = pessoas[i];
            return resposta;
        }
    }

    public boolean existe(java.lang.String cpf) {
        int i = procurarIndice(cpf);
        return i != -1;
    }

    public void atualizar(exemplo.Pessoa Pessoa) {
        int i = procurarIndice(Pessoa.getCpf());
        if (i != -1) {
            pessoas[i] = Pessoa;
        } else {
            throw new NullPointerException("Pessoa n\343o encontrada");
        }
    }

    private int procurarIndice(java.lang.String cpf) {
        int i = 0;
        boolean achou;
        for (achou = false; !achou && i < indice;) {
            if (pessoas[i].getCpf().equals(cpf)) {
                achou = true;
            } else {
                i++;
            }
        }

        if (!achou) {
            i = -1;
        }
        return i;
    }
}
