Como impedir que o registro seja salvo novamente

Tenho esse seguinte método:

método teste da classe locacoes do pacote view

public int teste(){

    String selecao = cbFilmes.getSelectedItem().toString();
    String[] campos_filmes = selecao.replace(" ","").split("-"); // suponho que esteja separado por -
    System.out.println(campos_filmes[0]); // deve pegar o código
    int codigo = Integer.parseInt(campos_filmes[0]);
    java.sql.Connection conn = null;
    java.sql.PreparedStatement pstm = null;
    ResultSet rs = null;    
    boolean testee;
    try{

        conn = ConnectDB.conexaoDB();
        pstm = conn.prepareStatement("Select * From locacoes Where codigo_filme = '"+codigo+"'");           
        rs = pstm.executeQuery();
        if(rs.next()){
            JOptionPane.showMessageDialog(null, "Filme Já Locado!");
            tabbedPane.setSelectedIndex(0);
        }else{
    pstm.close();
        }

        ConnectDB.fecharConexao(conn);


    }catch(SQLException e){
        JOptionPane.showMessageDialog(null, "Erro: "+ e);


}
    return codigo;

}

Ele faz uma validação para ver se o filme já está locado, o seguinte método é o que manda os dados para classe locacoes do pacote control

protected void salvar(){


    String selecao_filmes = cbFilmes.getSelectedItem().toString();
    String[] campos_filmes = selecao_filmes.replace(" ","").split("-"); // suponho que esteja separado por -
    System.out.println(campos_filmes[0]); // deve pegar o código
    int codigo_filme = teste();//Integer.parseInt(campos_filmes[0]);


     //System.out.println(selecao);

    String selecao_funcionario = cbFuncionario.getSelectedItem().toString();
    String[] campos_funcionarios = selecao_funcionario.replace(" ", "").split("-");
    System.out.println(campos_funcionarios[0]);
    int codigo_funcionario = Integer.parseInt(campos_funcionarios[0]);


    String selecao_cliente = cbClientes.getSelectedItem().toString();
    String [] campos_clientes = selecao_cliente.replace(" ", "").split("-");
    System.out.println(campos_clientes[0]);
    int codigo_cliente = Integer.parseInt(campos_clientes[0]);

    String data_locacao = dt_locacao.getText();
    String data_devolucao = dt_devolucao.getText(); if(data_devolucao.equals("")){
        JOptionPane.showMessageDialog(null, "O campo Data de devolução é Obrigatório!");


    } Locacao locacao = new Locacao();
    locacao.setCodigo_cliente(codigo_cliente);
    locacao.setCodigo_funcionario(codigo_funcionario);
    locacao.setCodigo_filme(codigo_filme);
    locacao.setDt_locacao(data_locacao);
    locacao.setDt_devolucao(data_devolucao);

    control.Locacao manutencao = new control.Locacao();
    if(codigo_editar==0){
        manutencao.inserir(locacao);

    }else{
        manutencao.alterar(locacao);
    }

    tabbedPane.setSelectedIndex(1);}

Esse é o método que salva no banco:

public void inserir(dao.Locacao locacao) {
  if(locacao != null){

java.sql.Connection conn = null;

try {
    conn = ConnectDB.conexaoDB();

    java.sql.PreparedStatement pstm;

    pstm = conn.prepareStatement(INSERT);

    pstm.setObject(1, locacao.getCodigo_filme());
    pstm.setObject(2, locacao.getCodigo_funcionario());
    pstm.setObject(3, locacao.getCodigo_cliente());
    pstm.setString(4, locacao.getDt_locacao());
    pstm.setString(5, locacao.getDt_devolucao());


    // Envia para o banco de dados
    Boolean teste;
    teste = pstm.execute();

    // Validar inserção no banco de dados
    if (!teste) {
        JOptionPane.showMessageDialog(null, "Locação cadastrada com sucesso!");

    } else {
        JOptionPane.showMessageDialog(null, "Erro ao cadastrar a Locação!");

    }

    // Fecha a conexão com o banco de dados
    ConnectDB.fecharConexao(conn);

} catch (SQLException e) {
    JOptionPane.showMessageDialog(null, "Erro ao cadastrar a locacao!"+e.getMessage());

}

`

Esse é o método que salva no banco:

public void inserir(dao.Locacao locacao) {

if(locacao != null){
    java.sql.Connection conn = null;

    try {
        conn = ConnectDB.conexaoDB();

        java.sql.PreparedStatement pstm;

        pstm = conn.prepareStatement(INSERT);

        pstm.setObject(1, locacao.getCodigo_filme());
        pstm.setObject(2, locacao.getCodigo_funcionario());
        pstm.setObject(3, locacao.getCodigo_cliente());
        pstm.setString(4, locacao.getDt_locacao());
        pstm.setString(5, locacao.getDt_devolucao());


        // Envia para o banco de dados
        Boolean teste;
        teste = pstm.execute();

        // Validar inserção no banco de dados
        if (!teste) {
            JOptionPane.showMessageDialog(null, "Locação cadastrada com sucesso!");

        } else {
            JOptionPane.showMessageDialog(null, "Erro ao cadastrar a Locação!");

        }

        // Fecha a conexão com o banco de dados
        ConnectDB.fecharConexao(conn);

    } catch (SQLException e) {
        JOptionPane.showMessageDialog(null, "Erro ao cadastrar a locacao!"+e.getMessage());

    }


}}

A minha dúvida é a seguinte, como eu faria para usar o método teste, fazendo com que, se o filme estiver locado, ao clicar no botão de salvar, eu impedisse o usuário de salvar, através do método teste, se eu não fui muito claro, me peçam mais informações, mas por favor me ajudem!.

Esse é o botão salvar:

JButton btnSalvar = new JButton("Salvar");
    btnSalvar.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            salvar();}
});

Eu faria da seguinte forma, ao fazer um select no banco, eu armazeno todos os dados em uma tabela. Esses dados podem ser recuperados com a maior facilidade de utilizado classes de TableModel para gerencia-las. Assim vc faria um GET nas Locações, e ali estaria o status de cada Filme.
Ficaria mais ou menos assim:

TableModelLocacoes table = (TableModelLocacoes) jTable1.getModel(); // Isso pega o modelo da tabela
if (table.get(jTable1.getSelectedRow().status() != "Aberto"){ //table.get(jTable1.getSelectedRow().status()  pega o Status do filme na linha selecionada da tabela
    JOptionPane.showMessageDialog(null, "O Filme ja esta alocado"); // mensagem bla bla
}else{
 //...
}

use orientação a objetos

banco de dados vai serializar os dados e preservar integridade. apenas isso. as regras estão no seu objeto.