Project

General

Profile

Download (3.34 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2009 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9

    
10
package eu.etaxonomy.cdm.persistence.dao.hibernate.permission;
11

    
12
import java.util.List;
13

    
14
import org.hibernate.Hibernate;
15
import org.hibernate.Query;
16
import org.hibernate.criterion.Criterion;
17
import org.springframework.stereotype.Repository;
18

    
19
import eu.etaxonomy.cdm.model.permission.Group;
20
import eu.etaxonomy.cdm.model.permission.User;
21
import eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmEntityDaoBase;
22
import eu.etaxonomy.cdm.persistence.dao.permission.IUserDao;
23
import eu.etaxonomy.cdm.persistence.query.MatchMode;
24
import eu.etaxonomy.cdm.persistence.query.OrderHint;
25

    
26
@Repository
27
public class UserDaoImpl extends CdmEntityDaoBase<User> implements IUserDao {
28

    
29
    public UserDaoImpl() {
30
        super(User.class);
31
    }
32

    
33
    @Override
34
    public User findUserByUsername(String username) {
35
        Query query = getSession().createQuery("select user from User user where user.username = :username");
36
        query.setParameter("username", username);
37

    
38
        User user = (User)query.uniqueResult(); // username is a @NaturalId
39
        return initializeUser(user);
40
    }
41

    
42
    @Override
43
    public boolean userNameExists(String username) {
44
        Query query = getSession().createQuery("select count(user) from User user where user.username = :username");
45
        query.setParameter("username", username);
46

    
47
        long count = (long)query.uniqueResult();
48
        return count > 0;
49
    }
50

    
51
    @Override
52
    public boolean emailAddressExists(String emailAddress) {
53
        Query query = getSession().createQuery("select count(user) from User user where user.emailAddress = :emailAddress");
54
        query.setParameter("emailAddress", emailAddress);
55

    
56
        long count = (long)query.uniqueResult();
57
        return count > 0;
58
    }
59

    
60
    @Override
61
    public User findByEmailAddress(String emailAddress) {
62
        Query query = getSession().createQuery("select user from User user where user.emailAddress = :emailAddress");
63
        query.setParameter("emailAddress", emailAddress);
64

    
65
        User user = (User)query.uniqueResult(); // emailAddress to be unique, see https://dev.e-taxonomy.eu/redmine/issues/7276
66
        return initializeUser(user);
67
    }
68

    
69
    @Override
70
    public long countByUsername(String queryString, MatchMode matchmode, List<Criterion> criterion) {
71
        return countByParam(type, "username",queryString,matchmode,criterion);
72
    }
73

    
74
    @Override
75
    public List<User> findByUsername(String queryString, MatchMode matchmode, List<Criterion> criterion, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
76
        return findByParam(type, "username", queryString, matchmode, criterion, pageSize, pageNumber, orderHints, propertyPaths);
77
    }
78

    
79
    public User initializeUser(User user) {
80
        if(user != null) {
81
            getSession().refresh(user); // make sure the user is always up to date
82
            Hibernate.initialize(user.getPerson());
83
            Hibernate.initialize(user.getGrantedAuthorities());
84
            for(Group group : user.getGroups()) {
85
                Hibernate.initialize(group.getGrantedAuthorities());
86
            }
87
        }
88
        return user;
89
    }
90

    
91
}
(4-4/4)