@Override
  public void updateTecnicaEnsino(TecnicaEnsino tecnicaEnsino) throws DAOException {
    Session session = sessionFactory.getCurrentSession();
    try {
      session.update(tecnicaEnsino);

    } catch (HibernateException e) {

      Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, null, e);
      throw new DAOException(MessageHelper.getMessage("indicadores.update.error"));
    }
  }
  @Override
  public void update(ItemConviteInstrutorPerfil itemConvite) throws DAOException {
    Session session = sessionFactory.getCurrentSession();
    try {
      session.update(itemConvite);
    } catch (HibernateException e) {

      Logger.getLogger(HibernateItemConviteInstrutorPerfilDAO.class.getName())
          .log(Level.SEVERE, null, e);
      throw new DAOException(MessageHelper.getMessage("consultas.update.error"));
    }
  }
  @Override
  public AnexoApostila find(Long id) throws DAOException {
    Session session = sessionFactory.getCurrentSession();

    try {
      AnexoApostila anexo = (AnexoApostila) session.get(AnexoApostila.class, id);
      return anexo;

    } catch (HibernateException e) {
      Logger.getLogger(HibernateAreaDAO.class.getName()).log(Level.SEVERE, null, e);
      throw new DAOException(MessageHelper.getMessage("apostilas.find.unique.error"));
    }
  }
  @Override
  public void removeTecnicaEnsino(Long id) throws DAOException {
    Session session = sessionFactory.getCurrentSession();
    TecnicaEnsino nivel = (TecnicaEnsino) session.get(TecnicaEnsino.class, id);

    try {
      session.delete(nivel);

    } catch (HibernateException e) {

      Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, null, e);
      throw new DAOException(MessageHelper.getMessage("indicadores.remove.error"));
    }
  }
  @Override
  public void update(AnexoApostila anexo) throws DAOException {
    Session session = sessionFactory.getCurrentSession();

    try {

      session.update(anexo);

    } catch (HibernateException e) {

      Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, null, e);
      throw new DAOException(MessageHelper.getMessage("anexos.update.error"));
    }
  }
  @Override
  public void remove(Long id) throws DAOException {
    Session session = sessionFactory.getCurrentSession();
    AnexoApostila anexo = (AnexoApostila) session.get(AnexoApostila.class, id);

    try {

      session.delete(anexo);

    } catch (HibernateException e) {

      Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, null, e);
      throw new DAOException(MessageHelper.getMessage("anexos.remove.error"));
    }
  }
  @Override
  public Long create(AnexoApostila apostila) throws DAOException {
    Session session = sessionFactory.getCurrentSession();

    try {

      Long anexoID = (Long) session.save(apostila);

      return anexoID;
    } catch (HibernateException e) {

      Logger.getLogger(HibernateAreaDAO.class.getName()).log(Level.SEVERE, null, e);
      throw new DAOException(MessageHelper.getMessage("anexos.create.error"));
    }
  }
  @Override
  public ItemConviteInstrutorPerfil find(Long id) throws DAOException {
    Session session = sessionFactory.getCurrentSession();
    try {
      ItemConviteInstrutorPerfil itemConvite =
          (ItemConviteInstrutorPerfil) session.get(ItemConviteInstrutorPerfil.class, id);

      return itemConvite;
    } catch (HibernateException e) {

      Logger.getLogger(HibernateItemConviteInstrutorPerfilDAO.class.getName())
          .log(Level.SEVERE, null, e);
      throw new DAOException(MessageHelper.getMessage("consultas.find.unique.error"));
    }
  }
  @SuppressWarnings("unchecked")
  @Override
  public List<TecnicaEnsino> findAllTecnicasEnsino() throws DAOException {
    Session session = sessionFactory.getCurrentSession();
    List<TecnicaEnsino> tecnicas;
    try {
      Criteria criteria = session.createCriteria(TecnicaEnsino.class);

      tecnicas = criteria.list();
      return tecnicas;

    } catch (HibernateException e) {
      Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, null, e);
      throw new DAOException(MessageHelper.getMessage("indicadores.find.unique.error"));
    }
  }
  @Override
  public List<AnexoApostila> findAllAnexosApostilas(Long apostilaId) throws DAOException {
    Session session = sessionFactory.getCurrentSession();

    try {
      @SuppressWarnings("unchecked")
      List<AnexoApostila> anexos =
          session
              .createQuery("from AnexoApostila anexo where anexo.apostila.id = :apostilaId")
              .setLong("apostilaId", apostilaId)
              .list();

      return anexos;
    } catch (HibernateException e) {
      Logger.getLogger(HibernateAreaDAO.class.getName()).log(Level.SEVERE, null, e);
      throw new DAOException(MessageHelper.getMessage("anexos.find.list.error"));
    }
  }
  @Override
  public TecnicaEnsino findTecnicaEnsino(Long id) throws DAOException {
    Session session = sessionFactory.getCurrentSession();

    try {

      TecnicaEnsino nivel = (TecnicaEnsino) session.get(TecnicaEnsino.class, id);

      if (nivel != null) {
        return nivel;
      } else {
        return null;
      }

    } catch (HibernateException e) {
      Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, null, e);
      throw new DAOException(MessageHelper.getMessage("indicadores.find.unique.error"));
    }
  }
  @Override
  public List<ItemConviteInstrutorPerfil> findAllByTurmaId(Long turmaId) throws DAOException {
    Session session = sessionFactory.getCurrentSession();
    try {
      @SuppressWarnings("unchecked")
      List<ItemConviteInstrutorPerfil> itensConsultas =
          session
              .createQuery(
                  "from ItemConviteInstrutorPerfil i where i.conviteInstrutorPerfil.turma.id = :turmaId "
                      + "order by i.conviteInstrutorPerfil.prazo, i.pessoa.nome")
              .setLong("turmaId", turmaId)
              .list();
      return itensConsultas;
    } catch (HibernateException e) {

      Logger.getLogger(HibernateItemConviteInstrutorPerfilDAO.class.getName())
          .log(Level.SEVERE, null, e);
      throw new DAOException(MessageHelper.getMessage("consultas.find.list.error"));
    }
  }