package gcom.batch.micromedicao; import gcom.cadastro.sistemaparametro.SistemaParametro; import gcom.faturamento.ControladorFaturamentoLocal; import gcom.faturamento.ControladorFaturamentoLocalHome; import gcom.faturamento.FaturamentoGrupo; import gcom.micromedicao.ControladorMicromedicaoLocal; import gcom.micromedicao.ControladorMicromedicaoLocalHome; import gcom.micromedicao.Rota; import gcom.micromedicao.leitura.LeituraTipo; import gcom.util.ConstantesJNDI; import gcom.util.ControladorException; import gcom.util.ServiceLocator; import gcom.util.ServiceLocatorException; import gcom.util.SistemaException; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.Iterator; 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; /** * Descri��o da classe * * @author Pedro Alexandre * @date 13/09/2007 */ public class BatchGerarArquivoTextoParaLeituristaMDB implements MessageDrivenBean, MessageListener { private static final long serialVersionUID = 1L; public BatchGerarArquivoTextoParaLeituristaMDB() { super(); } public void setMessageDrivenContext(MessageDrivenContext ctx) throws EJBException { } public void ejbRemove() throws EJBException { } @SuppressWarnings("unchecked") public void onMessage(Message message) { if (message instanceof ObjectMessage) { ObjectMessage objectMessage = (ObjectMessage) message; try { Collection colecaoRoteirosEmpresa = (Collection) ((Object[]) objectMessage.getObject())[0]; Collection colecaoRotas = (Collection) ((Object[]) objectMessage.getObject())[1]; FaturamentoGrupo faturamentoGrupo = (FaturamentoGrupo) ((Object[]) objectMessage.getObject())[3]; Integer anoMesFaturamento = faturamentoGrupo.getAnoMesReferencia(); SistemaParametro sistemaParametro = (SistemaParametro) ((Object[]) objectMessage.getObject())[4]; Date dataComando = (Date) ((Object[]) objectMessage.getObject())[5]; Integer idFuncionalidadeIniciada = (Integer) ((Object[]) objectMessage.getObject())[6]; Iterator iterator = colecaoRotas.iterator(); Collection<Rota> colecaoLeiturista = new ArrayList(); Collection<Rota> colecaoConvencional = new ArrayList(); Collection<Rota> colecaoMicroColetor = new ArrayList(); while(iterator.hasNext()) { Rota rota = (Rota)iterator.next(); if(rota.getLeituraTipo().getId().intValue() == LeituraTipo.CONVENCIONAL.intValue()){ colecaoConvencional.add(rota); } else if (rota.getLeituraTipo().getId().intValue() == LeituraTipo.CELULAR_MOBILE.intValue()){ colecaoLeiturista.add(rota); } else if (rota.getLeituraTipo().getId().intValue() == LeituraTipo.LEITURA_E_ENTRADA_SIMULTANEA.intValue()){ this.getControladorFaturamento().gerarArquivoTextoParaFaturamento( rota, anoMesFaturamento, faturamentoGrupo,dataComando, idFuncionalidadeIniciada); } else { colecaoMicroColetor.add(rota); } rota = null; } //CELULAR MOBILE - LAYOUT �NICO PARA TODAS AS EMPRESAS if (!colecaoLeiturista.isEmpty()){ this.getControladorMicromedicao().gerarArquivoTextoParaLeiturista( colecaoRoteirosEmpresa, colecaoLeiturista, anoMesFaturamento, faturamentoGrupo, idFuncionalidadeIniciada.intValue()); } //CONVENCIONAL - LAYOUT POR EMPRESA if (!colecaoConvencional.isEmpty()){ this.getControladorMicromedicao().gerarDadosPorLeituraConvencional( colecaoConvencional, anoMesFaturamento, faturamentoGrupo.getId(), sistemaParametro, idFuncionalidadeIniciada); } //MICROCOLETOR - LAYOUT POR EMPRESA if(!colecaoMicroColetor.isEmpty()){ this.getControladorMicromedicao().gerarDadosPorLeituraMicroColetor( colecaoMicroColetor, anoMesFaturamento, faturamentoGrupo.getId(), sistemaParametro, idFuncionalidadeIniciada); } } catch (JMSException e) { System.out.println("Erro no MDB"); e.printStackTrace(); } catch (ControladorException e) { e.printStackTrace(); } } } /** * Retorna o valor de controladorMicromedicao * * @return O valor de controladorMicromedicao */ private ControladorMicromedicaoLocal getControladorMicromedicao() { ControladorMicromedicaoLocalHome localHome = null; ControladorMicromedicaoLocal local = null; // pega a inst�ncia do ServiceLocator. ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorMicromedicaoLocalHome) locator .getLocalHomePorEmpresa(ConstantesJNDI.CONTROLADOR_MICROMEDICAO_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); } } /** * Retorna o valor de controladorLocalidade * * @return O valor de controladorLocalidade */ 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); } } /** * Default create method * * @throws CreateException */ public void ejbCreate() { } }