package gcom.micromedicao; import gcom.batch.UnidadeProcessamento; import gcom.cadastro.funcionario.Funcionario; import gcom.cadastro.imovel.Imovel; import gcom.cadastro.localidade.Localidade; import gcom.cadastro.localidade.Quadra; import gcom.cadastro.localidade.SetorComercial; import gcom.cadastro.sistemaparametro.SistemaParametro; import gcom.faturamento.FaturamentoGrupo; import gcom.faturamento.FiltroFaturamentoGrupo; import gcom.micromedicao.leitura.LeituraAnormalidade; import gcom.micromedicao.medicao.MedicaoHistorico; import gcom.micromedicao.medicao.MedicaoTipo; import gcom.util.ControladorException; import gcom.util.ErroRepositorioException; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Calendar; import java.util.Collection; import java.util.GregorianCalendar; import java.util.Iterator; import javax.ejb.SessionBean; import org.apache.commons.fileupload.FileItem; /** * Controlador Micromedicao Juazeiro * * @author Rafael Corr�a * @date 30/06/2009 */ public class ControladorMicromedicaoCOSAMASEJB extends ControladorMicromedicao implements SessionBean{ private static final long serialVersionUID = 1L; //============================================================================================================== // M�TODOS EXCLUSIVOS DA COSAMA //============================================================================================================== /** * [UC00083] Gerar Dados para Leitura * * [SB0005] Gerar Rela��o(ROL) em TXT - JUAZEIRO * * @author Raphael Rossiter * @date 27/08/2009 * * @param colecaoRota * @param anoMesCorrente * @param idGrupoFaturamentoRota * @param sistemaParametro * @param idFuncionalidadeIniciada * @return Collection * @throws ErroRepositorioException */ public Collection gerarDadosPorLeituraMicroColetor(Collection colecaoRota, Integer anoMesCorrente, Integer idGrupoFaturamentoRota, SistemaParametro sistemaParametro, int idFuncionalidadeIniciada) throws ControladorException { int idUnidadeIniciada = 0; Iterator colecaoRotaIterator = colecaoRota.iterator(); while (colecaoRotaIterator.hasNext()) { Rota rota = (Rota) colecaoRotaIterator.next(); //------------------------- // // Registrar o in�cio do processamento da Unidade de // Processamento // do Batch // // ------------------------- idUnidadeIniciada = getControladorBatch() .iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada, UnidadeProcessamento.ROTA, rota.getId()); try { //CONTROLE DE PAGINA��O DA PESQUISA int numeroIndice = 0; int quantidadeRegistrosPesquisa = 1000; boolean flagTerminou = false; Integer qtdImoveis = 0; //MOVIMENTO ROTEIRO EMPRESA Collection<Object[]> objetosMovimentoRoteiroEmpresa = new ArrayList<Object[]>(); MovimentoRoteiroEmpresa movimentoRoteiroEmpresa = null; // SER� DEFINIDO SE JUAZEIRO UTILIZAR� HEADER PARA FORMATA��O DO ARQUIVO TXT //boolean headerArquivo = true; boolean headerArquivo = false; Integer quantidadeRegistros = new Integer(0); Integer quantidadeMovimentoRoteiroEmpresa = new Integer(0); Integer quantidadeRegistrosFiscalizacao = new Integer(0); StringBuilder arquivoTxt = new StringBuilder(); StringBuilder arquivoHeaderFiscalizacao = new StringBuilder(); StringBuilder arquivoTxtFiscalizacao = new StringBuilder(); Calendar dataCalendar = new GregorianCalendar(); //QUEBRANDO POR ROTA Integer idRotaOld = null; /* * Cria uma vari�vel do tipo boolean para saber se � a mesma ROTA * ou outra ROTA. */ boolean mesmaRota = false; while (!flagTerminou) { try { //PESQUISANDO MOVIMENTO ROTEIRO EMPRESA objetosMovimentoRoteiroEmpresa = repositorioMicromedicao .pesquisarImoveisParaLeituraPorColecaoRotaCAEMA(rota, numeroIndice, anoMesCorrente); } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } if (objetosMovimentoRoteiroEmpresa != null && !objetosMovimentoRoteiroEmpresa.isEmpty()) { qtdImoveis = qtdImoveis + objetosMovimentoRoteiroEmpresa.size(); //CONTROLE DE PAGINA��O DA PESQUISA if (objetosMovimentoRoteiroEmpresa.size() < quantidadeRegistrosPesquisa) { flagTerminou = true; } else { numeroIndice = numeroIndice + quantidadeRegistrosPesquisa; } for (Object[] dadosMovimentoRoteiroEmpresa : objetosMovimentoRoteiroEmpresa) { boolean ligacaoAgua = false; boolean ligacaoPoco = false; // cria uma string builder para adicionar no arquivo StringBuilder arquivoTxtLinha = new StringBuilder(); movimentoRoteiroEmpresa = (MovimentoRoteiroEmpresa) dadosMovimentoRoteiroEmpresa[0]; Integer idQuadra = (Integer) dadosMovimentoRoteiroEmpresa[1]; Quadra quadra = new Quadra(); quadra.setId(idQuadra); Imovel imovel = new Imovel(); imovel.setId(movimentoRoteiroEmpresa.getImovel().getId()); imovel.setQuadra(quadra); movimentoRoteiroEmpresa.setImovel(imovel); // incrementa a quantidade de registros quantidadeRegistros = quantidadeRegistros + 1; quantidadeMovimentoRoteiroEmpresa = objetosMovimentoRoteiroEmpresa.size(); //QUEBRANDO POR ROTA if (idRotaOld == null || movimentoRoteiroEmpresa.getRota().getId().equals(idRotaOld)) { mesmaRota = true; } else { mesmaRota = false; } if (mesmaRota) { //GERANDO O ARQUIVO TXT adicionarLinhaTxt(arquivoTxt, arquivoTxtLinha, arquivoTxtFiscalizacao, arquivoHeaderFiscalizacao, quantidadeRegistros, quantidadeMovimentoRoteiroEmpresa, quantidadeRegistrosFiscalizacao, movimentoRoteiroEmpresa, ligacaoAgua, ligacaoPoco, null, headerArquivo, sistemaParametro, idRotaOld, dataCalendar, anoMesCorrente); } else { /* * Manda o header do arquivo para true, pois agora ser� outra * empresa e precisa-se de um outro header. * * SER� DEFINIDO SE JUAZEIRO USAR� HEADER * headerArquivo = true; */ headerArquivo = false; String anoCom2Digitos = "" + Util.obterAno(movimentoRoteiroEmpresa.getAnoMesMovimento()); anoCom2Digitos = anoCom2Digitos.substring(2,4); String nomeArquivo = "ENV" + Util.adicionarZerosEsquedaNumero(2, "" + Util.obterMes(movimentoRoteiroEmpresa.getAnoMesMovimento())) + anoCom2Digitos + Util.adicionarZerosEsquedaNumero(2, movimentoRoteiroEmpresa.getLocalidade().getId().toString()) + Util.adicionarZerosEsquedaNumero(3, movimentoRoteiroEmpresa.getCodigoRota().toString()) + Util.adicionarZerosEsquedaNumero(3, movimentoRoteiroEmpresa.getCodigoRota().toString()) + ".txt"; if (arquivoTxt != null && arquivoTxt.length() != 0) { //GERANDO O ARQUIVO TXT this.inserirArquivoTextoRoteiroEmpresa( anoMesCorrente, movimentoRoteiroEmpresa, qtdImoveis, arquivoTxt, nomeArquivo); } // ROTA ANTIGA. idRotaOld = movimentoRoteiroEmpresa.getRota().getId(); /* * Cria outra string para come�ar a criar o txt. * Limpa os campos para serem usados na pr�xima empresa. */ arquivoTxt = new StringBuilder(); quantidadeRegistros = 0; quantidadeRegistrosFiscalizacao = 0; arquivoTxtFiscalizacao = new StringBuilder(); arquivoHeaderFiscalizacao = new StringBuilder(); qtdImoveis = objetosMovimentoRoteiroEmpresa.size(); adicionarLinhaTxt(arquivoTxt, arquivoTxtLinha, arquivoTxtFiscalizacao, arquivoHeaderFiscalizacao, quantidadeRegistros, quantidadeMovimentoRoteiroEmpresa, quantidadeRegistrosFiscalizacao, movimentoRoteiroEmpresa, ligacaoAgua, ligacaoPoco, null, headerArquivo, sistemaParametro, idRotaOld, dataCalendar, anoMesCorrente); } headerArquivo = false; } }else{ flagTerminou = true; } } if(movimentoRoteiroEmpresa != null){ String anoCom2Digitos = "" + Util.obterAno(movimentoRoteiroEmpresa.getAnoMesMovimento()); anoCom2Digitos = anoCom2Digitos.substring(2,4); String nomeArquivo = "ENV" + Util.adicionarZerosEsquedaNumero(2, "" + Util.obterMes(movimentoRoteiroEmpresa.getAnoMesMovimento())) + anoCom2Digitos + Util.adicionarZerosEsquedaNumero(2, movimentoRoteiroEmpresa.getLocalidade().getId().toString()) + Util.adicionarZerosEsquedaNumero(3, movimentoRoteiroEmpresa.getCodigoRota().toString()) + Util.adicionarZerosEsquedaNumero(3, movimentoRoteiroEmpresa.getCodigoRota().toString()) + ".txt"; if (arquivoTxt != null && arquivoTxt.length() != 0) { //GERANDO O ARQUIVO TXT this.inserirArquivoTextoRoteiroEmpresa(anoMesCorrente, movimentoRoteiroEmpresa, qtdImoveis, arquivoTxt, nomeArquivo); } } /* * Atualiza a data e a hora da realiza��o da atividade com a data e * a hora correntes. */ try { repositorioMicromedicao.atualizarFaturamentoAtividadeCronograma( idGrupoFaturamentoRota, anoMesCorrente); } catch (ErroRepositorioException e) { throw new ControladorException("erro.sistema", e); } // Encerra a unidade de Faturamento getControladorBatch().encerrarUnidadeProcessamentoBatch( null, idUnidadeIniciada, false); } catch (Exception e) { /* * Este catch serve para interceptar qualquer exce��o que o processo batch * venha a lan�ar e garantir que a unidade de processamento do batch * ser� atualizada com o erro ocorrido. */ e.printStackTrace(); getControladorBatch().encerrarUnidadeProcessamentoBatch(e, idUnidadeIniciada, true); } } return null; } /** * [UC0083]- Gerar dados para Leitura Author: R�mulo Aur�lio Date: * 08/07/2008 * * @param arquivoTxt * @param arquivoTxtLinha * @param arquivoTxtFiscalizacao * @param arquivoHeaderFiscalizacao * @param quantidadeRegistros * @param quantidadeMovimentoRoteiroEmpresa * @param quantidadeRegistrosFiscalizacao * @param movimentoRoteiroEmpresa * @param ligacaoAgua * @param ligacaoPoco * @param idFaturamentoGrupoOld * @param headerArquivo * @param sistemaParametro * @param idRotaOld * @param dataCalendar * @param anoMesCorrente */ private void adicionarLinhaTxt(StringBuilder arquivoTxt, StringBuilder arquivoTxtLinha, StringBuilder arquivoTxtFiscalizacao, StringBuilder arquivoHeaderFiscalizacao, Integer quantidadeRegistros, Integer quantidadeMovimentoRoteiroEmpresa, Integer quantidadeRegistrosFiscalizacao, MovimentoRoteiroEmpresa movimentoRoteiroEmpresa, boolean ligacaoAgua, boolean ligacaoPoco, Integer idFaturamentoGrupoOld, boolean headerArquivo, SistemaParametro sistemaParametro, Integer idRotaOld, Calendar dataCalendar, Integer anoMesCorrente) throws ControladorException{ //M�s de refer�ncia (MM) (Num�rico) arquivoTxtLinha.append("" + Util.adicionarZerosEsquedaNumeroTruncando(2, "" + Util.obterMes(movimentoRoteiroEmpresa.getAnoMesMovimento())) + "#"); //Ano de refer�ncia (AAAA) (Num�rico) arquivoTxtLinha.append("" + Util.adicionarZerosEsquedaNumeroTruncando(4, "" + Util.obterAno(movimentoRoteiroEmpresa.getAnoMesMovimento())) + "#"); //Matr�cula do Im�vel sem d�gito (Num�rico) String matriculaImovel = movimentoRoteiroEmpresa.getImovel() .getId().toString(); String matriculaImovelSemDigito = matriculaImovel.substring(0, matriculaImovel.length() - 1); arquivoTxtLinha.append("" + Util.adicionarZerosEsquedaNumeroTruncando(5, matriculaImovelSemDigito) + "#"); //D�gito da Matr�cula do Im�vel (Num�rico) arquivoTxtLinha.append(matriculaImovel.substring(matriculaImovel.length() - 1, matriculaImovel.length()) + "#"); //Localidade (Num�rico) arquivoTxtLinha.append("" + Util.adicionarZerosEsquedaNumeroTruncando(2, movimentoRoteiroEmpresa.getLocalidade().getId().toString()) + "#"); //Nome da Localidade (Alfanum�rico) if (movimentoRoteiroEmpresa.getNomeLocalidade() != null){ arquivoTxtLinha.append(completaString(movimentoRoteiroEmpresa .getNomeLocalidade(), 15) + "#"); } else{ arquivoTxtLinha.append(completaString("", 15) + "#"); } //Rota (Num�rico) if (movimentoRoteiroEmpresa.getCodigoRota() != null){ arquivoTxtLinha.append("" + Util.adicionarZerosEsquedaNumeroTruncando(3, movimentoRoteiroEmpresa.getCodigoRota().toString()) + "#"); } else{ arquivoTxtLinha.append("" + Util.adicionarZerosEsquedaNumeroTruncando(3, "") + "#"); } //Seq��ncia do Im�vel na Rota if (movimentoRoteiroEmpresa.getNumeroSequencialRota() != null){ arquivoTxtLinha.append("" + Util.adicionarZerosEsquedaNumeroTruncando(6, movimentoRoteiroEmpresa.getNumeroSequencialRota().toString()) + "#"); } else{ arquivoTxtLinha.append("" + Util.adicionarZerosEsquedaNumeroTruncando(6, "") + "#"); } //Fixo arquivoTxtLinha.append(" " + "#"); //Quadra do Im�vel (Num�rico) arquivoTxtLinha.append("" + Util.adicionarZerosEsquedaNumeroTruncando(4, movimentoRoteiroEmpresa.getNumeroQuadra().toString()) + "#"); //Lote do Im�vel (Num�rico) arquivoTxtLinha.append("" + Util.adicionarZerosEsquedaNumeroTruncando(4, movimentoRoteiroEmpresa.getNumeroLoteImovel().toString()) + "#"); //Nome do Cliente (Alfanum�rico) if (movimentoRoteiroEmpresa.getNomeCliente() != null){ arquivoTxtLinha.append(completaString(movimentoRoteiroEmpresa .getNomeCliente(), 45) + "#"); } else{ arquivoTxtLinha.append(completaString("", 45) + "#"); } //C�digo do Grupo de Faturamento arquivoTxtLinha.append("" + Util.adicionarZerosEsquedaNumeroTruncando(4, movimentoRoteiroEmpresa.getFaturamentoGrupo().getId().toString()) + "#"); //Endere�o Imovel imovelEndereco = this.getControladorEndereco() .pesquisarImovelParaEndereco(movimentoRoteiroEmpresa.getImovel().getId()); arquivoTxtLinha.append(completaString( imovelEndereco.getEnderecoFormatado(), 44) + "#"); //Complemento do endere�o do im�vel (Alfanum�rico) if (movimentoRoteiroEmpresa.getComplementoEndereco() != null){ arquivoTxtLinha.append(completaString(movimentoRoteiroEmpresa.getNumeroImovel().trim()+"-"+movimentoRoteiroEmpresa.getComplementoEndereco(), 10) + "#"); } else{ arquivoTxtLinha.append(completaString(movimentoRoteiroEmpresa.getNumeroImovel().trim(), 10) + "#"); } //Bairro do im�vel (Alfanum�rico) if (movimentoRoteiroEmpresa.getNomeBairro() != null){ arquivoTxtLinha.append(completaString(movimentoRoteiroEmpresa.getNomeBairro(), 30) + "#"); } else{ arquivoTxtLinha.append(completaString("", 30) + "#"); } //C�digo da Marca do Hidr�metro (Num�rico) if (movimentoRoteiroEmpresa.getHidrometroMarca() != null){ arquivoTxtLinha.append("" + Util.adicionarZerosEsquedaNumeroTruncando(2, movimentoRoteiroEmpresa.getHidrometroMarca().getId().toString()) + "#"); } else{ arquivoTxtLinha.append("" + Util.adicionarZerosEsquedaNumeroTruncando(2, "") + "#"); } //Descri��o da Marca do Hidr�metro (Alfanum�rico) if (movimentoRoteiroEmpresa.getHidrometroMarca() != null){ arquivoTxtLinha.append(completaString( movimentoRoteiroEmpresa.getHidrometroMarca().getDescricao(), 15) + "#"); } else{ arquivoTxtLinha.append(completaString("", 15) + "#"); } //N�mero do Hidr�metro (Alfanum�rico) if (movimentoRoteiroEmpresa.getNumeroHidrometro() != null){ arquivoTxtLinha.append(completaString( movimentoRoteiroEmpresa.getNumeroHidrometro(), 10) + "#"); } else{ arquivoTxtLinha.append(completaString("", 10) + "#"); } //C�digo da Situa��o da Liga��o de �gua do Im�vel (Num�rico) arquivoTxtLinha.append("" + Util.adicionarZerosEsquedaNumeroTruncando(2, movimentoRoteiroEmpresa.getLigacaoAguaSituacao().getId().toString()) + "#"); //Descri��o da Situa��o da Liga��o de �gua do Im�vel (Alfanum�rico) arquivoTxtLinha.append(completaString( movimentoRoteiroEmpresa.getDescricaoLigacaoAguaSituacao(), 15) + "#"); //DATA DA LEITURA ANTERIOR if (movimentoRoteiroEmpresa.getDataLeituraAnterior() != null){ //DIA arquivoTxtLinha.append("" + Util.adicionarZerosEsquedaNumeroTruncando(2, String.valueOf(Util.getDiaMes(movimentoRoteiroEmpresa.getDataLeituraAnterior()))) + "#"); //M�S arquivoTxtLinha.append("" + Util.adicionarZerosEsquedaNumeroTruncando(2, String.valueOf(Util.getMes(movimentoRoteiroEmpresa.getDataLeituraAnterior()))) + "#"); //ANO arquivoTxtLinha.append("" + Util.adicionarZerosEsquedaNumeroTruncando(4, String.valueOf(Util.getAno(movimentoRoteiroEmpresa.getDataLeituraAnterior()))) + "#"); } else{ arquivoTxtLinha.append("" + Util.adicionarZerosEsquedaNumeroTruncando(2, "") + "#"); arquivoTxtLinha.append("" + Util.adicionarZerosEsquedaNumeroTruncando(2, "") + "#"); arquivoTxtLinha.append("" + Util.adicionarZerosEsquedaNumeroTruncando(4, "") + "#"); } //Leitura Anterior (Num�rico) if (movimentoRoteiroEmpresa.getNumeroLeituraAnterior() != null){ arquivoTxtLinha.append("" + Util.adicionarZerosEsquedaNumeroTruncando(6, movimentoRoteiroEmpresa.getNumeroLeituraAnterior().toString()) + "#"); } else{ arquivoTxtLinha.append("" + Util.adicionarZerosEsquedaNumeroTruncando(6, "") + "#"); } //Leitura Atual (Num�rico) arquivoTxtLinha.append(" #"); //Consumo Anterior (Num�rico) if (movimentoRoteiroEmpresa.getNumeroConsumoFaturadoMenos1Mes() != null){ arquivoTxtLinha.append("" + Util.adicionarZerosEsquedaNumeroTruncando(6, movimentoRoteiroEmpresa.getNumeroConsumoFaturadoMenos1Mes().toString()) + "#"); } else{ arquivoTxtLinha.append("" + Util.adicionarZerosEsquedaNumeroTruncando(6, "") + "#"); } //MEDIA if (movimentoRoteiroEmpresa.getNumeroConsumoMedio() != null){ arquivoTxtLinha.append("" + Util.adicionarZerosEsquedaNumeroTruncando(6, movimentoRoteiroEmpresa.getNumeroConsumoMedio().toString()) + "#"); } else{ arquivoTxtLinha.append("" + Util.adicionarZerosEsquedaNumeroTruncando(6, "") + "#"); } //Fixo arquivoTxtLinha.append("050#"); //Data (DDMMAAAA) (Alfanum�rico) arquivoTxtLinha.append(completaString("", 8) + "#"); //Hora (HH:MM) arquivoTxtLinha.append(completaString("", 5) + "#"); //C�digo do Leiturista (Num�rico) arquivoTxtLinha.append(completaString("", 2) + "#"); //Nome do Leiturista (Alfanum�rico) arquivoTxtLinha.append(completaString("", 15) + "#"); //C�digo da Anormalidade Anterior (Num�rico) if (movimentoRoteiroEmpresa.getCodigoAnormalidadeAnterior() != null){ arquivoTxtLinha.append("" + Util.adicionarZerosEsquedaNumeroTruncando(2, movimentoRoteiroEmpresa.getCodigoAnormalidadeAnterior().toString()) + "#"); } else{ arquivoTxtLinha.append("" + Util.adicionarZerosEsquedaNumeroTruncando(2, "") + "#"); } //Descri��o da Anormalidade (Alfanum�rico) if (movimentoRoteiroEmpresa.getDescricaoAnormalidadeAnterior() != null){ arquivoTxtLinha.append(completaString( movimentoRoteiroEmpresa.getDescricaoAnormalidadeAnterior(), 20) + "#"); } else{ arquivoTxtLinha.append(completaString("", 20) + "#"); } //Fixo arquivoTxtLinha.append(completaString("", 2) + "#"); //Fixo arquivoTxtLinha.append(completaString("", 2) + "#"); //Quantidade de Economias (Num�rico) if (movimentoRoteiroEmpresa.getQuantidadeEconomias() != null){ arquivoTxtLinha.append("" + Util.adicionarZerosEsquedaNumeroTruncando(3, movimentoRoteiroEmpresa.getQuantidadeEconomias().toString()) + "#"); } else{ arquivoTxtLinha.append("" + Util.adicionarZerosEsquedaNumeroTruncando(3, "") + "#"); } //Tipo da Categoria (Alfanum�rico) if (movimentoRoteiroEmpresa.getDescricaoAbreviadaCategoriaImovel() != null){ arquivoTxtLinha.append(movimentoRoteiroEmpresa .getDescricaoAbreviadaCategoriaImovel().substring(0, 1) + "#"); } else{ arquivoTxtLinha.append(completaString("", 1) + "#"); } //Qtd de Economias 2 arquivoTxtLinha.append("000#"); //Categoria 2 arquivoTxtLinha.append(" #"); //Qtd de Economias 3 arquivoTxtLinha.append("000#"); //Categoria 3 arquivoTxtLinha.append(" #"); //Qtd de Economias 4 arquivoTxtLinha.append("000#"); //Categoria 4 arquivoTxtLinha.append(" #"); //Indicador do Movimento (Fixo) arquivoTxtLinha.append("0"); // Registro Detalhe arquivoTxt.append(arquivoTxtLinha); arquivoTxt.append(System.getProperty("line.separator")); } /** * [UC0082] Registrar Leituras e Anormalidades * * @author Raphael Rossiter * @date 03/09/2009 * * @param idFaturamentoGrupo * @param fileItem * @return Collection<MedicaoHistorico> * @throws ControladorException */ public Collection<MedicaoHistorico> processarArquivoTextoParaRegistrarLeiturasAnormalidades( Integer idFaturamentoGrupo, FileItem fileItem) throws ControladorException{ Collection<MedicaoHistorico> colecaoMedicaoHistorico = new ArrayList(); // ABRINDO O ARQUIVO InputStreamReader reader; try { reader = new InputStreamReader(fileItem.getInputStream()); } catch (IOException e) { e.printStackTrace(); throw new ControladorException("erro.importacao.nao_concluida"); } // PREPARANDO OBJETO PARA LER O ARQUIVO BufferedReader buffer = new BufferedReader(reader); //VARI�VEl PARA LER O ARQUIVO LINHA A LINHA boolean eof = false; //CARREGANDO OS DADOS DO GRUPO DE FATURAMENTO ONDE SER�O REGISTRADAS AS LEITURAS FiltroFaturamentoGrupo filtroFaturamentoGrupo = new FiltroFaturamentoGrupo(); filtroFaturamentoGrupo.adicionarParametro(new ParametroSimples( FiltroFaturamentoGrupo.ID, idFaturamentoGrupo)); Collection colecaoFaturamentoGrupo = this.getControladorUtil() .pesquisar(filtroFaturamentoGrupo, FaturamentoGrupo.class.getName()); FaturamentoGrupo faturamentoGrupo = null; if (colecaoFaturamentoGrupo != null && !colecaoFaturamentoGrupo.isEmpty()) { faturamentoGrupo = (FaturamentoGrupo) Util .retonarObjetoDeColecao(colecaoFaturamentoGrupo); } else { throw new ControladorException("atencao.entidade.inexistente",null, "Faturamento Grupo"); } while (!eof) { // PEGANDO A LINHA DO ARQUIVO String linhaLida; try { linhaLida = buffer.readLine(); } catch (IOException e) { e.printStackTrace(); throw new ControladorException("erro.importacao.nao_concluida"); } if (linhaLida == null) { // �LTIMA LINHA DO ARQUIVO eof = true; } else if (linhaLida.length() == 377){ // VARI�VEIS QUE SER�O UTILIZADAS PARA GERA��O DA MEDI��O HIST�RICO MedicaoHistorico medicaoHistorico = new MedicaoHistorico(); MedicaoTipo medicaoTipo = new MedicaoTipo(); Leiturista leiturista = new Leiturista(); LeituraAnormalidade leituraAnormalidade = new LeituraAnormalidade(); Imovel imovel = new Imovel(); Localidade localidade = new Localidade(); SetorComercial setorComercial = new SetorComercial(); Quadra quadra = new Quadra(); //M�S E ANO DA LEITURA String anoMesLeitura = linhaLida.substring(3, 7) + linhaLida.substring(0, 2); //VALIDANDO O M�S E ANO DA LEITURA boolean anoMesInvalido = Util.validarAnoMesSemBarra(anoMesLeitura); if (anoMesInvalido) { throw new ControladorException("atencao.anomes.faturamento.invalido"); } if (!faturamentoGrupo.getAnoMesReferencia().equals( Integer.parseInt(anoMesLeitura))) { throw new ControladorException( "atencao.anomes.faturamento.nao.corresponde"); } //ID DO GRUPO DE FATURAMENTO INFORMADO NO ARQUIVO String idFaturamentoHeaderString = linhaLida.substring(104, 108).trim(); Integer idFaturamentoHeader = null; if (!idFaturamentoHeaderString.equals("")) { idFaturamentoHeader = new Integer(linhaLida.substring(104, 108)); } if (idFaturamentoHeader != null && !idFaturamentoGrupo.equals(idFaturamentoHeader)) { throw new ControladorException("atencao.nao.grupo.faturamento"); } //INICIANDO O PROCESSO DE LEITURA DO ARQUIVO // ID DO LEITURISTA String idLeiturista = linhaLida.substring(303, 305).trim(); Funcionario funcionario = new Funcionario(); if (!idLeiturista.equals("")) { FiltroLeiturista filtroLeiturista = new FiltroLeiturista(); filtroLeiturista.adicionarCaminhoParaCarregamentoEntidade("funcionario"); filtroLeiturista.adicionarParametro(new ParametroSimples(FiltroLeiturista.ID,idLeiturista)); Collection colecaoLeiturista = getControladorUtil().pesquisar(filtroLeiturista,Leiturista.class.getName()); leiturista = (Leiturista)Util.retonarObjetoDeColecao(colecaoLeiturista); if(leiturista != null && !leiturista.equals("")){ funcionario = leiturista.getFuncionario(); } } else { leiturista.setId(null); } medicaoHistorico.setLeiturista(leiturista); medicaoHistorico.setFuncionario(funcionario); //DATA DE LEITURA String dataColeta = linhaLida.substring(288, 296); //caso o im�vel n�o tenha sico coletado a leitura if(dataColeta.equals("00000 ")){ continue; } medicaoHistorico.setDataLeituraParaRegistrar(dataColeta); //IM�VEL String idImovel = linhaLida.substring(8, 13) + linhaLida.substring(14, 15); System.out.println(idImovel); if (!idImovel.equals("")) { imovel.setId(new Integer(idImovel)); } else { imovel.setId(null); } //LOCALIDADE String idLocalidade = linhaLida.substring(16, 18).trim(); if (!idLocalidade.equals("")) { localidade.setId(new Integer(linhaLida.substring(16, 18))); } else { localidade.setId(null); } imovel.setLocalidade(localidade); //C�DIGO DO SETOR COMERCIAL String codigoSetorComercial = linhaLida.substring(35, 38).trim(); if (!codigoSetorComercial.equals("")) { setorComercial.setCodigo(new Integer(linhaLida.substring(35, 38))); } else { setorComercial.setCodigo(0); } imovel.setSetorComercial(setorComercial); //N�MERO DA QUADRA String numeroQuadra = linhaLida.substring(48, 52).trim(); if (!numeroQuadra.equals("")) { quadra.setNumeroQuadra(new Integer(linhaLida.substring(48, 52))); } else { quadra.setNumeroQuadra(0); } imovel.setQuadra(quadra); //LOTE String lote = linhaLida.substring(53, 57).trim(); if (!lote.equals("")) { imovel.setLote(new Short(lote)); } else { imovel.setLote(new Short("0")); } //SUBLOTE imovel.setSubLote(new Short("0")); medicaoHistorico.setImovel(imovel); // TIPO DE MEDI��O String idMedicaoTipo = "1"; medicaoTipo.setId(new Integer(idMedicaoTipo)); medicaoHistorico.setMedicaoTipo(medicaoTipo); // LEITURA DO HIDR�METRO String leituraHidrometro = null; leituraHidrometro = linhaLida.substring(263, 269).trim(); if (!leituraHidrometro.equals("")) { try { medicaoHistorico.setLeituraAtualInformada(new Integer( leituraHidrometro)); } catch (NumberFormatException ex) { medicaoHistorico.setLeituraAtualInformada(0); } } else { medicaoHistorico.setLeituraAtualInformada(null); } //ANORMALIDADE String idLeituraAnormalidade = linhaLida.substring(322, 324).trim(); if (!idLeituraAnormalidade.equals("")) { try { leituraAnormalidade.setId(new Integer(idLeituraAnormalidade)); } catch (NumberFormatException ex) { leituraAnormalidade.setId(0); } } else { leituraAnormalidade.setId(null); } medicaoHistorico .setLeituraAnormalidadeInformada(leituraAnormalidade); // INDICADOR DE CONFIRMA��O DA LEITURA if (medicaoHistorico.getLeituraAtualInformada() != null){ medicaoHistorico.setIndicadorConfirmacaoLeitura("1"); } else{ medicaoHistorico.setIndicadorConfirmacaoLeitura("2"); } //INSERINDO A MEDI��O HISTORICO QUE FOI GERADA A PARTIR DO ARQUIVO TXT colecaoMedicaoHistorico.add(medicaoHistorico); } else{ //�LTIMA LINHA DO ARQUIVO eof = true; } } // FECHANDO O ARQUIVO try { buffer.close(); reader.close(); fileItem.getInputStream().close(); } catch (IOException e) { e.printStackTrace(); throw new ControladorException("erro.importacao.nao_concluida"); } return colecaoMedicaoHistorico; } }