Prezados,
primeiramente gostaria de parabeniza-los pelo sistema desenvolvido, o SGA é muito funcional e a arquitetura usada é muito flexivel quando é necessário realizar alguma customização.
Fiz uma pequena customização no controlador de painéis para atender um requisito solicitado pelos usuários dos sistema na minha instituição e gostaria de compartilhar com a comunidade.
Contextualização do "Problema"
Quando 2 ou mais usuários acionam o botão "Chamar Próximo" em sequência a última senha enviada pelo contrador de painéis sobrepõe a primeira no módulo painel, aparentemente isso não seria um problema porque depois de 5 segundo o atendente pode acionar o botão "Chamar Novamente", porém os usuários do sistema acharam interessante além de implementar o histórico de senhas que foi uma contribuição do Leornardo Neto existir um delay entre as chamadas de novas senhas.
Solução Adotada
- Foi adicionado a seguinte propriedade no arquivo server.conf:
#Intervalo usado para esperar o envio da senha para o painel
#Tempo deve ser especificado em milisegundos (1000 milisegundos = 1 segundo)
intervaloEnvio = 5000
- Alteração da Classe ConfigManager.java
Criação do atributo private int sentInterval;
Trecho de código adicionado para tratar o valor do atributo sentInterval:
sentInterval = Integer.parseInt(config.getProperty("intervaloEnvio"));
if(sentInterval < 1){
LOG.warning("O valor da config (intervaloEnvio="+sentInterval+") não permitido, apenas valores maiores que zero são permitidos. Forçando o valor para 1.");
sentInterval = 1;
}
- Alteração na classe ServerMsg.java
As Alterações no método envia() estão em negrito logo abaixo:
public void envia() {
LOG.fine("SEND: "+this);
UDPServer.getInstance().envia(this);
//O código abaixo é responsável por retardar o envio da senha para o painel
//O Objetivo é evitar que uma senha sobreponha a outra
try {
Thread.sleep(ConfigManager.getInstance().getSentInterval());
} catch (InterruptedException e) {
LOG.error("InterruptedException: "+e.getMessage());
}
}
[]'s
Jk@iros
Autor: jkairos jkairos
33 comentários
String _numeroGuiche, String _senha) da classe Web.java do Monitor as seguintes linhas: try
{
Thread.sleep(4000);
}catch (InterruptedException ie)
{
System.out.println(ie.getMessage());
} É na essência a mesma idéia citada aí em cima. Aqui funcionou! Abraço a todos!