package gcom.gui.cadastro.endereco; import gcom.cadastro.endereco.Cep; import gcom.fachada.Fachada; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.util.ConstantesSistema; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collection; import java.util.Date; 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.FileUpload; import org.apache.commons.fileupload.FileUploadException; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; /** * Action respons�vel para dar um onLoad no arquivo e importar os ceps. * * @author S�vio Luiz * @created 24 de Agosto de 2005 */ public class ImportarCepAction extends GcomAction { /** * Description of the Method * * @param actionMapping * Description of the Parameter * @param actionForm * Description of the Parameter * @param httpServletRequest * Description of the Parameter * @param httpServletResponse * Description of the Parameter * @return Description of the Return Value */ public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { ActionForward retorno = actionMapping.findForward("telaSucesso"); try { // FileUpload fup = new FileUpload(); /* boolean isMultipart = */FileUpload .isMultipartContent(httpServletRequest); DiskFileUpload upload = new DiskFileUpload(); // Parse the request List items = upload.parseRequest(httpServletRequest); Fachada fachada = Fachada.getInstancia(); // Cria a cole��o de cep que ser�o importados Collection<Cep> colecaoCepImportadas = new ArrayList(); FileItem item = null; // pega uma lista de itens do form 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 String 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); // StringBuffer linha = new StringBuffer(); // cria uma variavel do tipo boolean boolean eof = false; // enquanto a variavel for false int i= 0; while (!eof) { // pega a linha do arquivo String linhaLida = buffer.readLine(); // se for a ultima linha do arquivo if (linhaLida == null) { // seta a variavel boolean para true eof = true; } else { i++; System.out.println(i); // cria um objeto do tipo cep Cep cep = new Cep(); // caso a linha tenha menos de 160 digitos na // linha // ent�o n�o entra no if // sen�o cria o objeto para a inclus�o if (linhaLida.length() >= 160) { cep.setSigla(linhaLida.substring(0, 2) .trim()); cep.setLogradouro((linhaLida.substring(2, 62).trim())); if (linhaLida.substring(62, 70).trim().length() > 0) { int codigoCep = Integer .parseInt(linhaLida.substring( 62, 70).trim()); cep.setCodigo(new Integer(codigoCep)); } cep.setMunicipio(linhaLida.substring(70, 100).trim()); cep.setBairro(linhaLida.substring(100, 130) .trim()); cep.setDescricaoTipoLogradouro(linhaLida .substring(130, 160).trim()); cep .setIndicadorUso(ConstantesSistema.INDICADOR_USO_ATIVO); cep.setUltimaAlteracao(new Date()); cep.setCepTipo(null); colecaoCepImportadas.add(cep); } } } // fecha o arquivo buffer.close(); reader.close(); item.getInputStream().close(); } else { throw new ActionServletException( "atencao.tipo_importacao.nao_txt"); } } } if (colecaoCepImportadas != null && !colecaoCepImportadas.isEmpty()) { fachada.inserirCepImportados(colecaoCepImportadas); } else { throw new ActionServletException("atencao.arquivo_sem_dados", null, item.getName()); } } 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); } montarPaginaSucesso(httpServletRequest, "Cep(s) importado(s) com sucesso!", "Importar outro(s) cep(s)", "exibirImportarCepAction.do"); return retorno; } }