Ajuda - Exercício Cadastramento

Bom pessoal, tô com uma duvida em um exercício que estou fazendo, se alguém puder me mostrar onde está o erro agradeço.

Questão:

[quote]O objetivo deste trabalho é implementar programa simples contendo uma lista encadeada de
clientes. As informações dos clientes são coletados a partir de uma interface gráfica. Os dados do
clientes são adquiridos por um programa simples com funcionalidades de inserção e busca de
clientes. As informações coletadas do cliente são nome, endereço e CPF.

A interface gráfica do programa já esta implementada na classe Cadastramento, falta implementar
as classes Lista e Cliente. Não é necessário adicionar nenhum método novo, apenas atributos. A
classe Cliente deve conter como atributo uma referência para o próximo cliente e também atributos
com informações sobre o nome, endereço e cpf do cliente. O construtor do cliente deve fazer a
inicialização de todos os atributos.

A classe lista contém um construtor, métodos insere, buscaCpf e buscaNome. Todos estes métodos
estão vazios e precisam ser implementados. A classe lista precisa de um atributo que referencia o
primeiro elemento da lista. As inserções devem ser feitas sempre no início da lista. As busca sempre
retornam o objeto encontrado ou o elemento nulo (null) quando nenhum cliente for encontrado.
Depois de implementado e funcionando o método insere. Faça um incremento neste método
verificando se o cpf informado já esta cadastrado. Se tiver, então o cliente não deve ser inserido e o
método deve retorna falso (false);[/quote]

Consegui fazer uma boa parte porém a verificação do CPF sempre retorna um valor cadastrado independente de está ou não, aí que se encontra minha duvida principal.

Segue o código que fiz:

Cadastramento:

[code]import java.awt.;
import java.awt.event.
;
import javax.swing.*;

public class Cadastramento
{
private static JTextField campoNome;
private static JTextField campoEndereco;
private static JTextField campoCpf;
private static JButton botaoInseri;
private static JButton botaoBusca;
private static Lista clientes;
private static JLabel statusLabel;

public final static boolean RIGHT_TO_LEFT = false;

public static void limpaCampos()
{
	campoNome.setText("");
	campoEndereco.setText("");
	campoCpf.setText("0");    	
}

public static void addComponentsToPane(Container contentPane) 
{
    if (RIGHT_TO_LEFT) 
    {
        contentPane.setComponentOrientation(
            ComponentOrientation.RIGHT_TO_LEFT);
    }
    //Any number of rows and 2 columns
    contentPane.setLayout(new GridLayout(0,2));

    statusLabel = new JLabel(" ");
    contentPane.add(new JLabel("Nome: "));
    campoNome = new JTextField(15);
    contentPane.add(campoNome);
    contentPane.add(new JLabel("Endereço: "));
    campoEndereco = new JTextField(15);
    contentPane.add(campoEndereco); 
    contentPane.add(new JLabel("CPF: "));
    campoCpf = new JTextField(15);
    contentPane.add(campoCpf);

    botaoInseri = new JButton("Inseri");
    
    limpaCampos();
    botaoInseri.addActionListener(new ActionListener() 
    {

		public void actionPerformed(ActionEvent e) 
		{
			String nome = campoNome.getText();
			String endereceo = campoEndereco.getText();
			long cpf = 0;
			boolean cpfErro = false;
			try
			{
				cpf = Long.parseLong(campoCpf.getText());
			}
			catch(Exception x )
			{
				statusLabel.setText("CPF inválido!"); 
				cpfErro = true;
			}
			Cliente c = new Cliente();
			c.setNome(nome);
			c.setEndereco(endereceo);
			c.setCpf(cpf);
			if ( clientes.insere(c) ) 
			{
				statusLabel.setText(nome+" inserido com sucesso!");
				limpaCampos();
			}
			else if (! cpfErro)
				statusLabel.setText(c.getCpf()+" CPF já cadastrado!");			
		}
	});        
    
    botaoBusca = new JButton("Busca");
    botaoBusca.addActionListener(new ActionListener() 
    {
		public void actionPerformed(ActionEvent e)
		{
			//limpaCampos();
			String nome = campoNome.getText();
			Cliente c = clientes.buscaNome(nome);
			if (c == null)
			{
				statusLabel.setText(nome+" não encontrado!");
			}
			else 
			{
				statusLabel.setText(c.getNome()+" encontrado!");
				campoNome.setText(c.getNome());
				campoEndereco.setText(c.getEndereco());
				campoCpf.setText(Long.toString(c.getCpf()));
			}
		}
	});        
    
    contentPane.add(botaoInseri);
    contentPane.add(botaoBusca);
    contentPane.add(new JLabel("Status: "));
    contentPane.add(statusLabel);
}

private static void createAndShowGUI() 
{
    JFrame.setDefaultLookAndFeelDecorated(true);

    JFrame frame = new JFrame("Mini Sistema de Cadastramento!");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    //Set up the content pane and components in GridLayout
    addComponentsToPane(frame.getContentPane());

    frame.pack();
    frame.setVisible(true);
}

public static void main(String[] args) 
{
	// cria a lista
	clientes = new Lista();
	
    javax.swing.SwingUtilities.invokeLater(new Runnable() 
    {
        public void run()
        {
            createAndShowGUI();
        }
    });
}

}
[/code]

Cliente:

