Comparar horas

5 respostas
W

O que estou fazendo de errado, alguem pode me ajudar?

mostra mensagem Erro null;

não consigo cadastrar, com certeza o problema é no metodo de comparar horas mas não consigo achar

@Controller("agendaCirurgicaController")
@Scope("session")
public class AgendaCirurgicaController {

    private AgendaCirurgica agendaCirurgica;
    @Resource
    private DaoGenerico<AgendaCirurgica, Integer> agendaCirurgicaDao;

    private Date hrInicial;
    private Date hrFinal;

   // COMPARA HORA INICIAL E HORA FINAL
    public Boolean comparaHora(Date horaInicio, Date horaFinal) {
	Time hrInicialTimesTemp = new Time(horaInicio.getTime());
	Time hrFinalTimesTemp = new Time(horaFinal.getTime());

	Calendar periodoInicial = Calendar.getInstance();
	Calendar periodoFinal = Calendar.getInstance();

	periodoInicial.setTime(hrInicialTimesTemp);
	periodoFinal.setTime(hrFinalTimesTemp);

    // SALVA AGENDAMENTO CIRÚRGICO
    public void salvar() {
	try {

	    if (comparaHora(hrInicial, hrFinal)) {
		System.out.println("<<<<<<<<<<<<<<<<<<<<HORARIO VEIO VEIO VEIO>>>>>>>>>>>>>>>>");
		if (hrInicial != null) {
		    agendaCirurgica.setHrInicial(utils.formatHoraSqlServer(hrInicial));// CONVERTE DATE PARA SQL TIME
		}
		if (hrFinal != null) {
		    agendaCirurgica.setHrFinal(utils.formatHoraSqlServer(hrFinal));//CONVERTE DATE PARA SQL TIME
		}

	    }

	    agendaCirurgicaDao.atualizar(agendaCirurgica);
	    mostraImagem = 1;

	    FacesContext.getCurrentInstance().addMessage(null,
		    new FacesMessage(FacesMessage.SEVERITY_INFO, "Salvo com sucesso!!", null));
	    utils = new Utils();
	    init();

	} catch (Exception e) {
	    FacesContext.getCurrentInstance().addMessage(null,
		    new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro: " + e.getCause(), null));
	    tela = 2;
	}
    }


	for (AgendaCirurgica agenda : agendaCirurgicaDao.todos()) {
	    if (periodoInicial.getTime().after(agenda.getHrInicial())
		    && periodoFinal.getTime().before(agenda.getHrFinal())) {
		System.out.println("<<<<<<<<<<<<<<<<<<<<HORARIO NÃO PERMITIDO>>>>>>>>>>>>>>>>");
		return false;
	    } else {
		System.out.println("<<<<<<<<<<<<<<<<<<<<HORARIO PERMITIDO>>>>>>>>>>>>>>>>");
		return true;
	    }
	}

	return null;

    }

}

5 Respostas

Eder_Peixoto

Coloca o StackTrace?

Hebert_Coelho

E por favor, identa o seu código. Tá muito dificil de ler… =/

ViniGodoy

Se você endentasse corretamente seu código, perceberia que você não fechou chaves no método comparaHora.

SEMPRE faça a endentação corretamente. Ela é um princípio BÁSICO de qualquer código minimamente organizado.

Outra coisa… até onde eu sei, a classe Time não existe. A classe Date e a classe Calendar guardam, ao mesmo tempo, dia e hora.

W

Pessoal o que estou tentando fazer é não permitir que o usuário digite um internvalo de horas que ja exista cadastrado no banco de horas - o que consegui foi não deixar o tal usuário digitar o horário inicial maior que o final, isso tá beleza, mas a parte de não permitir o cadastro a hora no intervalo inicial e final que já esteja cadastrado - isso preciso de vossa ajuda. Obrigado
Segue codigo abaixo

public void validaHoraInicio(FacesContext context, UIComponent component, Object value) {
	hrInicial = (Date) value;


    }

    public void validaHoraFinal(FacesContext context, UIComponent component, Object value) {
	hrFinal = (Date) value;

	java.sql.Timestamp hrInicialTimesTemp =  new Timestamp(hrInicial.getTime());
	Calendar periodoInicial = Calendar.getInstance();
	periodoInicial.setTime(hrInicialTimesTemp);	
	
	java.sql.Timestamp hrFinalTimesTemp =  new Timestamp(hrFinal.getTime());
	Calendar periodoFinal = Calendar.getInstance();
	periodoFinal.setTime(hrFinalTimesTemp);
	
	for (AgendaCirurgica agenda : agendaCirurgicaDao.todos()) {
	    

	    if (hrInicialTimesTemp.after(agenda.getHrInicial())&& hrFinalTimesTemp.before(agenda.getHrFinal())
		    || hrInicialTimesTemp.after(hrFinalTimesTemp)) {
		throw new ValidatorException(new FacesMessage("Hora inicial maior que hora fina ou horário não disponívell"));
	    }
	}
    }
W

Estou fazendo a identação, mas não sei porque, quando posto o código fica suado

Criado 23 de julho de 2010
Ultima resposta 26 de jul. de 2010
Respostas 5
Participantes 4