/** * */ package br.com.centralit.citcorpore.negocio; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.util.List; import br.com.centralit.citcorpore.bean.CargaSmartDTO; import br.com.centralit.citcorpore.bean.EmpregadoDTO; import br.com.centralit.citcorpore.bean.UnidadeDTO; import br.com.centralit.citcorpore.integracao.EmpregadoDao; import br.com.centralit.citcorpore.integracao.UnidadeDao; import br.com.centralit.citcorpore.util.Util; import br.com.citframework.excecao.PersistenceException; import br.com.citframework.integracao.CrudDAO; import br.com.citframework.integracao.TransactionControler; import br.com.citframework.integracao.TransactionControlerImpl; import br.com.citframework.service.CrudServiceImpl; /** * @author Cleon Xavier * */ public class CargaSmartServiceEjb extends CrudServiceImpl implements CargaSmartService { @Override protected CrudDAO getDao() { return null; } @Override public List<CargaSmartDTO> gerarCarga(final File carga, final Integer idEmpresa) throws Exception { final EmpregadoDao empregadoDao = new EmpregadoDao(); final UnidadeDao unidadeDao = new UnidadeDao(); final TransactionControler tc = new TransactionControlerImpl(empregadoDao.getAliasDB()); try (BufferedReader arq = new BufferedReader(new InputStreamReader(new FileInputStream(carga), "WINDOWS-1252"))) { empregadoDao.setTransactionControler(tc); unidadeDao.setTransactionControler(tc); tc.start(); boolean primeiraLinha = true; while (arq.ready()) { EmpregadoDTO empregadoDTO = new EmpregadoDTO(); UnidadeDTO unidadeDTO = new UnidadeDTO(); UnidadeDTO unidadeFilhaDTO = new UnidadeDTO(); final String linhaAux = arq.readLine(); String linha = null; if (linhaAux != null) { linha = new String(linhaAux); linha = linha.trim(); } EmpregadoDTO beanEmpregadoDTO = null; String[] linhaQuebrada = null; if (linha != null) { linhaQuebrada = linha.split("\n"); } if (linhaQuebrada != null && linhaQuebrada.length > 0) { for (final String string : linhaQuebrada) { final String[] colunasArray = string.split(";"); if (colunasArray.length > 0) { if (primeiraLinha) { primeiraLinha = false; break; } int j = 0; for (final String coluna : colunasArray) { UnidadeDTO beanUnidadeDTO = null; if (coluna.equals("")) { j++; } else { if (j == 0) { beanUnidadeDTO = new UnidadeDTO(); beanUnidadeDTO = existeUnidadePorNome(coluna, unidadeDao); if (beanUnidadeDTO.getIdUnidade() == null) { beanUnidadeDTO.setIdEmpresa(idEmpresa); beanUnidadeDTO.setIdUnidade(unidadeDTO.getIdUnidade()); beanUnidadeDTO.setNome(coluna); beanUnidadeDTO.setDataInicio(Util.getSqlDataAtual()); unidadeDTO = criaUnidadeDTO(beanUnidadeDTO, unidadeDao); } else { unidadeDTO = beanUnidadeDTO; } j++; } else if (j == 1) { beanUnidadeDTO = new UnidadeDTO(); beanUnidadeDTO = existeUnidadePorNome(coluna, unidadeDao); if (beanUnidadeDTO.getIdUnidade() == null) { beanUnidadeDTO.setIdEmpresa(idEmpresa); beanUnidadeDTO.setNome(coluna); if (unidadeDTO.getIdUnidade() != null) { beanUnidadeDTO.setIdUnidadePai(unidadeDTO.getIdUnidade()); } beanUnidadeDTO.setDataInicio(Util.getSqlDataAtual()); unidadeFilhaDTO = criaUnidadeDTO(beanUnidadeDTO, unidadeDao); } else { if (unidadeDTO.getIdUnidade() != null) { beanUnidadeDTO.setIdUnidadePai(unidadeDTO.getIdUnidade()); } beanUnidadeDTO.setDataInicio(Util.getSqlDataAtual()); unidadeFilhaDTO = beanUnidadeDTO; unidadeDao.update(unidadeFilhaDTO); } j++; } else if (j == 3) { beanEmpregadoDTO = new EmpregadoDTO(); beanEmpregadoDTO = existeEmpregadoPorNome(coluna, empregadoDao); if (beanEmpregadoDTO.getIdEmpregado() == null) { beanEmpregadoDTO.setNome(coluna); beanEmpregadoDTO.setNomeProcura(coluna); beanEmpregadoDTO.setIdUnidade(unidadeFilhaDTO.getIdUnidade()); beanEmpregadoDTO.setIdSituacaoFuncional(1); } else { beanEmpregadoDTO.setIdUnidade(unidadeFilhaDTO.getIdUnidade()); empregadoDTO = beanEmpregadoDTO; } j++; } else if (j == 4) { if (coluna.equalsIgnoreCase("outros")) { empregadoDTO.setTipo("O"); } else if (coluna.equalsIgnoreCase("Contrato Empresa - PJ")) { empregadoDTO.setTipo("C"); } else if (coluna.equalsIgnoreCase("Empregado CLT")) { empregadoDTO.setTipo("E"); } else if (coluna.equalsIgnoreCase("Est�gio")) { empregadoDTO.setTipo("T"); } else if (coluna.equalsIgnoreCase("FreeLancer")) { empregadoDTO.setTipo("F"); } else if (coluna.equalsIgnoreCase("S�cio")) { empregadoDTO.setTipo("X"); } else if (coluna.equalsIgnoreCase("Solicitante")) { empregadoDTO.setTipo("S"); } j++; } else if (j == 5) { if (coluna.equalsIgnoreCase("Ativo")) { empregadoDTO.setIdSituacaoFuncional(1); } else if (coluna.equalsIgnoreCase("Inativo")) { empregadoDTO.setIdSituacaoFuncional(2); } j++; } else if (j == 6) { empregadoDTO.setEmail(coluna); j++; } else if (j == 7) { empregadoDTO.setTelefone(coluna); if (empregadoDTO.getIdEmpregado() != null) { if (empregadoDTO.getIdCargo() != null && empregadoDTO.getIdUnidade() != null) { empregadoDao.update(empregadoDTO); } } j++; } } } } } } } tc.commit(); } catch (final PersistenceException e) { rollbackTransaction(tc, e); e.printStackTrace(); } finally { tc.closeQuietly(); } return null; } private EmpregadoDTO criaEmpregadoDTO(final EmpregadoDTO empregadoDTO, final EmpregadoDao dao) throws Exception { return (EmpregadoDTO) dao.create(empregadoDTO); } private EmpregadoDTO existeEmpregadoPorNome(final String coluna, final EmpregadoDao empregadoDao) throws Exception { final EmpregadoDTO empregadoDTO = new EmpregadoDTO(); empregadoDTO.setNome(coluna); final List<EmpregadoDTO> listEmpregado = (List<EmpregadoDTO>) empregadoDao.findByNomeEmpregado(empregadoDTO); if (listEmpregado != null) { return listEmpregado.get(0); } return empregadoDTO; } private UnidadeDTO existeUnidadePorNome(final String coluna, final UnidadeDao unidadeDao) throws Exception { final UnidadeDTO unidadeDTO = new UnidadeDTO(); unidadeDTO.setNome(coluna); final List<UnidadeDTO> listUnidade = (List<UnidadeDTO>) unidadeDao.findByNomeUnidade(unidadeDTO); if (listUnidade != null) { return listUnidade.get(0); } return unidadeDTO; } private UnidadeDTO criaUnidadeDTO(final UnidadeDTO unidadeDTO, final UnidadeDao dao) throws Exception { return (UnidadeDTO) dao.create(unidadeDTO); } }