package gcom.gui.cobranca.cartao; import gcom.arrecadacao.Arrecadador; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.seguranca.acesso.usuario.Usuario; import gcom.util.Util; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Iterator; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; 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 RegistrarMovimentoCartaoCreditoAction extends GcomAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { ActionForward retorno = actionMapping.findForward("telaSucesso"); Fachada fachada = Fachada.getInstancia(); HttpSession sessao = httpServletRequest.getSession(false); Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado"); try { Integer idArrecadador = null; Arrecadador arrecadador = null; DiskFileUpload upload = new DiskFileUpload(); // Parse the request List items = upload.parseRequest(httpServletRequest); FileItem item = null; // cria uma string builder que recupera o txt e joga para o // controlador para o processamento StringBuilder stringBuilderTxt = new StringBuilder(); // cria um contador para saber quantas linhas ter� o txt int quantidadeRegistros = 0; // pega uma lista de itens do form Iterator iter = items.iterator(); while (iter.hasNext()) { item = (FileItem) iter.next(); //ARRECADADOR if (item.getFieldName().equals("idArrecadador")) { idArrecadador = new Integer(item.getString()); /* * [FS0001 � Verificar exist�ncia do arrecadador] * [FS0002 � Verificar arrecada��o forma cart�o cr�dito] */ arrecadador = fachada.verificarArrecadacaoFormaCartaoCredito(Integer.valueOf(idArrecadador)); } // verifica se n�o � diretorio if (!item.isFormField()) { // coloca o nome do item para maiusculo String nomeItem = item.getName().toUpperCase(); // compara o final do nome do arquivo que deve ser .RET if (nomeItem.endsWith(".RET")){ // Abre o arquivo InputStreamReader reader = new InputStreamReader(item.getInputStream()); BufferedReader buffer = new BufferedReader(reader); // StringBuffer linha = new StringBuffer(); // cria uma variavel do tipo boolean boolean eof = false; // 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.length() > 0) { String codigoRegistro = linhaLida.substring(0, 1).toUpperCase(); Character codigoRegistroCharacter = codigoRegistro.charAt(0); /* * C�DIGO ASC * 0 = 48 * 9 = 57 */ if (((int) codigoRegistroCharacter) >= 48 && ((int) codigoRegistroCharacter) <= 57) { //Completa a string para o tamanho de 251 caso necessario. String linhaCompleta = null; if (linhaLida.length() != 251) { linhaCompleta = Util.completaString(linhaLida, 251); } else { linhaCompleta = linhaLida; } stringBuilderTxt.append(linhaCompleta); stringBuilderTxt.append("\n"); quantidadeRegistros = quantidadeRegistros + 1; } else { break; } } else { break; } } // fecha o arquivo buffer.close(); reader.close(); item.getInputStream().close(); } else { throw new ActionServletException("atencao.tipo_importacao.nao_ret"); } } } if (quantidadeRegistros != 0) { this.getFachada().registrarMovimentoCartaoCredito(arrecadador, stringBuilderTxt, quantidadeRegistros, usuarioLogado); } else { throw new ActionServletException("atencao.importacao.nao_concluida"); } } catch (IOException ex) { throw new ActionServletException("erro.importacao.nao_concluida"); } catch (NumberFormatException ex) { throw new ActionServletException("erro.importacao.nao_concluida"); } catch (FileUploadException e) { throw new ActionServletException("erro.sistema", e); } // montando p�gina de sucesso montarPaginaSucesso(httpServletRequest, "Movimento Cart�o de Cr�dito Enviado para Processamento", "Voltar", "/exibirRegistrarMovimentoCartaoCreditoAction.do"); return retorno; } }