1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
|
public Utilisateur findByLogin(String login) throws CcipHibernateException {
Logging.info("in UtilisateurDao.findByLogin");
Utilisateur result = null;
try {
Session session = getSession();
if (isLocal() && !session.getTransaction().isActive())
session.beginTransaction();
String hql = "select utilisateur from Utilisateur as utilisateur left join fetch utilisateur.service as service "
+ "left join fetch utilisateur.profil as profil left join fetch profil.restrictions as restriction where utilisateur.identifiant= :login";
Query query = session.createQuery(hql);
query.setString("login", login);
result = (Utilisateur) query.uniqueResult();
}
catch (HibernateException hex) {
hex.printStackTrace();
Logging.error("findByLogin impossible pour le login " + login, hex);
throw new CcipHibernateException("findByLogin impossible pour le login " + login);
}
return result;
}
public List<Utilisateur> findByService(Service service) throws CcipHibernateException {
List<Utilisateur> results = null;
try {
Session session = getSession();
if (isLocal() && !session.getTransaction().isActive())
session.beginTransaction();
results = session.createCriteria(Utilisateur.class).add(Restrictions.eq(Utilisateur.PROP_UTL_SERVICE, service))
.setFetchMode("service", FetchMode.JOIN).setFetchMode("profil", FetchMode.JOIN).setResultTransformer(
Criteria.DISTINCT_ROOT_ENTITY).list();
HashSet set = new HashSet<Utilisateur>(results);
results = new ArrayList<Utilisateur>(set);
}
catch (HibernateException hex) {
Logging.error("findByService impossible pour le service " + service, hex);
throw new CcipHibernateException("findByService impossible pour le service " + service);
}
Logging.info("findByService, taille de la liste des résultats : " + results.size());
return results;
}
public List<Utilisateur> findAllUtilisateurByService(Utilisateur user) throws Exception {
Logging.info("List<Utilisateur> findAllUtilisateurByService() []:");
try {
Session session = getSession();
Utilisateur user1 = (Utilisateur)session.load(Utilisateur.class, user.getId());
Service service = user1.getService();
List<Utilisateur> resultat = findByService(service);
return resultat;
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
//c'est celle la qui ne marche pas!
public Utilisateur findByLoginAndService(String login, Service service) throws CcipHibernateException {
List<Utilisateur> results = null;
try {
Session session = getSession();
if (isLocal() && !session.getTransaction().isActive())
session.beginTransaction();
if (login == null || login.length()==0){
List<Utilisateur> tmp = this.findByService(service);
return tmp.get(0);
}
else if (service == null || service.getId()==0){
Query query = session.createQuery("select distinct utilisateur from Utilisateur utilisateur " +
" left join fetch utilisateur.service as service " +
" left join fetch utilisateur.profil as profil " +
" where utilisateur.identifiant=:login " );
query.setString("login", login.toUpperCase());
List<Utilisateur> tmp = query.list();
return tmp.get(0);
}
else{
Query query = session.createQuery("select distinct utilisateur from Utilisateur utilisateur " +
" left join fetch utilisateur.service as service " +
" left join fetch utilisateur.profil as profil " +
" where utilisateur.identifiant=:login and utilisateur.service=:service " +
" order by utilisateur.identifiant");
query.setString("login", login);
query.setEntity("service", service);
return (Utilisateur)query.uniqueResult();
}
}
catch (HibernateException hex) {
Logging.error("findByLoginAndService impossible pour le login " + login + " et le service " + service, hex);
throw new CcipHibernateException("findByLoginAndService impossible pour le login " + login + " et le service "
+ service);
}
} |
Partager