Controller.importarController.java Source code

Java tutorial

Introduction

Here is the source code for Controller.importarController.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 Controller;

import Dao.AlunoDAO;
import Dao.AssuntoDAO;
import Dao.BancaDAO;
import Dao.BancaStatusDAO;
import Dao.ConvidadoDAO;
import Dao.CursoDAO;
import Dao.DefesaDAO;
import Dao.EmpresaDAO;
import Dao.EstagioDAO;
import Dao.ModalidadeDAO;
import Dao.PerfilDAO;
import Dao.ProfessorDAO;
import Dao.TrabalhoDAO;
import Dao.TrabalhoStatusDAO;
import Model.Aluno;
import Model.Assunto;
import Model.Banca;
import Model.Bancastatus;
import Model.Convidado;
import Model.Curso;
import Model.Defesa;
import Model.Empresa;
import Model.Estagio;
import Model.Modalidade;
import Model.Perfil;
import Model.Professor;
import Model.Trabalho;
import Model.Trabalhostatus;
import Util.CalendarFormat;
import Util.Functions;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.Cell;
import org.primefaces.context.RequestContext;
import org.primefaces.event.FileUploadEvent;
import org.primefaces.model.UploadedFile;

/**
 *
 * @author Alessandro
 */
@ManagedBean(name = "ImportarBean")
@SessionScoped
public class importarController {

    private String importacaoErrosAluno = "";
    private String importacaoErrosProfessor = "";
    private String importacaoErrosTrabalho = "";
    private String nomeArquivo = "";
    private UploadedFile arquivo;

    /**
     * funo que direciona para pagina de visualizar trabalho
     *
     * @return
     */
    public String direcionaVisualizarImportacao() {
        return "importaDados.xhtml?facesRedirect=true";
    }

    /**
     * funo para fazer upload do arquivo de Alunos
     *
     * @param event
     */
    public void uploadDadosAluno(FileUploadEvent event) {
        arquivo = event.getFile();
        nomeArquivo = event.getFile().getFileName();

        if (!nomeArquivo.equalsIgnoreCase("")) {
            List dataHolder = null;
            try {
                dataHolder = ReadFile(nomeArquivo, (FileInputStream) arquivo.getInputstream());
            } catch (IOException ex) {
                FacesContext.getCurrentInstance().addMessage("growlImportaAluno",
                        new FacesMessage(FacesMessage.SEVERITY_WARN, "Erro ao ler arquivo.", ""));
            }
            importarAluno(dataHolder);
            RequestContext rc = RequestContext.getCurrentInstance();
            rc.execute("PF('tabImportacao').select(0)");

        } else {
            FacesContext.getCurrentInstance().addMessage("growlImportaAluno",
                    new FacesMessage(FacesMessage.SEVERITY_WARN, "Selecione o arquivo em Excel.", ""));
        }

    }

    /**
     * funo para fazer upload do arquivo de Professores
     *
     * @param event
     */
    public void uploadDadosProfessor(FileUploadEvent event) {
        arquivo = event.getFile();
        nomeArquivo = event.getFile().getFileName();

        if (!nomeArquivo.equalsIgnoreCase("")) {
            List dataHolder = null;
            try {
                dataHolder = ReadFile(nomeArquivo, (FileInputStream) arquivo.getInputstream());
            } catch (IOException ex) {
                FacesContext.getCurrentInstance().addMessage("growlImportacaoProfessor",
                        new FacesMessage(FacesMessage.SEVERITY_WARN, "Erro ao ler arquivo.", ""));
            }
            importarProfessor(dataHolder);
            RequestContext rc = RequestContext.getCurrentInstance();
            rc.execute("PF('tabImportacao').select(1)");

        } else {
            FacesContext.getCurrentInstance().addMessage("growlImportacaoProfessor",
                    new FacesMessage(FacesMessage.SEVERITY_WARN, "Selecione o arquivo em Excel.", ""));
        }

    }

    /**
     * funo para fazer upload do arquivo de Trabalho
     *
     * @param event
     */
    public void uploadDadosTrabalho(FileUploadEvent event) {
        arquivo = event.getFile();
        nomeArquivo = event.getFile().getFileName();

        if (!nomeArquivo.equalsIgnoreCase("")) {
            List dataHolder = null;
            try {
                dataHolder = ReadFile(nomeArquivo, (FileInputStream) arquivo.getInputstream());
            } catch (IOException ex) {
                FacesContext.getCurrentInstance().addMessage("growlImportacaoTrabalho",
                        new FacesMessage(FacesMessage.SEVERITY_WARN, "Erro ao ler arquivo.", ""));
            }
            importarTrabalho(dataHolder);
            RequestContext rc = RequestContext.getCurrentInstance();
            rc.execute("PF('tabImportacao').select(2)");

        } else {
            FacesContext.getCurrentInstance().addMessage("growlImportacaoTrabalho",
                    new FacesMessage(FacesMessage.SEVERITY_WARN, "Selecione o arquivo em Excel.", ""));
        }

    }

