Subversion Repositories bacoAlunos

Rev

Rev 381 | Rev 395 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1 fvelez 1
package pt.estgp.estgweb.domain.dao.impl;
2
 
3
import jomm.dao.DaoException;
344 jmachado 4
import org.apache.log4j.Logger;
113 fvelez 5
import org.hibernate.Criteria;
344 jmachado 6
import org.hibernate.HibernateException;
113 fvelez 7
import org.hibernate.criterion.Criterion;
186 fvelez 8
import org.hibernate.criterion.Order;
344 jmachado 9
import static org.hibernate.criterion.Restrictions.*;
1 fvelez 10
import pt.estgp.estgweb.domain.User;
215 jmachado 11
import pt.estgp.estgweb.domain.dao.DaoUtils;
12
import pt.estgp.estgweb.services.common.SearchTypeEnum;
1 fvelez 13
 
344 jmachado 14
import java.io.Serializable;
15
import java.util.Date;
16
import java.util.List;
17
 
1 fvelez 18
/**
19
 * @author Jorge Machado
20
 * @date 28/Fev/2008
21
 * @time 2:51:06
22
 * @see pt.estgp.estgweb.domain.dao.impl
23
 */
215 jmachado 24
public class UserDaoImpl extends UserDao
1 fvelez 25
{
179 fvelez 26
 
27
    private static final 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger = 1.5.0/docs/api/java/util/logging/Logger.html">Logger.getLogger(UserDaoImpl.class);
28
 
1 fvelez 29
    public static UserDaoImpl getInstance()
30
    {
31
        if (myInstance == null)
32
            myInstance = new UserDaoImpl();
33
        return (UserDaoImpl) myInstance;
34
    }
35
 
36
    /**
37
     * Used by the base DAO classes but here for your modification Load object
38
     * matching the given key and return it.
39
     *
40
     * @param username to load
41
     * @return a user
42
     */
43
    public final User loadByUsername(1.5.0/docs/api/java/lang/String.html">String username)
44
    {
45
        try
46
        {
47
            5+0%2Fdocs%2Fapi+List">List list =
48
                    createCriteria()
344 jmachado 49
                            .add(eq("username", username))
1 fvelez 50
                            .setMaxResults(1)
51
                            .list();
52
 
344 jmachado 53
            if (list.size() == 0)
1 fvelez 54
                return null;
55
            return (User) list.get(0);
56
        }
57
        catch (HibernateException e)
58
        {
59
            throw new DaoException(e);
60
        }
61
    }
344 jmachado 62
 
1 fvelez 63
    /**
64
     * Used by the base DAO classes but here for your modification Load object
65
     * matching the given key and return it.
66
     *
67
     * @param email to load
68
     * @return a user
69
     */
70
    public final User loadByEmail(1.5.0/docs/api/java/lang/String.html">String email)
71
    {
72
        try
73
        {
74
            return (User) createCriteria()
344 jmachado 75
                    .add(eq("email", email))
1 fvelez 76
                    .uniqueResult();
77
        }
78
        catch (HibernateException e)
79
        {
80
            throw new DaoException(e);
81
        }
82
    }
83
 
113 fvelez 84
    /**
44 fvelez 85
     * Used by the base DAO classes but here for your modification Load object
86
     * matching the given key and return it.
87
     *
88
     * @param ID to load
89
     * @return a user
90
     */
113 fvelez 91
    public final User loadByID(1.5.0/docs/api/java/lang/String.html">String ID)
38 fvelez 92
    {
93
        try
94
        {
95
            return (User) createCriteria()
344 jmachado 96
                    .add(eq("id", ID))
38 fvelez 97
                    .uniqueResult();
98
        }
99
        catch (HibernateException e)
100
        {
101
            throw new DaoException(e);
102
        }
103
    }
104
 
1 fvelez 105
    /**
106
     * Used by the base DAO classes but here for your modification Load object
107
     * matching the given key and return it.
108
     *
109
     * @param username to load
110
     * @param password to load
111
     * @return a user
112
     */
113
    public final User loadByUsernameAndPassword(1.5.0/docs/api/java/lang/String.html">String username, 1.5.0/docs/api/java/lang/String.html">String password)
114
    {
115
        try
116
        {
117
            return (User) createCriteria()
344 jmachado 118
                    .add(eq("username", username))
1 fvelez 119
                    .add(eq("password", jomm.utils.BytesUtils.getDigestMD5Hex(password)))
120
                    .uniqueResult();
121
        }
122
        catch (HibernateException e)
123
        {
124
            throw new DaoException(e);
125
        }
126
    }
127
 
344 jmachado 128
    public List<User> loadRoleUsers(1.5.0/docs/api/java/lang/String.html">String role)
215 jmachado 129
    {
344 jmachado 130
        return createCriteria().add(like("roles", "%" + role + "%")).addOrder(Order.asc("name")).list();
215 jmachado 131
    }
132
 
387 jmachado 133
    public List<User> loadRoleAreaUsers(1.5.0/docs/api/java/lang/String.html">String role, 1.5.0/docs/api/java/lang/String.html">String area)
134
    {
135
        Criteria c = createCriteria().add(like("roles", "%" + role + "%")).addOrder(Order.asc("name"));
136
        if(area != null && area.trim().length() > 0)
137
           c.add(eq("mainArea",area));
138
        return c.list();
139
    }
140
 
344 jmachado 141
    public List<User> findUsers(1.5.0/docs/api/java/lang/String.html">String textToSearch)
113 fvelez 142
    {
344 jmachado 143
        return findUsers(textToSearch, null);
179 fvelez 144
    }
145
 
344 jmachado 146
    public List<User> findUsers(1.5.0/docs/api/java/lang/String.html">String textToSearch, 1.5.0/docs/api/java/lang/String.html">String typeToSearch)
179 fvelez 147
    {
344 jmachado 148
        Criteria criteria;
149
        if (typeToSearch != null && typeToSearch.trim().length() != 0)
179 fvelez 150
            try
151
            {
152
                criteria = createCriteria(1.5.0/docs/api/java/lang/Class.html">Class.forName(typeToSearch));
153
            }
154
            catch (1.5.0/docs/api/java/lang/ClassNotFoundException.html">ClassNotFoundException e)
155
            {
344 jmachado 156
                logger.error(e, e);
157
                return null;
179 fvelez 158
            }
159
        else
344 jmachado 160
            criteria = createCriteria();
373 jmachado 161
        Criterion textSearch = DaoUtils.createSearchQuery(textToSearch, SearchTypeEnum.AllWords, "name", "username");
162
        Criterion text2Search = DaoUtils.createSearchQuery(textToSearch, SearchTypeEnum.AllWords, "email");
344 jmachado 163
        Criterion fields = or(textSearch, text2Search);
164
        return criteria.add(fields)
165
                .addOrder(Order.desc("name"))
166
                .list();
113 fvelez 167
    }
168
 
169
 
45 fvelez 170
    public 1.5.0/docs/api/java/io/Serializable.html">Serializable save(User obj)
171
    {
344 jmachado 172
        try
173
        {
45 fvelez 174
            obj.setSaveDate(new 5+0%2Fdocs%2Fapi+Date">Date());
175
            return super.save(obj);
176
        }
344 jmachado 177
        catch (HibernateException e)
178
        {
45 fvelez 179
            throw new DaoException(e);
180
        }
181
 
182
    }
183
 
215 jmachado 184
    public int countUsers(1.5.0/docs/api/java/lang/String.html">String query, SearchTypeEnum searchType)
185
    {
344 jmachado 186
        Criterion c = DaoUtils.createSearchQuery(query, searchType, "name", "username");
215 jmachado 187
        return createCriteria()
188
                .add(c)
189
                .list().size();
190
    }
191
 
192
 
193
    public List<User> search(1.5.0/docs/api/java/lang/String.html">String query, SearchTypeEnum searchTypeEnum, int maxResults, int page)
194
    {
195
        Criterion c = DaoUtils.createSearchQuery(query, searchTypeEnum, "name", "username");
196
        Criteria criteria = createCriteria();
197
        criteria.add(c)
198
                .addOrder(Order.asc("name"))
199
                .setMaxResults(maxResults)
200
                .setFirstResult(page * maxResults);
201
        return criteria.list();
202
    }
381 jmachado 203
 
204
    public List<User> findByEmail(1.5.0/docs/api/java/lang/String.html">String email)
205
    {
206
        return createCriteria().add(or(or(or(eq("email",email),eq("outEmail",email)),eq("gmail",email)),eq("msn",email))).list();
207
    }
1 fvelez 208
}