/** {@inheritDoc} */
  @Override
  public IUtilisateur getUtilisateurByIdentifiant(String identifiant) {
    IUtilisateur utilisateur = null;
    String sqlQuery =
        String.format(
            "SELECT u.%s, u.%s, u.%s, u.%s, u.%s, u.%s, u.%s, e.%s  FROM %s u JOIN %s e ON u.%s = e.%s AND u.%s=?;",
            UtilisateurEnum.ID_UTILISATEUR,
            UtilisateurEnum.NUMERO_ETUDIANT,
            UtilisateurEnum.NOM_UTILISATEUR,
            UtilisateurEnum.PRENOM_UTILISATEUR,
            UtilisateurEnum.IDENTIFIANT_UTILISATEUR,
            UtilisateurEnum.MOT_DE_PASSE_UTILISATEUR,
            UtilisateurEnum.ID_ENTITE,
            EntiteEnum.NOM_ENTITE,
            BaseDonneeEnum.UTILISATEUR,
            BaseDonneeEnum.ENTITE,
            UtilisateurEnum.ID_ENTITE,
            EntiteEnum.ID_ENTITE,
            UtilisateurEnum.IDENTIFIANT_UTILISATEUR);
    PreparedStatement preparedStatement = this.getBd().openPrepared(sqlQuery);

    ResultSet resultSet = null;
    try {
      preparedStatement.setString(1, identifiant);
      resultSet = preparedStatement.executeQuery();
    } catch (SQLException e) {
      LOGGER.warn(e);
    }

    if (resultSet != null) {
      try {
        // Si resusltSet n'est pas nul, on accède à la première ligne.
        resultSet.next();
        // On créé une instance Utilisateur avec les informations à notre disposition.
        utilisateur =
            new Utilisateur(
                resultSet.getInt(UtilisateurEnum.ID_UTILISATEUR.toString()),
                resultSet.getInt(UtilisateurEnum.NUMERO_ETUDIANT.toString()),
                resultSet.getString(UtilisateurEnum.NOM_UTILISATEUR.toString()),
                resultSet.getString(UtilisateurEnum.PRENOM_UTILISATEUR.toString()),
                resultSet.getString(UtilisateurEnum.IDENTIFIANT_UTILISATEUR.toString()),
                resultSet.getString(UtilisateurEnum.MOT_DE_PASSE_UTILISATEUR.toString()));
        // Ainsi qu'une instance d'ENTITE que l'on ajoutera dans Utilisateur
        IEntite entite =
            new Entite(
                resultSet.getInt(UtilisateurEnum.ID_ENTITE.toString()),
                resultSet.getString(EntiteEnum.NOM_ENTITE.toString()));
        utilisateur.setEntiteUtilisateur(entite);
        resultSet.close();
      } catch (SQLException e) {
        LOGGER.warn(e);
      }
    }
    this.getBd().closePrepared(preparedStatement);

    return utilisateur;
  }
  /** {@inheritDoc} */
  @Override
  public List<IUtilisateur> getListUtilisateur() {
    List<IUtilisateur> utilisateurList = new ArrayList<>();
    String sqlQuery = String.format("SELECT * FROM %s;", BaseDonneeEnum.UTILISATEUR);
    PreparedStatement preparedStatement = this.getBd().openPrepared(sqlQuery);

    ResultSet resultSet = null;
    try {
      resultSet = preparedStatement.executeQuery();
    } catch (SQLException e) {
      LOGGER.warn(e);
    }

    if (resultSet != null) {
      try {
        // Tant qu'il reste des lignes dans le resultSet
        while (resultSet.next()) {
          // On créé une instance d'utilisateur avec les informations à notre disposition, et on
          // l'ajoute
          IUtilisateur utilisateur =
              new Utilisateur(
                  resultSet.getInt(UtilisateurEnum.ID_UTILISATEUR.toString()),
                  resultSet.getInt(UtilisateurEnum.NUMERO_ETUDIANT.toString()),
                  resultSet.getString(UtilisateurEnum.NOM_UTILISATEUR.toString()),
                  resultSet.getString(UtilisateurEnum.PRENOM_UTILISATEUR.toString()),
                  resultSet.getString(UtilisateurEnum.IDENTIFIANT_UTILISATEUR.toString()),
                  "");
          utilisateur.setEntiteUtilisateur(
              new Entite(resultSet.getInt(UtilisateurEnum.ID_ENTITE.toString())));
          utilisateurList.add(utilisateur);
        }
        resultSet.close();
      } catch (SQLException e) {
        LOGGER.warn(e);
      }
    }
    this.getBd().closePrepared(preparedStatement);

    return utilisateurList;
  }