package gcom.gui.cadastro.atualizacaocadastralsimplificado; import gcom.cadastro.atualizacaocadastralsimplificado.AtualizacaoCadastralSimplificado; import gcom.cadastro.atualizacaocadastralsimplificado.AtualizacaoCadastralSimplificadoBinario; import gcom.cadastro.atualizacaocadastralsimplificado.AtualizacaoCadastralSimplificadoLinha; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.seguranca.acesso.usuario.Usuario; import gcom.util.IoUtil; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Collection; import java.util.HashSet; 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; /** * * L� o arquivo a partir dos par�metros da requisi��o e insere no BD. * [UC0969] Importar arquivo de atualiza��o cadastral simplificado * * * @author Samuel Valerio * * @date 21/10/2009 * * */ public class InserirAtualizacaoCadastralSimplificadoAction extends GcomAction { @SuppressWarnings("unchecked") @Override public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { ActionForward retorno = actionMapping .findForward("telaSucesso"); DiskFileUpload upload = new DiskFileUpload(); Integer idArquivo = null; String nomeArquivo = null; try { List items = upload.parseRequest(httpServletRequest); if (items != null) { FileItem item = null; String comentario = null; Iterator iter = items.iterator(); while (iter.hasNext()) { item = (FileItem) iter.next(); if (item.getFieldName().equals("comentario")) { comentario = item.getString().toUpperCase(); } // Caso n�o seja um field do formulario // � o arquivo if ( !item.isFormField() ){ InputStreamReader reader; try { reader = new InputStreamReader(item.getInputStream()); BufferedReader buffer = new BufferedReader(reader); Collection<AtualizacaoCadastralSimplificadoLinha> linhas = new HashSet<AtualizacaoCadastralSimplificadoLinha>(); final AtualizacaoCadastralSimplificado arquivo = new AtualizacaoCadastralSimplificado(); String linha; int numeroLinha = 0; StringBuffer conteudoDoArquivo = new StringBuffer(); while ((linha = buffer.readLine()) != null) { final AtualizacaoCadastralSimplificadoLinha linhaObj = new AtualizacaoCadastralSimplificadoLinha(linha.split("#"), ++numeroLinha); linhaObj.setArquivo(arquivo); linhas.add(linhaObj); conteudoDoArquivo.append(linha); conteudoDoArquivo.append(System.getProperty("line.separator")); } arquivo.setComentario(comentario); arquivo.setUsuario((Usuario) httpServletRequest.getSession(false).getAttribute("usuarioLogado")); AtualizacaoCadastralSimplificadoBinario arquivoBinario = new AtualizacaoCadastralSimplificadoBinario(); arquivoBinario.setBinario(IoUtil.transformarObjetoParaBytes(conteudoDoArquivo)); arquivo.setNome(item.getName()); idArquivo = Fachada.getInstancia().inserirArquivoAtualizacaoCadastralSimplificado(arquivo, arquivoBinario, linhas); // colocando o nome do arquivo em uma vari�vel para exib�-lo na p�gina de sucesso nomeArquivo = arquivo.getNome(); } catch (IOException e) { throw new ActionServletException("erro.inserir_arquivo_atualizacao_cadastral_simplificado.envio"); } } } } } catch (FileUploadException e) { throw new ActionServletException("erro.inserir_arquivo_atualizacao_cadastral_simplificado.envio"); } montarPaginaSucesso(httpServletRequest, "O arquivo " + nomeArquivo + " foi importado com sucesso.", "Visualizar detalhes da importa��o", "exibirDetalhesAtualizacaoCadastralSimplificadoAction.do?id="+idArquivo); return retorno; } }