[Urgente] Ajuda com validaçao de dats

Galera estou fazendo um sistema de agendamento de compromisso, porem ele tem que estar verificando se a data escolhida esta ocupada, Sendo uqe o usuario escolhe a data e hora inicial e a data e hora final. Comecei a fazer da seguinte forma, porem nao esta funcionando mto bem.:

======== | VALIDAÇAO DE DATA NO EVENTO DO BOTAO | ============

                // SE A DATA INICIAL ESTA DEPOIS DA DATA FINAL
                if(jDateChooserDataInicial.getDate().after(jDateChooserDataFinal.getDate())){
                    JOptionPane.showMessageDialog(null, "Horario Indisponivel! \nA data final escolhida não pode ser anterior a data inicial \nEscolha outro e tente novamente.");
                    salva = 0;
                // SE A DATA INICIAL ESTA ANTES DA DATA ATUAL
                }else if(jDateChooserDataInicial.getDate().before(currentData)){
                    JOptionPane.showMessageDialog(null, "Horario Indisponivel! \nA data inicial escolhida não pode ser anterior a data atual \nEscolha outro e tente novamente.");
                    salva = 0;
                }else{
                    try {
                        while(conex.rs.next()){
                            // SE A DATA INICIAL ESCOLHIDA É IGUAL A DATA FINAL DE ALGUM COMPROMISSO JA SALVO NO BD.
                            if(Util.formataData_ddMMyyyy(jDateChooserDataInicial.getDate()).equals(Util.formataData_ddMMyyyy(conex.rs.getDate("DATAFINAL")))){                    
                                // SE A HORA INICIAL É ANTES DE ALGUMA HORA FINAL DE ALGUM COMPROMISSO JA SALVO NO BD.
                                if (Util.converterStringTime(Util.formataHora_HHmm((Date) jSpinnerHoraInicial.getValue())).before
                                      (Util.converterStringTime(Util.formataHora_HHmm((Date) (conex.rs.getTime("HORAFINAL")))))) {
                                    JOptionPane.showMessageDialog(null, "Horario Indisponivel! \nJá existe um compromisso com essa mesma hora inicial \nEscolha outro e tente novamente.");
                                    salva = 0;
                                    break;
                                }                
                            // SE A DATA FINAL ESCOLHIDA É IGUAL A DATA INICIAL DE ALGUM COMPROMISSO JA SALVO NO BD.
                            }else if(Util.formataData_ddMMyyyy(jDateChooserDataFinal.getDate()).equals(Util.formataData_ddMMyyyy(conex.rs.getDate("DATAINICIAL")))){                 
                                // SE A HORA FINAL É DEPOIS DE ALGUMA HORA INICIAL ALGUM COMPROMISSO JA SALVO NO BD.
                                if (Util.converterStringTime(Util.formataHora_HHmm((Date) jSpinnerHoraFinal.getValue())).after
                                        (Util.converterStringTime(Util.formataHora_HHmm((Date) (conex.rs.getTime("HORAINICIAL")))))) {
                                    JOptionPane.showMessageDialog(null, "Horario Indisponivel! \nJá existe um compromisso com essa mesma hora final \nEscolha outro e tente novamente.");
                                    salva = 0;
                                    break;
                                }
                            // SE AS DATAS ESTAO ENTRE ALGUM COMPROMISSO JA SALVO NO BD.
                            }else if(jDateChooserDataInicial.getDate().after(conex.rs.getDate("DATAINICIAL")) && 
                                    jDateChooserDataFinal.getDate().before(conex.rs.getDate("DATAFINAL"))){
                                        JOptionPane.showMessageDialog(null, "Horario Indisponivel! \nVoce não pode salvar um compromisso no meio de outro já existente \nEscolha outro e tente novamente.");
                                        salva = 0;
                                        break;
                            }
                        }
                    } catch (SQLException ex) {
                    }     
                }`

============ | OS METODOS DE CONVERSAO USADO | =============
> // ||||||||| FORMATA DATA dd/MM/yyyy ||||||||||
> public static String formataData_ddMMyyyy(java.util.Date data){
> SimpleDateFormat sdf = new SimpleDateFormat(“dd/MM/yyyy”);
> java.util.Date dt = data;
> String dataFormatada = sdf.format(dt);

>         return dataFormatada;
>     }
> // ||||||||| FORMATA HORA HH:mm||||||||||
>     public static String formataHora_HHmm(java.util.Date hora){
>         SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
>         java.util.Date hr = hora; 
>         String horaFormatada = sdf.format(hr);

>         return horaFormatada;
>     }
> // ||||||||| CONVERTER STRING PARA DATA ||||||||||
>     public static Date converterStringDate(String data){
>         try {
>             SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
>             Date date = (Date)formatter.parse(data);
>             
>             return date;
>         } catch (ParseException ex) {
>             Logger.getLogger(Util.class.getName()).log(Level.SEVERE, null, ex);
>         }
>         return null;
>     }
> // ||||||||| CONVERTER JSPINNER DE DATE PARA TIME||||||||||
>     public static Time converterJspinnerDateTime(java.util.Date hora){
>         Time horaFormatadaTry = null;
>         try {
>             SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
>             
>             java.util.Date hr = (java.util.Date) hora;
>             String horaFormatada = sdf.format(hr);
>             
>             String str = (String) hora.toString();
>             java.util.Date data = sdf.parse(horaFormatada);
>             Time horaFormatadaTime = new Time(data.getTime());
>             horaFormatadaTry = horaFormatadaTime;
>             return horaFormatadaTime;
>         } catch (ParseException ex) {
>             System.out.println("Erro ao converterJspinnerDateTime \n\n");
>             Logger.getLogger(Util.class.getName()).log(Level.SEVERE, null, ex);
>         }
>         return horaFormatadaTry;
>     }
>     
> // ||||||||| FORMATA HORA HH:mm||||||||||
>     public static Time converterStringTime(String str){
>         try {
>             SimpleDateFormat formatador = new SimpleDateFormat("HH:mm");
>             Date data = formatador.parse(str);
>             Time time = new Time(data.getTime());
>             return time;
>         } catch (ParseException ex) {
>             Logger.getLogger(Util.class.getName()).log(Level.SEVERE, null, ex);
>         }
>         return null;
>     }