package gcom.gui.cobranca; import gcom.cobranca.bean.OrdemCorteHelper; import gcom.gui.ActionServletException; import gcom.relatorio.ExibidorProcessamentoTarefaRelatorio; import gcom.relatorio.cobranca.RelatorioOrdemCorte; import gcom.tarefa.TarefaRelatorio; import gcom.util.Util; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.DiskFileUpload; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; public class GerarOrdemCorteAction extends ExibidorProcessamentoTarefaRelatorio { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { // Seta o mapeamento de retorno ActionForward retorno = actionMapping.findForward("exibirGerarOrdem"); DiskFileUpload upload = new DiskFileUpload(); List items = null; try { items = upload.parseRequest(httpServletRequest); this.getSessao(httpServletRequest).setAttribute("arquivo",items); } catch (FileUploadException e) { items = (List) this.getSessao(httpServletRequest).getAttribute("arquivo"); if(items == null){ throw new ActionServletException("erro.sistema", e); } } Collection colecaoOrdemCorteHelper = this.gerarColecaoOrdemCorteHelper(items); FileItem item = (FileItem) Util.retonarObjetoDeColecao(items); String nomeArquivo = item.getName().replace(".txt",""); nomeArquivo = nomeArquivo.replace("EMITIR",""); String tipoRelatorio = httpServletRequest.getParameter("tipoRelatorio"); RelatorioOrdemCorte relatorio = new RelatorioOrdemCorte(this.getUsuarioLogado(httpServletRequest)); relatorio.addParametro("colecaoOrdemCorteHelper", colecaoOrdemCorteHelper); if (tipoRelatorio == null) { tipoRelatorio = TarefaRelatorio.TIPO_PDF + ""; } relatorio.addParametro("tipoFormatoRelatorio",Integer.parseInt(tipoRelatorio)); relatorio.addParametro("nomeArquivo",nomeArquivo); retorno = processarExibicaoRelatorio(relatorio, tipoRelatorio, httpServletRequest, httpServletResponse, actionMapping); return retorno; } private Collection gerarColecaoOrdemCorteHelper(List items){ Collection retorno = new ArrayList(); FileItem item = null; String nomeItem = null; // Parse the request try { Iterator iter = items.iterator(); while (iter.hasNext()) { item = (FileItem) iter.next(); // verifica se n�o � diretorio if (!item.isFormField()) { // coloca o nome do item para maiusculo nomeItem = item.getName().toUpperCase(); // compara o final do nome do arquivo � .txt if (nomeItem.endsWith(".TXT")) { // abre o arquivo InputStreamReader reader = new InputStreamReader(item.getInputStream()); BufferedReader buffer = new BufferedReader(reader); // cria uma variavel do tipo boolean boolean eof = false; OrdemCorteHelper ordemCorteHelper = null; // enquanto a variavel for false while (!eof) { // pega a linha do arquivo String linhaLida = buffer.readLine(); // se for a ultima linha do arquivo if (linhaLida == null || linhaLida.trim().length() == 0) { // seta a variavel boolean para true eof = true; } else { ordemCorteHelper = new OrdemCorteHelper(); //1-Numero da OS (Campo 27 do TXT) ordemCorteHelper.setNumero(linhaLida.substring(1466, 1474).trim()); //2-Nome do Cliente Usuario (Campo 13 do TXT) ordemCorteHelper.setNomeCliente(linhaLida.substring(409, 459).trim()); //3-Endereco de Imovel - Parte 1 (Campo 9 do TXT) ordemCorteHelper.setEndereco(linhaLida.substring(67, 167).trim()); //4-Bairro (Campo 10.1 do TXT) ordemCorteHelper.setEnderecoLinha2(linhaLida.substring(167, 197).trim()); //5,6,7-Municipio,UF,CEP (Campo 10.2,10.3,10.4 do TXT) String enderecoLinha3 = linhaLida.substring(197, 227).trim() +" "+ linhaLida.substring(227, 229).trim() +" "+ linhaLida.substring(229, 238).trim(); ordemCorteHelper.setEnderecoLinha3(enderecoLinha3); //8-Rota/Grupo de Cobran�a (Campo 4,4.1,3 do TXT) String rotaGrupo = linhaLida.substring(16, 22).trim()+"."+ linhaLida.substring(22, 26).trim()+"/"+ linhaLida.substring(14, 16).trim(); ordemCorteHelper.setRotaGrupo(rotaGrupo); //9-Matricula do Imovel (Campo 7 do TXT) ordemCorteHelper.setMatricula(linhaLida.substring(38, 47).trim()); //10-Inscricao do Imovel (Campo 8 do TXT) ordemCorteHelper.setInscricao(linhaLida.substring(47, 67).trim()); //11-Data de Emissao(Campo 21 do TXT) ordemCorteHelper.setDataEmissao(linhaLida.substring(1264, 1274).trim()); //12 //13 //14-Numero do Hidrometro (Campo 23 do TXT) ordemCorteHelper.setNumeroHidrometro(linhaLida.substring(1284, 1294).trim()); //15-Local de Instala��o do Hidrometro (Campo 24 do TXT) ordemCorteHelper.setLocalizacaoHidrometro(linhaLida.substring(1294, 1299).trim()); //16-Data de Vencimento (Campo 22 do TXT) ordemCorteHelper.setDataVencimento(linhaLida.substring(1274, 1284).trim()); //17-Somatorio do Valor Total das Contas (Campo 16 do TXT) ordemCorteHelper.setValor(linhaLida.substring(1194, 1208).trim()); //18-Codigo de Barras Formatado (Campo 25 do TXT) String codigoBarraFormatado = linhaLida.substring(1299,1354).trim(); ordemCorteHelper.setRepresentacaoNumericaCodBarraFormatada(codigoBarraFormatado); //19-Codigo de Barras Sem os digitos (Campo 26 do TXT) //Representa��o numerica cod barra sem digito String codigoBarra = codigoBarraFormatado.substring(0,11) + codigoBarraFormatado.substring(14, 25) + codigoBarraFormatado.substring(28, 39) + codigoBarraFormatado.substring(42, 53); ordemCorteHelper.setRepresentacaoNumericaCodBarraSemDigito(codigoBarra); //20-Data de Emissao (Campo 21 do TXT) ordemCorteHelper.setDataEmissao(linhaLida.substring(1264, 1274).trim()); //21-Situacao da Liga��o de Agua (Campo 28 do TXT) ordemCorteHelper.setSituacaoLigacaoAgua(linhaLida.substring(1474, 1494).trim()); //22-Situacao da Ligacao de Esgoto (Campo 29 do TXT) ordemCorteHelper.setSituacaoLigacaoEsgoto(linhaLida.substring(1494, 1514).trim()); //23-Categoria Principal (Campo 30 do TXT) ordemCorteHelper.setCategoriaPrincipal(linhaLida.substring(1514, 1529).trim()); retorno.add(ordemCorteHelper); } }//fim do while eof } else { throw new ActionServletException("atencao.tipo_importacao.nao_txt"); } } } } catch (IOException ex) { throw new ActionServletException("erro.importacao.nao_concluida"); } return retorno; } }