package gcom.faturamento;
import gcom.cadastro.ControladorCadastroLocal;
import gcom.cadastro.ControladorCadastroLocalHome;
import gcom.cadastro.EnvioEmail;
import gcom.cadastro.endereco.ControladorEnderecoLocal;
import gcom.cadastro.endereco.ControladorEnderecoLocalHome;
import gcom.cobranca.ControladorCobrancaLocal;
import gcom.cobranca.ControladorCobrancaLocalHome;
import gcom.faturamento.conta.ContaMotivoCancelamento;
import gcom.faturamento.conta.ContaMotivoRetificacao;
import gcom.faturamento.controladores.ControladorRetificarContaLocal;
import gcom.faturamento.controladores.ControladorRetificarContaLocalHome;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.util.ConstantesJNDI;
import gcom.util.ControladorException;
import gcom.util.MetodosBatch;
import gcom.util.ServiceLocator;
import gcom.util.ServiceLocatorException;
import gcom.util.SistemaException;
import gcom.util.email.ErroEmailException;
import gcom.util.email.ServicosEmail;
import java.util.Collection;
import java.util.Date;
import javax.ejb.CreateException;
import javax.ejb.EJBException;
import javax.ejb.MessageDrivenBean;
import javax.ejb.MessageDrivenContext;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.ObjectMessage;
/**
* @ejb.bean name="ControladorBatchFaturamento" display-name="Name for
* ControladorBatchFaturamento" description="Description for
* ControladorBatchFaturamento" destination-type="javax.jms.Queue"
* acknowledge-mode="Auto-acknowledge"
*/
public class ControladorBatchFaturamento implements MessageDrivenBean,
MessageListener {
private static final long serialVersionUID = 1L;
public ControladorBatchFaturamento() {
super();
}
public void setMessageDrivenContext(MessageDrivenContext ctx)
throws EJBException {
}
public void ejbRemove() throws EJBException {
}
public void onMessage(Message message) {
if (message instanceof ObjectMessage) {
Usuario usuarioLogado = null;
String mensagemEmail = "";
String assuntoEmail = "";
ObjectMessage objectMessage = (ObjectMessage) message;
try {
switch (objectMessage.getIntProperty("nomeMetodo")) {
case (MetodosBatch.ENDERECO_INSERIR_CEP_IMPORTADOS): {
this.getControladorEndereco()
.inserirCepImportados(
(Collection) ((Object[]) objectMessage
.getObject())[0]);
break;
}
case (MetodosBatch.GERAR_RELATORIO_MAPA_CONTROLE_CONTA): {
this.getControladorFaturamento()
.filtrarMapaControleContaRelatorio(
(Integer) ((Object[]) objectMessage.getObject())[0],
(String) ((Object[]) objectMessage.getObject())[1],
(Usuario) ((Object[]) objectMessage.getObject())[2],
(String) ((Object[]) objectMessage.getObject())[3],
(String) ((Object[]) objectMessage.getObject())[4]);
break;
}
case (MetodosBatch.GERAR_ARQUIVO_TEXTO_FATURAMENTO): {
this.getControladorFaturamento().chamarGerarArquivoTextoFaturamento(
(Integer) ((Object[]) objectMessage
.getObject())[0],(String) ((Object[]) objectMessage.getObject())[1],
(Collection) ((Object[]) objectMessage.getObject())[2]);
break;
}
case (MetodosBatch.ALTERAR_VENCIMENTO_CONJUNTO_CONTA_CLIENTE): {
this.getControladorFaturamento().alterarVencimentoConjuntoContaCliente(
(Integer) ((Object[]) objectMessage .getObject())[0],
(Short) ((Object[]) objectMessage.getObject())[1],
(Date) ((Object[]) objectMessage.getObject())[2],
(Integer) ((Object[]) objectMessage.getObject())[3],
(Date) ((Object[]) objectMessage.getObject())[4],
(Date) ((Object[]) objectMessage.getObject())[5],
(Integer) ((Object[]) objectMessage.getObject())[6],
(Usuario) ((Object[]) objectMessage.getObject())[7],
(Integer) ((Object[]) objectMessage .getObject())[8],
(Boolean) ((Object[]) objectMessage.getObject())[9]);
usuarioLogado = (Usuario) ((Object[]) objectMessage.getObject())[7];
assuntoEmail = "ALTERAR VENCIMENTO DE CONJUNTO DE CONTAS";
break;
}
case (MetodosBatch.ALTERAR_VENCIMENTO_CONJUNTO_CONTA): {
this.getControladorFaturamento().alterarVencimentoConjuntoConta(
(Integer) ((Object[]) objectMessage .getObject())[0],
(Date) ((Object[]) objectMessage.getObject())[1],
(Integer) ((Object[]) objectMessage.getObject())[2],
(Integer) ((Object[]) objectMessage.getObject())[3],
(Date) ((Object[]) objectMessage.getObject())[4],
(Date) ((Object[]) objectMessage.getObject())[5],
(Usuario) ((Object[]) objectMessage.getObject())[6],
(Boolean) ((Object[]) objectMessage.getObject())[7]);
usuarioLogado = (Usuario) ((Object[]) objectMessage.getObject())[6];
assuntoEmail = "ALTERAR VENCIMENTO DE CONJUNTO DE CONTAS";
break;
}
case (MetodosBatch.ALTERAR_VENCIMENTO_CONJUNTO_CONTA_COLECAO): {
this.getControladorFaturamento().alterarVencimentoConjuntoConta(
(Collection) ((Object[]) objectMessage .getObject())[0],
(Date) ((Object[]) objectMessage.getObject())[1],
(Integer) ((Object[]) objectMessage.getObject())[2],
(Date) ((Object[]) objectMessage.getObject())[3],
(Date) ((Object[]) objectMessage.getObject())[4],
(Integer) ((Object[]) objectMessage.getObject())[5],
(Usuario) ((Object[]) objectMessage.getObject())[6],
(String) ((Object[]) objectMessage.getObject())[7],
(String[]) ((Object[]) objectMessage.getObject())[8],
(Boolean) ((Object[]) objectMessage.getObject())[9]);
usuarioLogado = (Usuario) ((Object[]) objectMessage.getObject())[6];
assuntoEmail = "ALTERAR VENCIMENTO DE CONJUNTO DE CONTAS";
break;
}
case (MetodosBatch.CANCELAR_CONJUNTO_CONTA): {
this.getControladorFaturamento().cancelarConjuntoConta(
(Collection) ((Object[]) objectMessage.getObject())[0],
(ContaMotivoCancelamento) ((Object[]) objectMessage.getObject())[1],
(Integer) ((Object[]) objectMessage.getObject())[2],
(Date) ((Object[]) objectMessage.getObject())[3],
(Date) ((Object[]) objectMessage.getObject())[4],
(Integer) ((Object[]) objectMessage.getObject())[5],
(Usuario) ((Object[]) objectMessage.getObject())[6],
(String) ((Object[]) objectMessage.getObject())[7]);
usuarioLogado = (Usuario) ((Object[]) objectMessage.getObject())[6];
assuntoEmail = "CANCELAR CONJUNTO DE CONTAS";
break;
}
case (MetodosBatch.CANCELAR_CONJUNTO_CONTA_CLIENTE): {
this.getControladorFaturamento().cancelarConjuntoContaCliente(
(Integer) ((Object[]) objectMessage.getObject())[0],
(Short) ((Object[]) objectMessage.getObject())[1],
(ContaMotivoCancelamento) ((Object[]) objectMessage.getObject())[2],
(Integer) ((Object[]) objectMessage.getObject())[3],
(Date) ((Object[]) objectMessage.getObject())[4],
(Date) ((Object[]) objectMessage.getObject())[5],
(Integer) ((Object[]) objectMessage.getObject())[6],
(Usuario) ((Object[]) objectMessage.getObject())[7]);
usuarioLogado = (Usuario) ((Object[]) objectMessage.getObject())[7];
assuntoEmail = "CANCELAR CONJUNTO DE CONTAS";
break;
}
case (MetodosBatch.CANCELAR_CONJUNTO_CONTA_POR_GRUPO_FATURAMENTO): {
this.getControladorFaturamento().cancelarConjuntoConta(
(Integer) ((Object[]) objectMessage.getObject())[0],
(ContaMotivoCancelamento) ((Object[]) objectMessage.getObject())[1],
(Integer) ((Object[]) objectMessage.getObject())[2],
(Date) ((Object[]) objectMessage.getObject())[3],
(Date) ((Object[]) objectMessage.getObject())[4],
(Integer) ((Object[]) objectMessage.getObject())[5],
(Usuario) ((Object[]) objectMessage.getObject())[6]);
usuarioLogado = (Usuario) ((Object[]) objectMessage.getObject())[6];
assuntoEmail = "CANCELAR CONJUNTO DE CONTAS";
break;
}
case (MetodosBatch.RETIFICAR_CONJUNTO_CONTA_POR_GRUPO_FATURAMENTO):{
this.getControladorRetificarConta().retificarConjuntoConta(
(Integer) ((Object[]) objectMessage.getObject())[0],
(Integer) ((Object[]) objectMessage.getObject())[1],
(ContaMotivoRetificacao) ((Object[]) objectMessage.getObject())[2],
(Collection) ((Object[]) objectMessage.getObject())[3],
(Usuario) ((Object[]) objectMessage.getObject())[4],
(Date) ((Object[]) objectMessage.getObject())[5],
(Date) ((Object[]) objectMessage.getObject())[6],
(Integer) ((Object[]) objectMessage.getObject())[7]);
usuarioLogado = (Usuario) ((Object[]) objectMessage.getObject())[4];
assuntoEmail = "RETIFICAR CONJUNTO DE CONTAS";
break;
}
case (MetodosBatch.RETIFICAR_CONJUNTO_CONTA_COLECAO):{
this.getControladorRetificarConta().retificarConjuntoConta(
(Collection) ((Object[]) objectMessage.getObject())[0],
(Integer) ((Object[]) objectMessage.getObject())[1],
(ContaMotivoRetificacao) ((Object[]) objectMessage.getObject())[2],
(Collection) ((Object[]) objectMessage.getObject())[3],
(Usuario) ((Object[]) objectMessage.getObject())[4],
(Date) ((Object[]) objectMessage.getObject())[5],
(Date) ((Object[]) objectMessage.getObject())[6],
(Integer) ((Object[]) objectMessage.getObject())[7],
(String) ((Object[]) objectMessage.getObject())[8]);
usuarioLogado = (Usuario) ((Object[]) objectMessage.getObject())[4];
assuntoEmail = "RETIFICAR CONJUNTO DE CONTAS";
break;
}
case (MetodosBatch.INSERIR_DEBITOS_PARA_CONTAS_VALOR_DIFERENTE):{
this.getControladorFaturamento().inserirDebitosContasComValorFaixasErradas(
(Integer) ((Object[]) objectMessage.getObject())[0],
(Usuario) ((Object[]) objectMessage.getObject())[1]);
usuarioLogado = (Usuario) ((Object[]) objectMessage.getObject())[1];
assuntoEmail = "RETIFICAR CONJUNTO DE CONTAS";
break;
}
case (MetodosBatch.GERAR_BOLETIM_MEDICAO):{
this.getControladorCobranca().gerarBoletimMedicao(
(Integer) ((Object[]) objectMessage.getObject())[0],
(Integer) ((Object[]) objectMessage.getObject())[1],
(Usuario) ((Object[]) objectMessage.getObject())[2]);
usuarioLogado = null;
assuntoEmail = "GERAR BOLETIM DE MEDI��O";
break;
}
}
mensagemEmail = "ALTERADO COM SUCESSO.";
} catch (JMSException e) {
System.out.println("Erro no MDB");
e.printStackTrace();
} catch (ControladorException e) {
System.out.println("Erro no MDB");
mensagemEmail = "ALTERA��O N�O FOI REALIZADA COM SUCESSO.";
e.printStackTrace();
} finally {
if(usuarioLogado != null){
try {
EnvioEmail envioEmail = getControladorCadastro().pesquisarEnvioEmail(EnvioEmail.AVISO_CONCLUSAO_BATCH_AVULSO);
try {
ServicosEmail.enviarMensagem(envioEmail.getEmailRemetente(), usuarioLogado.getDescricaoEmail(),
assuntoEmail, mensagemEmail);
} catch (ErroEmailException e) {
throw new ControladorException("erro.envio.mensagem");
}
} catch (ControladorException e) {
e.printStackTrace();
}
}
}
}
}
private ControladorEnderecoLocal getControladorEndereco() {
ControladorEnderecoLocalHome localHome = null;
ControladorEnderecoLocal local = null;
// pega a inst�ncia do ServiceLocator.
ServiceLocator locator = null;
try {
locator = ServiceLocator.getInstancia();
localHome = (ControladorEnderecoLocalHome) locator
.getLocalHome(ConstantesJNDI.CONTROLADOR_ENDERECO_SEJB);
// guarda a referencia de um objeto capaz de fazer chamadas �
// objetos remotamente
local = localHome.create();
return local;
} catch (CreateException e) {
throw new SistemaException(e);
} catch (ServiceLocatorException e) {
throw new SistemaException(e);
}
}
private ControladorFaturamentoLocal getControladorFaturamento() {
ControladorFaturamentoLocalHome localHome = null;
ControladorFaturamentoLocal local = null;
// pega a inst�ncia do ServiceLocator.
ServiceLocator locator = null;
try {
locator = ServiceLocator.getInstancia();
localHome = (ControladorFaturamentoLocalHome) locator
.getLocalHomePorEmpresa(ConstantesJNDI.CONTROLADOR_FATURAMENTO_SEJB);
// guarda a referencia de um objeto capaz de fazer chamadas
// objetos remotamente
local = localHome.create();
return local;
} catch (CreateException e) {
throw new SistemaException(e);
} catch (ServiceLocatorException e) {
throw new SistemaException(e);
}
}
public void ejbCreate() {
}
private ControladorCadastroLocal getControladorCadastro() {
ControladorCadastroLocalHome localHome = null;
ControladorCadastroLocal local = null;
ServiceLocator locator = null;
try {
locator = ServiceLocator.getInstancia();
localHome = (ControladorCadastroLocalHome) locator
.getLocalHomePorEmpresa(ConstantesJNDI.CONTROLADOR_CADASTRO_SEJB);
local = localHome.create();
return local;
} catch (CreateException e) {
throw new SistemaException(e);
} catch (ServiceLocatorException e) {
throw new SistemaException(e);
}
}
private ControladorCobrancaLocal getControladorCobranca() {
ControladorCobrancaLocalHome localHome = null;
ControladorCobrancaLocal local = null;
// pega a inst�ncia do ServiceLocator.
ServiceLocator locator = null;
try {
locator = ServiceLocator.getInstancia();
localHome = (ControladorCobrancaLocalHome) locator
.getLocalHomePorEmpresa(ConstantesJNDI.CONTROLADOR_COBRANCA_SEJB);
// guarda a referencia de um objeto capaz de fazer chamadas
// objetos remotamente
local = localHome.create();
return local;
} catch (CreateException e) {
throw new SistemaException(e);
} catch (ServiceLocatorException e) {
throw new SistemaException(e);
}
}
private ControladorRetificarContaLocal getControladorRetificarConta() {
ControladorRetificarContaLocalHome localHome = null;
ControladorRetificarContaLocal local = null;
ServiceLocator locator = null;
try {
locator = ServiceLocator.getInstancia();
localHome = (ControladorRetificarContaLocalHome) locator.getLocalHome(ConstantesJNDI.CONTROLADOR_RETIFICAR_CONTA);
local = localHome.create();
return local;
} catch (CreateException e) {
throw new SistemaException(e);
} catch (ServiceLocatorException e) {
throw new SistemaException(e);
}
}
}