package gcom.faturamento; import gcom.arrecadacao.pagamento.FiltroGuiaPagamento; import gcom.arrecadacao.pagamento.GuiaPagamento; import gcom.cadastro.cliente.Cliente; import gcom.cadastro.cliente.ClienteEndereco; import gcom.cadastro.cliente.ControladorClienteLocal; import gcom.cadastro.cliente.ControladorClienteLocalHome; import gcom.cadastro.imovel.ControladorImovelLocal; import gcom.cadastro.imovel.ControladorImovelLocalHome; import gcom.relatorio.arrecadacao.pagamento.RelatorioGuiaPagamentoEmAtrasoHelper; import gcom.util.ConstantesJNDI; import gcom.util.ControladorException; import gcom.util.ErroRepositorioException; import gcom.util.ServiceLocator; import gcom.util.ServiceLocatorException; import gcom.util.SistemaException; import gcom.util.Util; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.List; import javax.ejb.CreateException; import javax.ejb.SessionContext; /** * Esta classe tem como finalidade encapsular o caso de uso [UC0877] - EmitirGuiaPagamentoEmAtraso, gerando * maior facilidade na manuten��o do mesmo. * * @author Fl�vio Leonardo * @date 27/01/2009 */ public class UC00877EmitirGuiaPagamentoEmAtraso { private static UC00877EmitirGuiaPagamentoEmAtraso instancia; private IRepositorioFaturamento repositorioFaturamento; private SessionContext sessionContext; private UC00877EmitirGuiaPagamentoEmAtraso(IRepositorioFaturamento repositorioFaturamento, SessionContext sessionContext) { this.repositorioFaturamento = repositorioFaturamento; this.sessionContext = sessionContext; } public static UC00877EmitirGuiaPagamentoEmAtraso getInstancia(IRepositorioFaturamento repositorioFaturamento, SessionContext sessionContext) { if (instancia == null) { instancia = new UC00877EmitirGuiaPagamentoEmAtraso(repositorioFaturamento, sessionContext); } return instancia; } private ControladorImovelLocal getControladorImovel() { ControladorImovelLocalHome localHome = null; ControladorImovelLocal local = null; ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorImovelLocalHome) locator .getLocalHome(ConstantesJNDI.CONTROLADOR_IMOVEL_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 ControladorClienteLocal getControladorCliente() { ControladorClienteLocalHome localHome = null; ControladorClienteLocal local = null; ServiceLocator locator = null; try { locator = ServiceLocator.getInstancia(); localHome = (ControladorClienteLocalHome) locator .getLocalHome(ConstantesJNDI.CONTROLADOR_CLIENTE_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 Collection<RelatorioGuiaPagamentoEmAtrasoHelper> pesquisarDadosRelatorioGuiaPagamentoEmAtraso(FiltroGuiaPagamento filtroGuiaPagamento) throws ControladorException{ Collection retorno = new ArrayList(); try { Collection colecaoRepositorio = repositorioFaturamento.pesquisarDadosRelatorioGuiaPagamentoEmAtraso(filtroGuiaPagamento); if(!colecaoRepositorio.isEmpty()){ Iterator iteratorRepositorio = colecaoRepositorio.iterator(); RelatorioGuiaPagamentoEmAtrasoHelper helper = null; Collection<RelatorioGuiaPagamentoEmAtrasoHelper> colecaoGuiaImovel = new ArrayList<RelatorioGuiaPagamentoEmAtrasoHelper>(); Collection<RelatorioGuiaPagamentoEmAtrasoHelper> colecaoGuiaCliente = new ArrayList<RelatorioGuiaPagamentoEmAtrasoHelper>(); while(iteratorRepositorio.hasNext()){ GuiaPagamento guiaPagamento = (GuiaPagamento) iteratorRepositorio.next(); helper = new RelatorioGuiaPagamentoEmAtrasoHelper(); Cliente cliente = null; if(guiaPagamento.getImovel() != null){ //Cliente cliente = getControladorImovel().pesquisarClienteUsuarioImovel(guiaPagamento.getImovel().getId()); helper.setImovel(guiaPagamento.getImovel().getId().toString()); }else{ //Cliente cliente = guiaPagamento.getCliente(); } cliente = getControladorCliente().pesquisarCliente(cliente.getId()); //Cliente ClienteEndereco clienteEndereco = null; Collection colecaoEndereco = getControladorCliente().pesquisarEnderecosClienteAbreviado(cliente.getId()); if(colecaoEndereco != null && !colecaoEndereco.isEmpty()){ clienteEndereco = (ClienteEndereco)Util.retonarObjetoDeColecao(colecaoEndereco); } if(cliente.getCpf() != null){ helper.setClienteCpf(cliente.getCpfFormatado()); }else{ helper.setClienteCpf(cliente.getCnpjFormatado()); } helper.setClienteId(cliente.getId().toString()); helper.setClienteNome(cliente.getNome().toUpperCase()); helper.setClienteEndereco(clienteEndereco != null ? clienteEndereco.getEnderecoFormatadoAbreviado().toUpperCase() : ""); //fim cliente helper.setEmissao(Util.formatarData(guiaPagamento.getDataEmissao())); helper.setVencimento(Util.formatarData(guiaPagamento.getDataVencimento())); helper.setValor(Util.formatarMoedaReal(guiaPagamento.getValorDebito())); helper.setReferencia(Util.formatarAnoMesParaMesAno(guiaPagamento.getAnoMesReferenciaContabil())); helper.setParcelas(guiaPagamento.getPrestacaoFormatada()); if(guiaPagamento.getDebitoTipo() != null){ helper.setDebitoTipoDescricao(guiaPagamento.getDebitoTipo().getDescricao()); } if(guiaPagamento.getFinanciamentoTipo() != null){ helper.setFinanciamentoTipoDescricao(guiaPagamento.getFinanciamentoTipo().getDescricao()); } if(helper.getImovel() != null){ colecaoGuiaImovel.add(helper); }else{ colecaoGuiaCliente.add(helper); } } //organizar colecao retorno por cliente - alfabetica if(!colecaoGuiaImovel.isEmpty()){ Collections.sort((List) colecaoGuiaImovel, new Comparator() { public int compare(Object a, Object b) { String posicao1 = ((RelatorioGuiaPagamentoEmAtrasoHelper) a) .getClienteNome(); String posicao2 = ((RelatorioGuiaPagamentoEmAtrasoHelper) b) .getClienteNome(); return posicao1.compareTo(posicao2); } }); } if(!colecaoGuiaCliente.isEmpty()){ Collections.sort((List) colecaoGuiaCliente, new Comparator() { public int compare(Object a, Object b) { String posicao1 = ((RelatorioGuiaPagamentoEmAtrasoHelper) a) .getClienteNome(); String posicao2 = ((RelatorioGuiaPagamentoEmAtrasoHelper) b) .getClienteNome(); return posicao1.compareTo(posicao2); } }); } retorno.add(colecaoGuiaImovel); retorno.add(colecaoGuiaCliente); } } catch (ErroRepositorioException e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } catch (ControladorException e) { sessionContext.setRollbackOnly(); throw new ControladorException("erro.sistema", e); } return retorno; } }