package br.com.centralit.citcorpore.batch;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import br.com.centralit.asterisk.Asterisk;
import br.com.centralit.asterisk.ChamadaDTO;
import br.com.centralit.citajax.framework.AjaxReverse;
import br.com.centralit.citcorpore.util.Enumerados.ParametroSistema;
import br.com.centralit.citcorpore.util.ParametroUtil;
/**
* @author euler.ramos
*
*/
public class MonitoraAsterisk extends Thread {
private final String nomeDaFuncaoJavaScript = "exibirNotificacaoAsterisk";
private static Asterisk asterisk;
private StringBuilder listatelefones = null;
private List<ChamadaDTO> listChamadaDto = new ArrayList<ChamadaDTO>();
private Integer intervalo = 1000;
@Override
public void run() {
while (true) {
String asteriskAtivo = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.SERVASTERISKATIVAR, "N");
synchronized (this) {
if (asteriskAtivo.equalsIgnoreCase("S")) {
try {
if (asterisk == null) {
asterisk = new Asterisk();
}
listChamadaDto = asterisk.telefonesChamando();
listatelefones = new StringBuilder();
for (ChamadaDTO chamadaDTO : listChamadaDto) {
listatelefones.append(chamadaDTO.getNumeroOrigem() + "," + chamadaDTO.getNumeroDestino() + "#");
}
if (listatelefones.length() > 0) {
// Enviando lista de novas chamadas ativas para os
// computadores clientes.
AjaxReverse.executarAjaxReverseWithAllSessions(nomeDaFuncaoJavaScript, listatelefones.toString());
}
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
try {
try {
intervalo = Integer.parseInt(ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.SERVASTERISKINTERVALO, "2000"));
} catch (NumberFormatException e) {
intervalo = 2000;
}
Thread.sleep(intervalo);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}