Evitar produtos duplicados em master detail

Pessoal é o seguinte, eu tenho um formulario com estrutura do tipo master/detail eu consigo adicionar os dados na jtable sem problemas, so que ao adicionar os dados jtable eu devo verificar se o mesmo produto foi adicionado a um mesmo cliente mais do que uma vez, do tipo:

Cliente - Produto
Vanilson Arroz
Vanilson Arroz

Essa situação não deve acontecer, eu tento fazer essa verificar e ela não funciona n sei pq, dos dados nem são adicionados a jtable, eis o codigo:

[code]
public void verificarProdutoAdicionado() {
if(tmVenda.getRowCount() < 0)
adicionarProduto();
else if (tmVenda.getRowCount() > 0) {
int j = 1;
for (int i = 0; i < tmVenda.getRowCount(); i++) {
//JOptionPane.showMessageDialog(null, i);
if (cboNomeProduto.getSelectedItem().equals(tmVenda.getValueAt(i, j))) {
JOptionPane.showMessageDialog(null, tmVenda.getValueAt(i, j));
j++;
}
else
adicionarProduto();
}
}
}
public void adicionarProduto() {
if (valida() && verificarQuantidade()) {
Venda v = new Venda();
v.setCodigoCliente(lc.get(cboNomeCliente.getSelectedIndex()).getCodigoCliente());
v.setCodigoProduto(lp.get(cboNomeProduto.getSelectedIndex()).getCodigoProduto());
v.setQuantidade(Integer.parseInt(txtQuantidadeVendida.getText()));
v.setValor(Double.parseDouble(txtPreco.getText()) * Integer.parseInt(txtQuantidadeVendida.getText()));
lv.add(v);
//JOptionPane.showMessageDialog(null,tmVenda.getColumnCount());

        String nomeCliente = lc.get(cboNomeCliente.getSelectedIndex()).getNomeCliente();
        String nomeProduto = lp.get(cboNomeProduto.getSelectedIndex()).getNomeProduto();
        String data = txtData.getText();
        String hora = txtHora.getText();
        String quantidade = txtQuantidadeVendida.getText();
        String valor = "" + Double.parseDouble(txtPreco.getText()) * Integer.parseInt(txtQuantidadeVendida.getText());
        String[] dados = new String[]{nomeCliente, nomeProduto, data, hora, quantidade, valor};

        tmVenda.addRow(dados);
        valorTotal += Double.parseDouble(txtPreco.getText()) * Integer.parseInt(txtQuantidadeVendida.getText());
        NumberFormat nf = NumberFormat.getInstance();
        String valorTotalFormatado = nf.format(valorTotal);
        txtTotal.setText(valorTotalFormatado);
        //JOptionPane.showMessageDialog(null, tmVenda.getValueAt(0, 0));

    } else {
        JOptionPane.showMessageDialog(null, "Insira uma quantidade de venda válida", "Venda", JOptionPane.ERROR_MESSAGE);
    }
}[/code]

Consegui resolver o problema, eis o codigo:

    public void verificarProdutoAdicionado() {
        if (tmVenda.getRowCount() == 0) {
            adicionarProduto();
        } else if (tmVenda.getRowCount() > 0) {
            String nomeCliente = "";
            String nomeProduto = "";
            int colunaProduto = 1, colunaNome = 0, y = 0, j = 0;
            for (int i = 0; i < tmVenda.getRowCount(); i++) {
                if (cboNomeProduto.getSelectedItem().equals(tmVenda.getValueAt(i, colunaProduto))) {
                    nomeCliente = (String) cboNomeCliente.getSelectedItem();
                    nomeProduto = (String) tmVenda.getValueAt(i, colunaProduto);
                    y++;
                }
                else if (!cboNomeCliente.getSelectedItem().equals(tmVenda.getValueAt(i, colunaNome))) {
                    nomeCliente = (String) cboNomeCliente.getSelectedItem();
                    j++;
                }
            }
            if (y != 0) {
                JOptionPane.showMessageDialog(null, "O produto " + nomeProduto + " já se encontra na lista de compras", "Venda", JOptionPane.INFORMATION_MESSAGE);
            }
            else if (j != 0)
                JOptionPane.showMessageDialog(null, "O cliente " + nomeCliente + " não pode ser adicionado a essa venda", "Venda", JOptionPane.INFORMATION_MESSAGE);
            else {
                adicionarProduto();
            }
        }
    }

    public void adicionarProduto() {
        if (valida() && verificarQuantidade()) {
            Venda v = new Venda();
            v.setCodigoCliente(lc.get(cboNomeCliente.getSelectedIndex()).getCodigoCliente());
            v.setCodigoProduto(lp.get(cboNomeProduto.getSelectedIndex()).getCodigoProduto());
            v.setQuantidade(Integer.parseInt(txtQuantidadeVendida.getText()));
            v.setValor(Double.parseDouble(txtPreco.getText()) * Integer.parseInt(txtQuantidadeVendida.getText()));
            lv.add(v);
            //JOptionPane.showMessageDialog(null,tmVenda.getColumnCount()); 

            String nomeCliente = lc.get(cboNomeCliente.getSelectedIndex()).getNomeCliente();
            String nomeProduto = lp.get(cboNomeProduto.getSelectedIndex()).getNomeProduto();
            String data = txtData.getText();
            String hora = txtHora.getText();
            String quantidade = txtQuantidadeVendida.getText();
            String valor = "" + Double.parseDouble(txtPreco.getText()) * Integer.parseInt(txtQuantidadeVendida.getText());
            String[] dados = new String[]{nomeCliente, nomeProduto, data, hora, quantidade, valor};

            tmVenda.addRow(dados);
            valorTotal += Double.parseDouble(txtPreco.getText()) * Integer.parseInt(txtQuantidadeVendida.getText());
            NumberFormat nf = NumberFormat.getInstance();
            String valorTotalFormatado = nf.format(valorTotal);
            txtTotal.setText(valorTotalFormatado);
            //JOptionPane.showMessageDialog(null, tmVenda.getValueAt(0, 0));

        } else {
            JOptionPane.showMessageDialog(null, "Insira uma quantidade de venda válida", "Venda", JOptionPane.ERROR_MESSAGE);
        }
    }