Lógica de comparação

4 respostas
fnandos

Olá, tenho um problema mas não consegui pensar em uma solução ainda. Meu problema é o seguinte:

Existe em um sistema em Java/JSF um cadastro de uma agenda de atendimentos. Ao cadastrar um novo atendimento o sistema deve verificar se na sala X selecionada no dia Y as horas de ínicio e fim do atendimento não batam com as horas cadastradas no BD. por exemplo:

no dia 25/05/2012 na sala Individual existe um atendimento marcado entre 13:00 e 14:00. No mesmo dia existe um atendimento marcado entre 15:30 e 16:00 horas. O sistema deve bloquear a inclusão de um registro entre as horas inicial e final ao mesmo tempo em que deve permitir o atendimento entre 14:00 e 15:30, visualmente seria mais ou menos isso

atendimento 1: Inicial=13:00 Final:14:00
atendimento 4: Inicial=13:30 Final:14:00 (Não Permitido)
atendimento 3: Inicial=14:00 Final:15:30 (Permitido)
atendimento 2: Inicial=15:30 Final:16:00

As horas são gravadas como String (Não se sabe porque). Como eu faria essa comparação?

4 Respostas

P

string.equals() ou string.equalsIgnoreCase()

ou string.compare() ou string.compareTo() depende o que vc quer, qualquer coisa leia a documentação

fnandos

Ok, vou dar uma olhada nisso, talvez String não seja o real problema, eu teria que pegar as datas iniciais e finais em dois array, percorrê-los e verificar. Alguma dica a mais?

WRYEL

PhilipeSC:
string.equals() ou string.equalsIgnoreCase()

ou string.compare() ou string.compareTo() depende o que vc quer, qualquer coisa leia a documentação

Quase lá :smiley:

Faça um parse do seu String-Date para Date usando java.text.SimpleDateFormat

fonte: http://docs.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html

agora que você tem as datas em mãos, use o compareTo do java.util.Date:

fonte: http://docs.oracle.com/javase/1.3/docs/api/java/util/Date.html#compareTo(java.util.Date)

[]'s

rmendes08

acho que a sua dúvida está relacionada com a lógica propriamente dita; Por exemplo, você tem um atendimento marcado horário horaInicial até horaFinal, basta fazer:

boolean ehAtendimentoConflitante(Atendimento original, Atendimento novo){
   return (originial.inicio < novo.inicio && novo.inicio < original.fim ) || (originial.inicio < novo.fim && novo.fim < original.fim );
}
Criado 25 de maio de 2012
Ultima resposta 25 de mai. de 2012
Respostas 4
Participantes 4