[code]public class Cliente
{
private String nome, endereco;
private long CPF;
private Cliente prox;

public void setProximo(Cliente p) 
{
	prox = p;
}
void setNome(String n)
{
	nome = n;
}
void setEndereco(String e)
{
	endereco = e;
}
void setCpf(long c)
{
	CPF = c;
}
String 	getNome()
{
	return nome;
}
String 	getEndereco()
{
	return endereco;
}
long	getCpf()
{		
	return CPF;
}
public Cliente getProximo() 
{
	return prox;
}

}
[/code]

Lista:

public class Lista
{

	public Lista() 
	{

	}
	boolean insere(Cliente c)
	{

		return false; 
	}
	Cliente buscaCpf(long c)
	{

		return null;
	}
	Cliente buscaNome(String s)
	{
		
		return null;
	}

}

Não entendí como implementar o método de busca, se alguém puder me informar agradeço
Obrigado.

Implementei as correções, espero que te ajude.

Valeu!

import java.awt.ComponentOrientation;
import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class Cadastramento {
	private static JTextField campoNome;
	private static JTextField campoEndereco;
	private static JTextField campoCpf;
	private static JButton botaoInseri;
	private static JButton botaoBusca;
	private static Lista clientes;
	private static JLabel statusLabel;

	public final static boolean RIGHT_TO_LEFT = false;

	public static void limpaCampos() {
		campoNome.setText("");
		campoEndereco.setText("");
		campoCpf.setText("0");
	}

	public static void addComponentsToPane(Container contentPane) {
		if (RIGHT_TO_LEFT) {
			contentPane
					.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
		}
		// Any number of rows and 2 columns
		contentPane.setLayout(new GridLayout(0, 2));

		statusLabel = new JLabel(" ");
		contentPane.add(new JLabel("Nome: "));
		campoNome = new JTextField(15);
		contentPane.add(campoNome);
		contentPane.add(new JLabel("Endereço: "));
		campoEndereco = new JTextField(15);
		contentPane.add(campoEndereco);
		contentPane.add(new JLabel("CPF: "));
		campoCpf = new JTextField(15);
		contentPane.add(campoCpf);

		botaoInseri = new JButton("Inseri");

		limpaCampos();
		botaoInseri.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				String nome = campoNome.getText();
				String endereceo = campoEndereco.getText();
				long cpf = 0;
				boolean cpfErro = false;
				try {
					cpf = Long.parseLong(campoCpf.getText());
				} catch (Exception x) {
					statusLabel.setText("CPF inválido!");
					cpfErro = true;
				}
				Cliente c = new Cliente();
				c.setNome(nome);
				c.setEndereco(endereceo);
				c.setCpf(cpf);
				if (clientes.insere(c)) {
					statusLabel.setText(nome + " inserido com sucesso!");
					limpaCampos();
				} else if (!cpfErro)
					statusLabel.setText(c.getCpf() + " CPF já cadastrado!");
			}
		});

		botaoBusca = new JButton("Busca");
		botaoBusca.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				// limpaCampos();
				String nome = campoNome.getText();
				Cliente c = clientes.buscaNome(nome);
				if (c == null) {
					statusLabel.setText(nome + " não encontrado!");
				} else {
					statusLabel.setText(c.getNome() + " encontrado!");
					campoNome.setText(c.getNome());
					campoEndereco.setText(c.getEndereco());
					campoCpf.setText(Long.toString(c.getCpf()));
				}
			}
		});

		contentPane.add(botaoInseri);
		contentPane.add(botaoBusca);
		contentPane.add(new JLabel("Status: "));
		contentPane.add(statusLabel);
	}

	private static void createAndShowGUI() {
		JFrame.setDefaultLookAndFeelDecorated(true);

		JFrame frame = new JFrame("Mini Sistema de Cadastramento!");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		// Set up the content pane and components in GridLayout
		addComponentsToPane(frame.getContentPane());

		frame.pack();
		// Aparecer no centro da tela.
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);
	}

	public static void main(String[] args) {
		// cria a lista
		clientes = new Lista();

		javax.swing.SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				createAndShowGUI();
			}
		});
	}

}
public class Cliente {
	private String nome, endereco;
	private long CPF;
	private Cliente prox;

	public void setProximo(Cliente p) {
		prox = p;
	}

	public void setNome(String n) {
		nome = n;
	}

	public void setEndereco(String e) {
		endereco = e;
	}

	public void setCpf(long c) {
		CPF = c;
	}

	public String getNome() {
		return nome;
	}

	public String getEndereco() {
		return endereco;
	}

	public long getCpf() {
		return CPF;
	}

	public Cliente getProximo() {
		return prox;
	}
}
import java.util.ArrayList;
import java.util.List;

public class Lista {
	
	private List<Cliente> list;
	
	public Lista() {
		super();
		this.list = new ArrayList<Cliente>();
	}

	public boolean insere(Cliente c) {
		Cliente cliente = buscaCpf(c.getCpf());
		if (cliente == null) {
			return list.add(c);
		} else {
			return false;
		}
	}

	public Cliente buscaCpf(long c) {
		for (Cliente cliente : list) {
			if (cliente.getCpf() == c) {
				return cliente;
			}
		}
		return null;
	}

	public Cliente buscaNome(String s) {
		for (Cliente cliente : list) {
			if (cliente.getNome().equals(s)) {
				return cliente;
			}
		}
		return null;
	}

}

Opá, Obrigado Daniel.

Vou dar uma lida completa para saber onde eu estava errando, ja testei aqui e está perfeito.
agradeço mais uma vez.

Abraço