    /**
     * funo para ler um arquivo em Excel
     *
     * @param fileName
     * @param myInput
     * @return
     */
    @SuppressWarnings("unchecked")
    public List ReadFile(String fileName, FileInputStream myInput) {
        List cellVectorHolder = new ArrayList();
        try {
            //FileInputStream myInput = new FileInputStream(fileName);
            POIFSFileSystem myFileSystem = new POIFSFileSystem(myInput);
            HSSFWorkbook myWorkBook = new HSSFWorkbook(myFileSystem);
            HSSFSheet mySheet = myWorkBook.getSheetAt(0);
            Iterator rowIter = mySheet.rowIterator();
            while (rowIter.hasNext()) {
                HSSFRow myRow = (HSSFRow) rowIter.next();
                Iterator cellIter = myRow.cellIterator();
                List cellStoreVector = new ArrayList();
                while (cellIter.hasNext()) {
                    HSSFCell myCell = (HSSFCell) cellIter.next();
                    cellStoreVector.add(myCell);
                }
                cellVectorHolder.add(cellStoreVector);
            }
        } catch (Exception e) {
        }
        return cellVectorHolder;
    }

    /**
     * funo para importar o arquivo de Alunos
     *
     */
    @SuppressWarnings("unchecked")
    private void importarAluno(List dataHolder) {

        String erros = "";
        //camea na linha 1 porque a linha 0  cabealho
        int qtdImportado = 0;
        String totalDeLinhas = String.valueOf(dataHolder.size() - 1);

        AlunoDAO aDAO = new AlunoDAO();
        for (int i = 1; i < dataHolder.size(); i++) {
            List linha = (List) dataHolder.get(i);
            Aluno aluno = new Aluno();
            Curso curso = new Curso();
            for (int col = 0; col < linha.size(); col++) {
                HSSFCell myCell = (HSSFCell) linha.get(col);
                myCell.setCellType(Cell.CELL_TYPE_STRING);
                String stringCellValue = myCell.toString().trim();

                switch (col) {
                case 0:
                    aluno.setMatricula(stringCellValue.trim());
                    break;
                case 1:
                    aluno.setNome(stringCellValue.trim());
                    break;
                case 2:
                    if (!stringCellValue.trim().equalsIgnoreCase("") && stringCellValue.trim() != null) {
                        aluno.setEmail(stringCellValue.trim());
                    }
                    break;
                case 3:
                    if (!stringCellValue.trim().equalsIgnoreCase("") && stringCellValue.trim() != null) {
                        String tel = Functions.formatString(stringCellValue.trim(), "(##) ####-####");
                        aluno.setTelefone(tel);
                    }
                    break;
                case 4:
                    /*saber o curso*/
                    if (stringCellValue.equalsIgnoreCase("BCC")
                            || stringCellValue.equalsIgnoreCase("Cincia da Computao - Curriculo Antigo")) {
                        stringCellValue = "Cincia da Computao - Curriculo Antigo";
                    } else if (stringCellValue.equalsIgnoreCase("BCC")
                            || stringCellValue.equalsIgnoreCase("Cincia da Computao - Curriculo Novo")) {
                        stringCellValue = "Cincia da Computao - Curriculo Novo";
                    } else if (stringCellValue.equalsIgnoreCase("BCC")
                            || stringCellValue.equalsIgnoreCase("Cincia da Computao - Curriculo Antigo")) {
                        stringCellValue = "Cincia da Computao";
                    } else if (stringCellValue.equalsIgnoreCase("BSI")
                            || stringCellValue.equalsIgnoreCase("Sistemas de Informao")) {
                        stringCellValue = "Sistemas de Informao";
                    }
                    CursoDAO cDAO = new CursoDAO();
                    try {
                        curso = cDAO.getCursoByNomeCurso(stringCellValue);
                    } catch (Exception ex) {
                        FacesContext.getCurrentInstance().addMessage("growlImportaAluno",
                                new FacesMessage(FacesMessage.SEVERITY_WARN, "Curso no encontrado!", ""));
                    }
                    cDAO.closeSession();

                    if (null != curso.getIdcurso()) {
                        aluno.setCursoidcurso(curso);

                        try {
                            Aluno alunoByMatricula = aDAO.getAlunoByMatricula(aluno.getMatricula());
                            if (alunoByMatricula == null) {
                                //insere porque no existe na base
                                boolean inserido = aDAO.insert(aluno);
                                qtdImportado++;

                            } else {
                                String novoErro = "Aluno " + aluno.getNome() + " j existe.";
                                erros = erros + "\n" + novoErro;
                            }
                        } catch (Exception ex) {
                            FacesContext.getCurrentInstance().addMessage("growlImportaAluno", new FacesMessage(
                                    FacesMessage.SEVERITY_WARN, "Erro ao importar aluno" + aluno.getNome(), ""));
                        }
                    }
                    break;
                }
            }
        }

        aDAO.closeSession();
        this.setImportacaoErrosAluno(erros);
        if (qtdImportado > 0) {
            FacesContext.getCurrentInstance().addMessage("growlImportaAluno", new FacesMessage(
                    FacesMessage.SEVERITY_INFO,
                    "Importao Realizada!\r\n Importado " + String.valueOf(qtdImportado) + " de " + totalDeLinhas,
                    ""));
        } else {
            FacesContext.getCurrentInstance().addMessage("growlImportaAluno",
                    new FacesMessage(FacesMessage.SEVERITY_WARN, "Importao no realizada!", ""));
        }

    }

