Emporium.Controle.ContrDestinatarioImporta.java Source code

Java tutorial

Introduction

Here is the source code for Emporium.Controle.ContrDestinatarioImporta.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Emporium.Controle;

import Controle.ContrErroLog;
import Entidade.ArquivoImportacao;
import Util.Conexao;
import Util.FormataString;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import org.apache.commons.fileupload.FileItem;

/**
 *
 * @author Ricardinho
 */
public class ContrDestinatarioImporta {

    private static String falha = "";

    public static ArrayList<ArquivoImportacao> validaCepArquivo(ArrayList<ArquivoImportacao> listaAi) {
        falha = "";

        for (ArquivoImportacao ai : listaAi) {
            try {
                //VALIDA O CEP
                int cepInteiro = 0;
                String cep = ai.getCep().replace(".", "").replace("-", "");
                if (cep.length() < 7 || cep.length() > 8) {
                    //CEP INV?LIDO NA LINHA X
                    falha += "Linha n." + ai.getNrLinha() + " - CEP " + ai.getCep() + " invalido!";
                }
                try {
                    cepInteiro = Integer.parseInt(cep);
                } catch (NumberFormatException e) {
                    falha += "Linha n." + ai.getNrLinha() + " - CEP " + ai.getCep() + " invalido!";
                }
            } catch (Exception e) {
                System.out.println("FALHA AO MONTAR DADOS DO SQL = " + e);
                falha += "FALHA AO MONTAR DADOS DO SQL = " + e;
            }

        }

        return listaAi;
    }

    public static void insereDestinatarios(ArrayList<ArquivoImportacao> listaAi, String nomeBD) {
        for (ArquivoImportacao ai : listaAi) {
            //System.out.println("Entro " + ai.getNome());
            //INSERE O DESTINATARIO
            inserir(ai.getIdCliente(), ai.getIdDepartamento(), ai.getNome(), ai.getCpf(), ai.getEmpresa(),
                    ai.getCep(), ai.getEndereco(), ai.getNumero(), ai.getComplemento(), ai.getBairro(),
                    ai.getCidade(), ai.getUf(), ai.getEmail(), ai.getCelular(), "Brasil", nomeBD, ai.getObs());
        }
    }

    public static int inserir(int idCliente, int idDepartamento, String nome, String cpf_cnpj, String empresa,
            String cep, String endereco, String numero, String complemento, String bairro, String cidade, String uf,
            String email, String celular, String pais, String nomeBD, String tags) {
        Connection conn = Conexao.conectar(nomeBD);
        String sql = "INSERT INTO cliente_destinatario (idCliente, nome, cpf_cnpj, empresa, cep, endereco, numero, complemento, bairro, cidade, uf, email, celular, pais, tags, idDepartamento) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
        //System.out.println("inserir Destinatario -----------------\n"+sql+"\n---------------");

        try {
            PreparedStatement valores = conn.prepareStatement(sql, PreparedStatement.RETURN_GENERATED_KEYS);
            valores.setInt(1, idCliente);
            valores.setString(2, FormataString.removeSpecialChars(nome));
            valores.setString(3, cpf_cnpj);
            valores.setString(4, empresa);
            valores.setString(5, cep);
            valores.setString(6, FormataString.removeSpecialChars(endereco));
            valores.setString(7, numero);
            valores.setString(8, complemento);
            valores.setString(9, bairro);
            valores.setString(10, cidade);
            valores.setString(11, uf);
            valores.setString(12, email);
            valores.setString(13, celular);
            valores.setString(14, pais);
            valores.setString(15, tags);
            valores.setInt(16, idDepartamento);
            valores.executeUpdate();
            int autoIncrementKey = 0;
            ResultSet rs = valores.getGeneratedKeys();
            if (rs.next()) {
                autoIncrementKey = rs.getInt(1);
            }
            valores.close();
            return autoIncrementKey;
        } catch (SQLException e) {
            //System.out.println("ERRO > "+e);
            ContrErroLog.inserir("HOITO - ContrPreVendaDest.inserir", "SQLException", sql, e.toString());
            return 0;
        } finally {
            Conexao.desconectar(conn);
        }
    }

    //Importa arquivos tipo .TXT separados com campos com tamanhos determinados
    public static String importaPedido(FileItem item, int idCliente, int idDepartamento, String nomeBD) {

        try {
            //CONTADOR DE LINHA
            int qtdLinha = 1;
            ArrayList<ArquivoImportacao> listaAi = new ArrayList<ArquivoImportacao>();
            BufferedReader le = new BufferedReader(new InputStreamReader(item.getInputStream(), "ISO-8859-1"));
            // LE UMA LINHA DO ARQUIVO PARA PULAR O CABEALHO
            le.readLine();
            while (le.ready()) {
                //LE UMA LINHA DO ARQUIVO E DIVIDE A LINHA POR PONTO E VIRGULA
                String[] aux = le.readLine().replace(";", " ; ").split(";");
                //System.out.println("aaa "+aux[0]);
                //ADICIONA CONTADOR DE LINHA
                qtdLinha++;
                //VERIFICA QUANTIDADE MAXIMA DE LINHAS PERMITIDAS
                if (aux != null && aux.length >= 10) {

                    ArquivoImportacao ai = new ArquivoImportacao();
                    ai.setIdCliente(idCliente);
                    ai.setIdDepartamento(idDepartamento);
                    ai.setNrLinha(qtdLinha + "");
                    ai.setNome(aux[0].trim());
                    ai.setEmpresa(aux[1].trim());
                    ai.setCpf(aux[2].trim());
                    ai.setCep(aux[3].trim());
                    ai.setEndereco(aux[4].trim());
                    ai.setNumero(aux[5].trim());
                    ai.setComplemento(aux[6].trim());
                    ai.setBairro(aux[7].trim());
                    ai.setCidade(aux[8].trim());
                    ai.setUf(aux[9].trim());
                    ai.setCelular("");
                    if (aux.length >= 12 && aux[11] != null) {
                        ai.setCelular(aux[10].trim() + aux[11].trim());
                    }
                    ai.setEmail("");
                    if (aux.length >= 13 && aux[12] != null) {
                        ai.setEmail(aux[12].trim());
                    }
                    ai.setObs("");//campo usado para tags (Entidade reaproveitada)
                    if (aux.length >= 14 && aux[13] != null) {
                        ai.setObs(aux[13].trim());
                    }

                    listaAi.add(ai);

                }
            }
            le.close();

            if (listaAi.size() > 0) {
                //valida os dados do arquivo para efetuar a importacao
                listaAi = validaCepArquivo(listaAi);
                if (!falha.equals("")) {
                    //retorna mensagem de falha
                    return falha;
                } else {
                    //MONTA SQL
                    insereDestinatarios(listaAi, nomeBD);
                    return "Destinatarios Importados Com Sucesso!";
                }
            } else {
                return "Nenhum pedido no arquivo para importar!";
            }

        } catch (IOException e) {
            return "No foi possivel ler o arquivo: " + e;
        } catch (Exception e) {
            return "Falha na importacao dos pedidos: " + e;
        }

    }

}