diff --git a/src/com/rjconsultores/ventaboletos/service/ImportacaoClientesService.java b/src/com/rjconsultores/ventaboletos/service/ImportacaoClientesService.java index a16e0c069..c7a3e9f3b 100644 --- a/src/com/rjconsultores/ventaboletos/service/ImportacaoClientesService.java +++ b/src/com/rjconsultores/ventaboletos/service/ImportacaoClientesService.java @@ -6,7 +6,7 @@ import java.util.List; import com.rjconsultores.ventaboletos.entidad.Empresa; public interface ImportacaoClientesService { - public List lerArquivo(Reader reader); + public String[] lerArquivo(Reader reader, List empresas); - public String[] salvarClientes(List clientes, List empresa); + public void salvarClientes(String[] cliente); } diff --git a/src/com/rjconsultores/ventaboletos/service/impl/ImportacaoClientesServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/ImportacaoClientesServiceImpl.java index 4c3425da5..2b044ddba 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/ImportacaoClientesServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/ImportacaoClientesServiceImpl.java @@ -28,54 +28,101 @@ public class ImportacaoClientesServiceImpl implements ImportacaoClientesService private TarjetaFidelidadService tarjetaFidelidadService; private static Logger log = Logger.getLogger(ImportacaoClientesServiceImpl.class); + private Integer index; + private StringBuilder qtdeGravados; + private StringBuilder erros; + + private Integer inseridos; + private Integer atualizados; + + private List empresas; + @Override - public List lerArquivo(Reader reader) { + public String[] lerArquivo(Reader reader, List empresas) { String linha = null; + index = 0; + qtdeGravados = new StringBuilder(); + erros = new StringBuilder(); + + inseridos = 0; + atualizados = 0; + + this.empresas = empresas; + List listaClientes = new ArrayList(); try { BufferedReader leitor = new BufferedReader(reader); while ((linha = leitor.readLine()) != null) { - String[] dados = linha.split(","); - listaClientes.add(dados); + String[] dados = linha.replace("\"", "").split(","); + salvarClientes(dados); + index++; } leitor.close(); + + qtdeGravados.append("Gravados ").append(inseridos + atualizados).append(" clientes de ").append(index).append(" importados.\n"); + qtdeGravados.append("Atualizados ").append(atualizados).append(" clientes.\n"); + qtdeGravados.append("Inseridos ").append(inseridos).append(" novos clientes."); + + String[] resultado = { qtdeGravados.toString(), erros.toString() }; + return resultado; + } catch (Exception e) { log.error(e); + String[] resultado = { e.toString() }; + return resultado; } - - return listaClientes; } @Override - public String[] salvarClientes(List clientes, List empresas) { - StringBuilder qtdeGravados = new StringBuilder(); - StringBuilder erros = new StringBuilder(); + public void salvarClientes(String[] cliente) { + try { + String nomeCliente = cliente[1].replace("\"", "").toUpperCase(); - Integer inseridos = 0; - Integer atualizados = 0; - for (int i = 0; i < clientes.size(); i++) { - String[] cliente = clientes.get(i); - try { - String nomeCliente = cliente[1].replace("\"", "").toUpperCase(); + Cliente clienteGravar = clienteService.buscarPorNumeroFidelidade(Integer.parseInt(cliente[0])); + if (clienteGravar == null) { + clienteGravar = new Cliente(); + clienteGravar.setNombcliente(nomeCliente); + clienteGravar.setNumIdentificaUno(cliente[3]); - Cliente clienteGravar = clienteService.buscarPorNumeroFidelidade(Integer.parseInt(cliente[0])); - if (clienteGravar == null) { - clienteGravar = new Cliente(); - clienteGravar.setNombcliente(nomeCliente); - clienteGravar.setNumIdentificaUno(cliente[3]); + TarjetaFidelidad tarjetaFidelidad = new TarjetaFidelidad(); + tarjetaFidelidad.setActivo(Boolean.TRUE); + tarjetaFidelidad.setFecmodif(Calendar.getInstance().getTime()); + tarjetaFidelidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + // cast para Integer para remover 0 a esquerda: + tarjetaFidelidad.setNumTarjeta(Integer.parseInt(cliente[0])); + + List ls = new ArrayList(); + + for (Empresa e : empresas){ + ClienteFidelidad clienteFidelidad = new ClienteFidelidad(); + clienteFidelidad.setTarjetaFidelidad(tarjetaFidelidad); + clienteFidelidad.setActivo(Boolean.TRUE); + clienteFidelidad.setFecmodif(Calendar.getInstance().getTime()); + clienteFidelidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + clienteFidelidad.setCliente(clienteGravar); + clienteFidelidad.setEmpresa(e); + ls.add(clienteFidelidad); + } + + clienteGravar.setListClienteFidelidad(ls); - TarjetaFidelidad tarjetaFidelidad = new TarjetaFidelidad(); - tarjetaFidelidad.setActivo(Boolean.TRUE); - tarjetaFidelidad.setFecmodif(Calendar.getInstance().getTime()); - tarjetaFidelidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); - // cast para Integer para remover 0 a esquerda: - tarjetaFidelidad.setNumTarjeta(Integer.parseInt(cliente[0])); - - List ls = new ArrayList(); - - for (Empresa e : empresas){ + clienteService.suscribir(clienteGravar); + inseridos = inseridos + 1; + } else { + boolean possuiFidelidadeEmpresa; + for (Empresa e: empresas){ + possuiFidelidadeEmpresa = false; + for (ClienteFidelidad cf : clienteGravar.getListClienteFidelidad()){ + if (cf.getEmpresa() != null && cf.getEmpresa().equals(e)){ + possuiFidelidadeEmpresa = true; + break; + } + } + if (!possuiFidelidadeEmpresa){ + TarjetaFidelidad tarjetaFidelidad = tarjetaFidelidadService.obtenerNumTarjeta(Integer.parseInt(cliente[0])); + ClienteFidelidad clienteFidelidad = new ClienteFidelidad(); clienteFidelidad.setTarjetaFidelidad(tarjetaFidelidad); clienteFidelidad.setActivo(Boolean.TRUE); @@ -83,55 +130,19 @@ public class ImportacaoClientesServiceImpl implements ImportacaoClientesService clienteFidelidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); clienteFidelidad.setCliente(clienteGravar); clienteFidelidad.setEmpresa(e); - ls.add(clienteFidelidad); + clienteGravar.getListClienteFidelidad().add(clienteFidelidad); } - - clienteGravar.setListClienteFidelidad(ls); - - clienteService.suscribir(clienteGravar); - inseridos = inseridos + 1; - } else { - boolean possuiFidelidadeEmpresa; - for (Empresa e: empresas){ - possuiFidelidadeEmpresa = false; - for (ClienteFidelidad cf : clienteGravar.getListClienteFidelidad()){ - if (cf.getEmpresa() != null && cf.getEmpresa().equals(e)){ - possuiFidelidadeEmpresa = true; - break; - } - } - if (!possuiFidelidadeEmpresa){ - TarjetaFidelidad tarjetaFidelidad = tarjetaFidelidadService.obtenerNumTarjeta(Integer.parseInt(cliente[0])); - - ClienteFidelidad clienteFidelidad = new ClienteFidelidad(); - clienteFidelidad.setTarjetaFidelidad(tarjetaFidelidad); - clienteFidelidad.setActivo(Boolean.TRUE); - clienteFidelidad.setFecmodif(Calendar.getInstance().getTime()); - clienteFidelidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); - clienteFidelidad.setCliente(clienteGravar); - clienteFidelidad.setEmpresa(e); - clienteGravar.getListClienteFidelidad().add(clienteFidelidad); - } - } - clienteGravar.setNombcliente(nomeCliente); - clienteGravar.setNumIdentificaUno(cliente[3]); - clienteService.actualizacion(clienteGravar); - - atualizados = atualizados + 1; } - } catch (Exception e) { - erros.append("Linha ").append(i).append(" do arquivo de clientes, erro: ").append(e.getCause().getCause()).append("\n"); + clienteGravar.setNombcliente(nomeCliente); + clienteGravar.setNumIdentificaUno(cliente[3]); + clienteService.actualizacion(clienteGravar); - log.error(e); + atualizados = atualizados + 1; } + }catch (Exception e) { + erros.append("Linha ").append(index).append(" do arquivo de clientes, erro: ").append(e.getCause().getCause()).append("\n"); + + log.error(e); } - - qtdeGravados.append("Gravados ").append(inseridos + atualizados).append(" clientes de ").append(clientes.size()).append(" importados.\n"); - qtdeGravados.append("Atualizados ").append(atualizados).append(" clientes.\n"); - qtdeGravados.append("Inseridos ").append(inseridos).append(" novos clientes."); - - String[] resultado = { qtdeGravados.toString(), erros.toString() }; - - return resultado; } }