    /**
     * funo para importar o arquivo de Professores
     *
     */
    @SuppressWarnings("unchecked")
    private void importarProfessor(List dataHolder) {
        String erros = "";
        //camea na linha 1 porque a linha 0  cabealho
        int qtdImportado = 0;
        String totalDeLinhas = String.valueOf(dataHolder.size() - 1);

        ProfessorDAO pDAO = new ProfessorDAO();
        for (int i = 1; i < dataHolder.size(); i++) {
            List linha = (List) dataHolder.get(i);
            Professor professor = new Professor();
            Perfil perfil = new Perfil();
            for (int col = 0; col < linha.size(); col++) {
                HSSFCell myCell = (HSSFCell) linha.get(col);
                myCell.setCellType(Cell.CELL_TYPE_STRING);
                String stringCellValue = myCell.toString().trim();

                switch (col) {
                case 0:
                    professor.setSiape(Integer.parseInt(stringCellValue.trim()));
                    break;
                case 1:
                    professor.setNome(stringCellValue.trim());
                    break;
                case 2:
                    professor.setEmail(stringCellValue.trim());
                    break;
                case 3:
                    if (!stringCellValue.trim().equalsIgnoreCase("") && stringCellValue.trim() != null) {
                        String tel = Functions.formatString(stringCellValue.trim(), "(##) ####-####");
                        professor.setTelefone(tel);
                    }
                    break;
                case 4:
                    if (stringCellValue.equalsIgnoreCase("sim")) {
                        professor.setAtivo(true);
                    } else if (stringCellValue.equalsIgnoreCase("no")) {
                        professor.setAtivo(false);
                    }
                    break;
                case 5:
                    PerfilDAO peDAO = new PerfilDAO();
                    try {
                        perfil = peDAO.getPerfilByNome(stringCellValue.trim());
                    } catch (Exception ex) {
                        FacesContext.getCurrentInstance().addMessage("growlImportacaoProfessor",
                                new FacesMessage(FacesMessage.SEVERITY_WARN, "Perfil no encontrado!", ""));
                    }
                    peDAO.closeSession();

                    if (null != perfil.getNomeperfil()) {
                        professor.setPerfilidperfil(perfil);
                        try {
                            Professor professorBySiape = pDAO.getProfessorBySiape(professor.getSiape());
                            if (professorBySiape == null) {
                                //insere porque no existe na base
                                boolean inserido = pDAO.insert(professor);
                                qtdImportado++;
                            } else {
                                String novoErro = "Professor " + professor.getNome() + " j existe.";
                                erros = erros + "\n" + novoErro;
                            }
                        } catch (Exception ex) {
                            FacesContext.getCurrentInstance().addMessage("growlImportacaoProfessor",
                                    new FacesMessage(FacesMessage.SEVERITY_WARN,
                                            "Erro ao importar professor " + professor.getNome(), ""));
                        }
                    }
                    break;
                }
            }
        }

        pDAO.closeSession();
        this.setImportacaoErrosProfessor(erros);

        if (qtdImportado > 0) {
            FacesContext.getCurrentInstance().addMessage("growlImportacaoProfessor", new FacesMessage(
                    FacesMessage.SEVERITY_INFO,
                    "Importao Realizada!\r\n Importado " + String.valueOf(qtdImportado) + " de " + totalDeLinhas,
                    ""));
        } else {
            FacesContext.getCurrentInstance().addMessage("growlImportacaoProfessor",
                    new FacesMessage(FacesMessage.SEVERITY_WARN, "Importao no realizada!", ""));
        }

    }

    public String getImportacaoErrosAluno() {
        return importacaoErrosAluno;
    }

    public void setImportacaoErrosAluno(String importacaoErrosAluno) {
        this.importacaoErrosAluno = importacaoErrosAluno;
    }

    public String getImportacaoErrosProfessor() {
        return importacaoErrosProfessor;
    }

    public void setImportacaoErrosProfessor(String importacaoErrosProfessor) {
        this.importacaoErrosProfessor = importacaoErrosProfessor;
    }

    public String getImportacaoErrosTrabalho() {
        return importacaoErrosTrabalho;
    }

    public void setImportacaoErrosTrabalho(String importacaoErrosTrabalho) {
        this.importacaoErrosTrabalho = importacaoErrosTrabalho;
    }

