@Override
  public List<UtenteDTO> findAllAttivi() {

    List<Utente> listaUtentiAttivi = new ArrayList<Utente>();

    Map<String, SearchDTO> andMap = new HashMap<String, SearchDTO>();
    SearchDTO so = new SearchDTO();
    so.setOperatore(it.linksmt.corsoedoc.intranet.enumeration.Operator.EQUAL);
    so.setValue(true);
    andMap.put("attivo", so);

    ISpecifications<DatiLogin> u = new ISpecifications<DatiLogin>();
    Specification<DatiLogin> spec = u.findByCriteria(andMap, null);

    /*
     * Ottengo una lista delle tuple di dati login in cui l'utente รจ attivo
     */
    List<DatiLogin> datiLogin = datiLoginRepository.findAll(spec);

    List<Utente> utentiAttivi = new ArrayList<Utente>();

    for (DatiLogin d : datiLogin) {
      utentiAttivi.add(utenteRepository.findOne(d.getTbUtente().getId()));
    }

    return null;
  }
  @Override
  public void removeSkill(SkillDTO skill, UtenteDTO utente) {
    Map<String, SearchDTO> andMap = new HashMap<String, SearchDTO>();
    SearchDTO so = new SearchDTO();
    so.setOperatore(it.linksmt.corsoedoc.intranet.enumeration.Operator.EQUAL);
    long idSkill = skill.getId();
    long idUtente = utente.getId();

    so.setValue(idSkill);
    so.setValue(idUtente);

    andMap.put("tbSkill", so);
    andMap.put("tbUtente", so);
    ISpecifications<UtenteHasSkill> u = new ISpecifications<UtenteHasSkill>();
    Specification<UtenteHasSkill> spec = u.findByCriteria(andMap, null);
    UtenteHasSkill utenteHasSkill = utenteSkillRepository.findOne(spec);
    utenteSkillRepository.delete(utenteHasSkill.getId());
    LOG.warn("Skill rimossa dall'utente");
  }
  @Override
  public List<UtenteDTO> getByCompetenze(String competenza, Integer livello) {

    // cerco l'id corrispondente all'id della competenza
    Map<String, SearchDTO> andMap = new HashMap<String, SearchDTO>();
    SearchDTO so = new SearchDTO();
    so.setOperatore(it.linksmt.corsoedoc.intranet.enumeration.Operator.EQUAL);
    so.setValue(competenza);
    andMap.put("descrizione", so);

    ISpecifications<Skill> u = new ISpecifications<Skill>();
    Specification<Skill> spec = u.findByCriteria(andMap, null);
    Skill skill = skillRepJpa.findOne(spec);

    long idSkill = skill.getId();

    // cerco gli utenti idonei una cerca competenza e un certo livello

    Map<String, SearchDTO> andMap2 = new HashMap<String, SearchDTO>();
    SearchDTO so2 = new SearchDTO();
    so2.setOperatore(it.linksmt.corsoedoc.intranet.enumeration.Operator.EQUAL);
    so2.setValue(idSkill);
    andMap.put("tb_skill_id", so2);
    so2.setValue(livello);
    andMap.put("livello", so2);
    ISpecifications<UtenteHasSkill> uS = new ISpecifications<UtenteHasSkill>();
    Specification<UtenteHasSkill> spec2 = uS.findByCriteria(andMap2, null);
    List<UtenteHasSkill> listaUtentiHasSkill = utenteSkillRepository.findAll(spec2);

    // riempio una lista con tutti gli utenti DTO idonei

    List<Utente> utentiIdonei = new ArrayList<Utente>();

    for (UtenteHasSkill utenteHasSkill : listaUtentiHasSkill) {
      utentiIdonei.add(utenteRepository.findOne(utenteHasSkill.getId()));
    }

    return UtenteConverter.convertListToDTO(utentiIdonei);
  }