    /**
     * funo para importar o arquivo de Trabalho
     *
     */
    @SuppressWarnings("unchecked")
    private void importarTrabalho(List dataHolder) {

        String erros = "";
        //camea na linha 1 porque a linha 0  cabealho
        int qtdImportado = 0;
        String totalDeLinhas = String.valueOf(dataHolder.size() - 1);

        for (int i = 1; i < dataHolder.size(); i++) {
            List linha = (List) dataHolder.get(i);
            Aluno aluno = new Aluno();
            Curso curso = new Curso();
            Trabalho trab = new Trabalho();
            Defesa defesa = new Defesa();
            Assunto assunto = new Assunto();
            Perfil perfil = new Perfil();
            Professor orientador = new Professor();
            Empresa empresa = new Empresa();
            Banca banca = new Banca();
            Bancastatus bancaStatus = new Bancastatus();
            Convidado conv1 = new Convidado();
            Convidado conv2 = new Convidado();
            Trabalhostatus trabStatus = new Trabalhostatus();
            Modalidade modalidade = new Modalidade();
            Estagio estagio = new Estagio();

            //----------------------------------------------------
            //tipo de estgio
            HSSFCell myCellEstagioTipo = (HSSFCell) linha.get(18);
            myCellEstagioTipo.setCellType(Cell.CELL_TYPE_STRING);
            String stringCellEstagioTipo = myCellEstagioTipo.toString().trim();
            //----------------------------------------------------

            //----------------------------------------------------
            //data defesa
            HSSFCell myCellDataDefesa = (HSSFCell) linha.get(12);
            myCellDataDefesa.setCellType(Cell.CELL_TYPE_STRING);
            String stringCellDataDefesa = myCellDataDefesa.toString().trim();
            //----------------------------------------------------

            for (int col = 0; col < linha.size(); col++) {
                HSSFCell myCell = (HSSFCell) linha.get(col);
                myCell.setCellType(Cell.CELL_TYPE_STRING);
                String stringCellValue = myCell.toString().trim();

                switch (col) {
                case 0:
                    /*matricula aluno*/
                    aluno.setMatricula(stringCellValue);
                    break;
                case 1:
                    /*nome aluno*/
                    aluno.setNome(stringCellValue);
                    break;
                case 2:
                    /*saber o curso*/
                    if (stringCellValue.equalsIgnoreCase("BCC")
                            || stringCellValue.equalsIgnoreCase("Cincia da Computao - Curriculo Antigo")) {
                        stringCellValue = "Cincia da Computao - Curriculo Antigo";
                    } else if (stringCellValue.equalsIgnoreCase("BCC")
                            || stringCellValue.equalsIgnoreCase("Cincia da Computao - Curriculo Novo")) {
                        stringCellValue = "Cincia da Computao - Curriculo Novo";
                    } else if (stringCellValue.equalsIgnoreCase("BCC")
                            || stringCellValue.equalsIgnoreCase("Cincia da Computao - Curriculo Antigo")) {
                        stringCellValue = "Cincia da Computao";
                    } else if (stringCellValue.equalsIgnoreCase("BSI")
                            || stringCellValue.equalsIgnoreCase("Sistemas de Informao")) {
                        stringCellValue = "Sistemas de Informao";
                    }

                    CursoDAO cDAO = new CursoDAO();
                    try {
                        curso = cDAO.getCursoByNomeCurso(stringCellValue);
                    } catch (Exception ex) {
                        String novoErro = "Linha: " + i + " . Curso no encontrado.";
                        erros = erros + "\n" + novoErro;
                    }
                    cDAO.closeSession();
                    AlunoDAO aDAO = new AlunoDAO();
                    if (null != curso.getIdcurso()) {
                        aluno.setCursoidcurso(curso);

                        try {
                            Aluno alunoByMatricula = aDAO.getAlunoByMatricula(aluno.getMatricula());
                            if (alunoByMatricula == null) {
                                //insere porque no existe na base
                                boolean inserido = aDAO.insert(aluno);
                            }
                        } catch (Exception ex) {
                            String novoErro = "Linha: " + i + " . Erro ao encontrar aluno.";
                            erros = erros + "\n" + novoErro;

                        }
                    }
                    trab.setAlunomatricula(aluno);
                    aDAO.closeSession();
                    break;
                case 3:
                    /*titulo trabalho*/
                    trab.setTitulo(stringCellValue);
                    break;
                case 4:
                    /*data matricula do trabalho*/
                    trab.setDatamatricula(CalendarFormat.getDataISO(stringCellValue));
                    /*horas por dia*/
                    trab.setQtdhorasdia(CalendarFormat.parseTime("06:00:00"));
                    break;
                case 5:
                    if (!stringCellEstagioTipo.equalsIgnoreCase("estgio no obrigatrio")
                            && !stringCellEstagioTipo.equalsIgnoreCase("ESTAGIO_NAO_OBRIGATORIO")
                            && !stringCellEstagioTipo.equalsIgnoreCase("ESTAGIO NAO OBRIGATORIO")
                            && !stringCellDataDefesa.equalsIgnoreCase("\\0")
                            && !stringCellDataDefesa.equalsIgnoreCase("")) {
                        /*data minima do trabalho*/
                        defesa.setStatusdefesa(true);
                        defesa.setMatriculadatadefesa(trab.getDatamatricula());
                        defesa.setMindatadefesa(CalendarFormat.getDataISO(stringCellValue));
                    }
                    break;
                case 6:
                    if (!stringCellEstagioTipo.equalsIgnoreCase("estgio no obrigatrio")
                            && !stringCellEstagioTipo.equalsIgnoreCase("ESTAGIO_NAO_OBRIGATORIO")
                            && !stringCellEstagioTipo.equalsIgnoreCase("ESTAGIO NAO OBRIGATORIO")
                            && !stringCellDataDefesa.equalsIgnoreCase("\\0")
                            && !stringCellDataDefesa.equalsIgnoreCase("")) {
                        /*data maxima do trabalho*/
                        defesa.setMaxdatadefesa(CalendarFormat.getDataISO(stringCellValue));
                    } else {
                        /*insere a data maxima como data de finalizao
                         para estagios no obrigatorios*/
                        trab.setDatafinalizacao(CalendarFormat.getDataISO(stringCellValue));
                    }
                    break;
                case 7:
                    /*assunto/area do trabalho*/
                    assunto.setNome(stringCellValue);
                    AssuntoDAO asDAO = new AssuntoDAO();
                    Assunto assuntoByNome = null;
                    try {
                        assuntoByNome = asDAO.getAssuntoByNome(stringCellValue);
                    } catch (Exception ex) {
                        String novoErro = "Linha: " + i + " . Erro ao encontrar assunto.";
                        erros = erros + "\n" + novoErro;
                    }
                    if (assuntoByNome == null) {
                        try {
                            //insere porque no existe na base
                            boolean inserido = asDAO.insert(assunto);
                        } catch (Exception ex) {
                            String novoErro = "Linha: " + i + " . Erro salvar assunto.";
                            erros = erros + "\n" + novoErro;
                        }
                    } {
                    try {
                        assunto = asDAO.getAssuntoByNome(stringCellValue);
                    } catch (Exception ex) {
                        String novoErro = "Linha: " + i + " . Erro ao encontrar assunto.";
                        erros = erros + "\n" + novoErro;
                    }
                }
                    trab.setAssuntoidassunto(assunto);
                    asDAO.closeSession();
                    break;
                case 8:
                    if (!stringCellValue.equalsIgnoreCase("")) {
                        orientador.setSiape(Integer.parseInt(stringCellValue));
                    }
                    break;
                case 9:
                    PerfilDAO peDAO = new PerfilDAO();
                    ProfessorDAO pDAO = new ProfessorDAO();
                    Professor professorBySiape = null;

                    orientador.setNome(stringCellValue);

                    /*1 tentativa de achar o professor*/
                    if (orientador.getNome() != null) {
                        try {
                            professorBySiape = pDAO.getProfessorByNome(orientador.getNome());
                        } catch (Exception ex) {
                            String novoErro = "Linha: " + i + " . Erro ao encontrar professor.";
                            erros = erros + "\n" + novoErro;
                        }
                    }

                    /*2 tentativa de achar o professor*/
                    if (null == professorBySiape && orientador.getSiape() != null) {
                        try {
                            professorBySiape = pDAO.getProfessorBySiape(orientador.getSiape());
                        } catch (Exception ex) {
                            String novoErro = "Linha: " + i + " . Erro ao encontrar professor.";
                            erros = erros + "\n" + novoErro;
                        }
                    }

                    if (null == professorBySiape && !orientador.getNome().equalsIgnoreCase("")
                            && !orientador.getNome().equalsIgnoreCase("\\0")) {
                        try {
                            perfil = peDAO.getPerfilByNome("Professor");
                        } catch (Exception ex) {
                            String novoErro = "Linha: " + i + " . Erro ao encontrar perfil.";
                            erros = erros + "\n" + novoErro;
                        }

                        orientador.setPerfilidperfil(perfil);

                        /*dar o maior siape ao novo professor*/
                        int siape = 0;
                        try {
                            siape = pDAO.getMaiorSiape();
                            siape++;
                        } catch (Exception ex) {
                            String novoErro = "Linha: " + i + " . Erro ao retornar siape.";
                            erros = erros + "\n" + novoErro;
                        }
                        orientador.setSiape(siape);
                        orientador.setAtivo(true);
                        try {
                            boolean inserido = pDAO.insert(orientador);
                        } catch (Exception ex) {
                            String novoErro = "Linha: " + i + " . Erro ao inserir orientador.";
                            erros = erros + "\n" + novoErro;
                        }
                    } else {
                        orientador = professorBySiape;
                    }

                    trab.setProfessorsiape(orientador);
                    peDAO.closeSession();
                    pDAO.closeSession();
                    break;
                case 10:
                    EmpresaDAO eDAO = new EmpresaDAO();
                    empresa.setNome(stringCellValue);
                    Empresa empresaByNome = null;
                    try {
                        empresaByNome = eDAO.getEmpresaByNome(empresa.getNome());
                    } catch (Exception ex) {
                        Logger.getLogger(importarController.class.getName()).log(Level.SEVERE, null, ex);
                    }

                    if (empresaByNome == null) {
                        try {
                            eDAO.insert(empresa);
                        } catch (Exception ex) {
                            String novoErro = "Linha: " + i + " . Erro ao inserir empresa.";
                            erros = erros + "\n" + novoErro;
                        }
                        try {
                            empresa = eDAO.getEmpresaByNome(empresa.getNome());
                        } catch (Exception ex) {
                            String novoErro = "Linha: " + i + " . Erro ao encontrar empresa.";
                            erros = erros + "\n" + novoErro;
                        }
                    } else {
                        empresa = empresaByNome;
                    }

                    trab.setEmpresaidempresa(empresa);
                    eDAO.closeSession();
                    break;
                case 11:
                    if (!stringCellEstagioTipo.equalsIgnoreCase("estgio no obrigatrio")
                            && !stringCellEstagioTipo.equalsIgnoreCase("ESTAGIO_NAO_OBRIGATORIO")
                            && !stringCellEstagioTipo.equalsIgnoreCase("ESTAGIO NAO OBRIGATORIO")
                            && !stringCellDataDefesa.equalsIgnoreCase("\\0")
                            && !stringCellDataDefesa.equalsIgnoreCase("")) {
                        banca.setLocalbanca(stringCellValue);
                    }
                    break;
                case 12:
                    if (!stringCellEstagioTipo.equalsIgnoreCase("estgio no obrigatrio")
                            && !stringCellEstagioTipo.equalsIgnoreCase("ESTAGIO_NAO_OBRIGATORIO")
                            && !stringCellEstagioTipo.equalsIgnoreCase("ESTAGIO NAO OBRIGATORIO")
                            && !stringCellDataDefesa.equalsIgnoreCase("\\0")
                            && !stringCellDataDefesa.equalsIgnoreCase("")) {
                        banca.setDatabanca(CalendarFormat.getDataISO(stringCellValue));
                        banca.setDatafinalizacao(CalendarFormat.getDataISO(stringCellValue));
                        trab.setDatafinalizacao(CalendarFormat.getDataISO(stringCellValue));
                    }
                    break;
                case 13:
                    if (!stringCellEstagioTipo.equalsIgnoreCase("estgio no obrigatrio")
                            && !stringCellEstagioTipo.equalsIgnoreCase("ESTAGIO_NAO_OBRIGATORIO")
                            && !stringCellEstagioTipo.equalsIgnoreCase("ESTAGIO NAO OBRIGATORIO")
                            && !stringCellDataDefesa.equalsIgnoreCase("\\0")
                            && !stringCellDataDefesa.equalsIgnoreCase("")) {
                        banca.setHorario(CalendarFormat.parseTime(stringCellValue));
                    }
                    break;
                case 14:
                    /*status da banca */
                    if (!stringCellEstagioTipo.equalsIgnoreCase("estgio no obrigatrio")
                            && !stringCellEstagioTipo.equalsIgnoreCase("ESTAGIO_NAO_OBRIGATORIO")
                            && !stringCellEstagioTipo.equalsIgnoreCase("ESTAGIO NAO OBRIGATORIO")
                            && !stringCellDataDefesa.equalsIgnoreCase("\\0")
                            && !stringCellDataDefesa.equalsIgnoreCase("")) {

                        BancaStatusDAO bsDAO = new BancaStatusDAO();
                        if (stringCellValue.equalsIgnoreCase("Finalizado")
                                || stringCellValue.equalsIgnoreCase("Reprovado")) {
                            try {
                                bancaStatus = bsDAO.getStatusByTipo("Finalizada");
                            } catch (Exception ex) {
                                String novoErro = "Linha: " + i + " . Erro ao encontrar o status da banca";
                                erros = erros + "\n" + novoErro;
                            }
                        } else if (stringCellValue.equalsIgnoreCase("A") || stringCellValue.equalsIgnoreCase("")) {
                            try {
                                bancaStatus = bsDAO.getStatusByTipo("Em andamento");
                            } catch (Exception ex) {
                                String novoErro = "Linha: " + i + " . Erro ao encontrar o status da banca";
                                erros = erros + "\n" + novoErro;
                            }
                        }
                        banca.setStatusidstatus(bancaStatus);
                        bsDAO.closeSession();
                    }
                    break;
                case 15:
                    if (!stringCellEstagioTipo.equalsIgnoreCase("estgio no obrigatrio")
                            && !stringCellEstagioTipo.equalsIgnoreCase("ESTAGIO_NAO_OBRIGATORIO")
                            && !stringCellEstagioTipo.equalsIgnoreCase("ESTAGIO NAO OBRIGATORIO")
                            && !stringCellDataDefesa.equalsIgnoreCase("\\0")
                            && !stringCellDataDefesa.equalsIgnoreCase("")) {
                        /*primeiro convidado */
                        PerfilDAO pe1DAO = new PerfilDAO();
                        ProfessorDAO p1DAO = new ProfessorDAO();

                        Professor professorBySiape1 = null;
                        Professor pConvidado1 = new Professor();
                        String nomeConv1 = stringCellValue;

                        /*procura o professor*/
                        try {
                            professorBySiape1 = p1DAO.getProfessorByNome(nomeConv1);
                        } catch (Exception ex) {
                            String novoErro = "Linha: " + i + " . Erro ao encontrar professor convidado 1.";
                            erros = erros + "\n" + novoErro;
                        }

                        /*se no encontrar insere */
                        if (null == professorBySiape1 && !nomeConv1.equalsIgnoreCase("")
                                && !nomeConv1.equalsIgnoreCase("\\0")) {
                            try {
                                perfil = pe1DAO.getPerfilByNome("Professor");
                            } catch (Exception ex) {
                                String novoErro = "Linha: " + i + " . Erro ao encontrar perfil.";
                                erros = erros + "\n" + novoErro;
                            }

                            pConvidado1.setPerfilidperfil(perfil);

                            /*dar o maior siape ao novo professor*/
                            int siape = 0;
                            try {
                                siape = p1DAO.getMaiorSiape();
                                siape++;
                            } catch (Exception ex) {
                                String novoErro = "Linha: " + i + " . Erro ao retornar siape.";
                                erros = erros + "\n" + novoErro;
                            }
                            pConvidado1.setSiape(siape);
                            pConvidado1.setNome(nomeConv1);
                            pConvidado1.setAtivo(true);
                            try {
                                boolean inserido = p1DAO.insert(pConvidado1);
                            } catch (Exception ex) {
                                String novoErro = "Linha: " + i + " . Erro ao inserir orientador.";
                                erros = erros + "\n" + novoErro;
                            }
                        } else {
                            pConvidado1 = professorBySiape1;
                        }

                        conv1.setProfessorsiape(pConvidado1);
                        conv1.setConfirmado(true);
                        conv1.setEnviadoemail(true);
                        conv1.setDataconfirmacao(defesa.getMatriculadatadefesa());
                        conv1.setDataconvite(defesa.getMatriculadatadefesa());

                        pe1DAO.closeSession();
                        p1DAO.closeSession();
                    }
                    break;
                case 16:
                    if (!stringCellEstagioTipo.equalsIgnoreCase("estgio no obrigatrio")
                            && !stringCellEstagioTipo.equalsIgnoreCase("ESTAGIO_NAO_OBRIGATORIO")
                            && !stringCellEstagioTipo.equalsIgnoreCase("ESTAGIO NAO OBRIGATORIO")
                            && !stringCellDataDefesa.equalsIgnoreCase("\\0")
                            && !stringCellDataDefesa.equalsIgnoreCase("")) {
                        /*segundo convidado */
                        PerfilDAO pe2DAO = new PerfilDAO();
                        ProfessorDAO p2DAO = new ProfessorDAO();
                        Professor professorBySiape2 = null;
                        Professor pConvidado2 = new Professor();
                        String nomeConv2 = stringCellValue;

                        /*procura o professor*/
                        try {
                            professorBySiape2 = p2DAO.getProfessorByNome(nomeConv2);
                        } catch (Exception ex) {
                            String novoErro = "Linha: " + i + " . Erro ao encontrar professor convidado 1.";
                            erros = erros + "\n" + novoErro;
                        }

                        /*se no encontrar insere */
                        if (null == professorBySiape2 && !nomeConv2.equalsIgnoreCase("")
                                && !nomeConv2.equalsIgnoreCase("\\0")) {
                            try {
                                perfil = pe2DAO.getPerfilByNome("Professor");
                            } catch (Exception ex) {
                                String novoErro = "Linha: " + i + " . Erro ao encontrar perfil.";
                                erros = erros + "\n" + novoErro;
                            }

                            pConvidado2.setPerfilidperfil(perfil);

                            /*dar o maior siape ao novo professor*/
                            int siape = 0;
                            try {
                                siape = p2DAO.getMaiorSiape();
                                siape++;
                            } catch (Exception ex) {
                                String novoErro = "Linha: " + i + " . Erro ao retornar siape.";
                                erros = erros + "\n" + novoErro;
                            }
                            pConvidado2.setSiape(siape);
                            pConvidado2.setNome(nomeConv2);
                            pConvidado2.setAtivo(true);
                            try {
                                boolean inserido = p2DAO.insert(pConvidado2);
                            } catch (Exception ex) {
                                String novoErro = "Linha: " + i + " . Erro ao inserir orientador.";
                                erros = erros + "\n" + novoErro;
                            }
                        } else {
                            pConvidado2 = professorBySiape2;
                        }

                        conv2.setProfessorsiape(pConvidado2);
                        conv2.setConfirmado(true);
                        conv2.setEnviadoemail(true);
                        conv2.setDataconfirmacao(defesa.getMatriculadatadefesa());
                        conv2.setDataconvite(defesa.getMatriculadatadefesa());

                        pe2DAO.closeSession();
                        p2DAO.closeSession();

                    }
                    break;
                case 17:
                    /*status do trabalho*/
                    TrabalhoStatusDAO tsDAO = new TrabalhoStatusDAO();

                    if (stringCellValue.equalsIgnoreCase("") || stringCellValue.equalsIgnoreCase("A")) {
                        try {
                            trabStatus = tsDAO.getStatusByTipo("Em andamento");
                        } catch (Exception ex) {
                            String novoErro = "Linha: " + i + " . Erro ao encontrar o status do trabalho.";
                            erros = erros + "\n" + novoErro;
                        }
                    } else if (stringCellValue.equalsIgnoreCase("REPROVADO")) {
                        try {
                            trabStatus = tsDAO.getStatusByTipo("Reprovado");
                        } catch (Exception ex) {
                            String novoErro = "Linha: " + i + " . Erro ao encontrar o status do trabalho.";
                            erros = erros + "\n" + novoErro;
                        }
                    } else if (stringCellValue.equalsIgnoreCase("Finalizado")) {
                        try {
                            trabStatus = tsDAO.getStatusByTipo("Finalizado");
                        } catch (Exception ex) {
                            String novoErro = "Linha: " + i + " . Erro ao encontrar o status do trabalho.";
                            erros = erros + "\n" + novoErro;
                        }
                    }
                    trab.setStatusidstatus(trabStatus);
                    tsDAO.closeSession();
                    break;
                case 18:
                    /*tipo de estgio*/
                    EstagioDAO estDAO = new EstagioDAO();
                    ModalidadeDAO mDAO = new ModalidadeDAO();

                    if (stringCellValue.equalsIgnoreCase("ESTAGIO_OBRIGATORIO")
                            || stringCellValue.equalsIgnoreCase("ESTAGIO OBRIGATORIO")) {
                        try {
                            modalidade = mDAO.getModalidadeByNome("Estgio");
                        } catch (Exception ex) {
                            String novoErro = "Linha: " + i + " . Erro ao encontrar a modalidade.";
                            erros = erros + "\n" + novoErro;
                        }

                        try {
                            estagio = estDAO.getEstagioByTipo("Estgio Obrigatrio");
                        } catch (Exception ex) {
                            String novoErro = "Linha: " + i + " . Erro ao encontrar a modalidade.";
                            erros = erros + "\n" + novoErro;
                        }
                    } else if (stringCellValue.equalsIgnoreCase("estgio no obrigatrio")
                            || stringCellValue.equalsIgnoreCase("ESTAGIO_NAO_OBRIGATORIO")
                            || stringCellValue.equalsIgnoreCase("ESTAGIO NAO OBRIGATORIO")) {
                        try {
                            modalidade = mDAO.getModalidadeByNome("Estgio");
                        } catch (Exception ex) {
                            String novoErro = "Linha: " + i + " . Erro ao encontrar o estgio.";
                            erros = erros + "\n" + novoErro;
                        }

                        try {
                            estagio = estDAO.getEstagioByTipo("Estgio No Obrigatrio");
                        } catch (Exception ex) {
                            String novoErro = "Linha: " + i + " . Erro ao encontrar o estgio.";
                            erros = erros + "\n" + novoErro;
                        }
                    }
                    trab.setEstagioidestagio(estagio);
                    trab.setModalidadeidmodalidade(modalidade);

                    estDAO.closeSession();
                    mDAO.closeSession();
                    break;
                }
            }

            //---------------------------------------
            TrabalhoDAO tDAO = new TrabalhoDAO();
            List<Trabalho> trabTemp = new ArrayList<>();
            //procurar trabalho se encontrar no importa novamente
            try {
                if (banca.getLocalbanca() != null && !banca.getLocalbanca().equals("")
                        && !banca.getLocalbanca().equals("\\0")) {
                    trabTemp = tDAO.getTrabalhosByConvidado(trab.getAlunomatricula(), trab.getEmpresaidempresa(),
                            trab.getTitulo(), trab.getEstagioidestagio().getTipoestagio(),
                            trab.getProfessorsiape().getSiape(), trab.getProfessorsiape().getNome(),
                            trab.getDatamatricula(), banca.getLocalbanca());
                } else {
                    trabTemp = tDAO.getTrabalhos(trab.getAlunomatricula(), trab.getEmpresaidempresa(),
                            trab.getTitulo(), trab.getEstagioidestagio().getTipoestagio(),
                            trab.getProfessorsiape().getSiape(), trab.getProfessorsiape().getNome(),
                            trab.getDatamatricula());
                }
            } catch (Exception ex) {
                System.out.println(ex.getMessage());
                String novoErro = "Linha: " + i + " . Erro ao encontrar trabalho.";
                erros = erros + "\n" + novoErro;
            }
            if (trabTemp.isEmpty()) {

                //salvar trabalho
                try {
                    boolean inserido = tDAO.insert(trab);
                    qtdImportado++;
                } catch (Exception ex) {
                    String novoErro = "Linha: " + i + " . Erro ao inserir trabalho.";
                    erros = erros + "\n" + novoErro;
                }
                tDAO.closeSession();
                //---------------------------------------

                if (!stringCellEstagioTipo.equalsIgnoreCase("estgio no obrigatrio")
                        && !stringCellEstagioTipo.equalsIgnoreCase("ESTAGIO_NAO_OBRIGATORIO")
                        && !stringCellEstagioTipo.equalsIgnoreCase("ESTAGIO NAO OBRIGATORIO")
                        && !stringCellDataDefesa.equalsIgnoreCase("\\0")
                        && !stringCellDataDefesa.equalsIgnoreCase("")) {
                    //---------------------------------------
                    //salvar banca
                    BancaDAO bDAO = new BancaDAO();
                    banca.setTrabalhoidtrabalho(trab);
                    try {
                        boolean inserido = bDAO.insert(banca);
                    } catch (Exception ex) {
                        String novoErro = "Linha: " + i + " . Erro ao inserir banca.";
                        erros = erros + "\n" + novoErro;
                    }
                    bDAO.closeSession();
                    //---------------------------------------
                    //salvar o convidado 1
                    ConvidadoDAO c1DAO = new ConvidadoDAO();
                    conv1.setBancaidbanca(banca);
                    try {
                        boolean inserido = c1DAO.insert(conv1);
                    } catch (Exception ex) {
                        String novoErro = "Linha: " + i + " . Erro ao inserir convidado 1.";
                        erros = erros + "\n" + novoErro;
                    }
                    c1DAO.closeSession();
                    //---------------------------------------
                    //salvar o convidado 2
                    ConvidadoDAO c2DAO = new ConvidadoDAO();
                    conv2.setBancaidbanca(banca);
                    try {
                        boolean inserido = c2DAO.insert(conv2);
                    } catch (Exception ex) {
                        String novoErro = "Linha: " + i + " . Erro ao inserir convidado 2.";
                        erros = erros + "\n" + novoErro;
                    }
                    c2DAO.closeSession();
                    //---------------------------------------
                    //salvar defesa
                    DefesaDAO dDAO = new DefesaDAO();
                    defesa.setTrabalhoidtrabalho(trab);
                    try {
                        boolean inserido = dDAO.insert(defesa);
                    } catch (Exception ex) {
                        String novoErro = "Linha: " + i + " . Erro ao inserir defesa.";
                        erros = erros + "\n" + novoErro;
                    }
                    dDAO.closeSession();
                    //---------------------------------------
                }
            } else {
                int line = i + 1;
                String novoErro = "Linha: " + line + " . Erro ao salvar. Trabalho j existe na base.";
                erros = erros + "\n" + novoErro;
            }
        }

        this.setImportacaoErrosTrabalho(erros);
        if (qtdImportado > 0) {
            FacesContext.getCurrentInstance().addMessage("growlImportacaoTrabalho", new FacesMessage(
                    FacesMessage.SEVERITY_INFO,
                    "Importao Realizada!\r\n Importado " + String.valueOf(qtdImportado) + " de " + totalDeLinhas,
                    ""));
        } else {
            FacesContext.getCurrentInstance().addMessage("growlImportacaoTrabalho",
                    new FacesMessage(FacesMessage.SEVERITY_WARN, "Importao no realizada!", ""));
        }
    }

}