Subversion Repositories bacoAlunos

Rev

Rev 1310 | Rev 1317 | 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;
395 jmachado 4
import jomm.utils.DesUtils;
344 jmachado 5
import org.apache.log4j.Logger;
113 fvelez 6
import org.hibernate.Criteria;
344 jmachado 7
import org.hibernate.HibernateException;
113 fvelez 8
import org.hibernate.criterion.Criterion;
186 fvelez 9
import org.hibernate.criterion.Order;
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;
1136 jmachado 15
import java.util.ArrayList;
344 jmachado 16
import java.util.Date;
1200 jmachado 17
import java.util.Iterator;
344 jmachado 18
import java.util.List;
19
 
684 jmachado 20
import static org.hibernate.criterion.Restrictions.*;
21
 
1 fvelez 22
/**
23
 * @author Jorge Machado
24
 * @date 28/Fev/2008
25
 * @time 2:51:06
26
 * @see pt.estgp.estgweb.domain.dao.impl
27
 */
215 jmachado 28
public class UserDaoImpl extends UserDao
1 fvelez 29
{
179 fvelez 30
 
31
    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);
32
 
1 fvelez 33
    public static UserDaoImpl getInstance()
34
    {
35
        if (myInstance == null)
36
            myInstance = new UserDaoImpl();
37
        return (UserDaoImpl) myInstance;
38
    }
39
 
40
    /**
41
     * Used by the base DAO classes but here for your modification Load object
42
     * matching the given key and return it.
43
     *
44
     * @param username to load
45
     * @return a user
46
     */
47
    public final User loadByUsername(1.5.0/docs/api/java/lang/String.html">String username)
48
    {
49
        try
50
        {
51
            5+0%2Fdocs%2Fapi+List">List list =
52
                    createCriteria()
344 jmachado 53
                            .add(eq("username", username))
1 fvelez 54
                            .setMaxResults(1)
55
                            .list();
56
 
344 jmachado 57
            if (list.size() == 0)
1 fvelez 58
                return null;
59
            return (User) list.get(0);
60
        }
61
        catch (HibernateException e)
62
        {
63
            throw new DaoException(e);
64
        }
65
    }
344 jmachado 66
 
1 fvelez 67
    /**
68
     * Used by the base DAO classes but here for your modification Load object
69
     * matching the given key and return it.
70
     *
71
     * @param email to load
72
     * @return a user
73
     */
74
    public final User loadByEmail(1.5.0/docs/api/java/lang/String.html">String email)
75
    {
76
        try
77
        {
78
            return (User) createCriteria()
344 jmachado 79
                    .add(eq("email", email))
1 fvelez 80
                    .uniqueResult();
81
        }
82
        catch (HibernateException e)
83
        {
84
            throw new DaoException(e);
85
        }
86
    }
87
 
113 fvelez 88
    /**
44 fvelez 89
     * Used by the base DAO classes but here for your modification Load object
90
     * matching the given key and return it.
91
     *
92
     * @param ID to load
93
     * @return a user
94
     */
113 fvelez 95
    public final User loadByID(1.5.0/docs/api/java/lang/String.html">String ID)
38 fvelez 96
    {
97
        try
98
        {
99
            return (User) createCriteria()
344 jmachado 100
                    .add(eq("id", ID))
38 fvelez 101
                    .uniqueResult();
102
        }
103
        catch (HibernateException e)
104
        {
105
            throw new DaoException(e);
106
        }
107
    }
108
 
1 fvelez 109
    /**
110
     * Used by the base DAO classes but here for your modification Load object
111
     * matching the given key and return it.
112
     *
113
     * @param username to load
114
     * @param password to load
115
     * @return a user
116
     */
117
    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)
118
    {
119
        try
120
        {
121
            return (User) createCriteria()
344 jmachado 122
                    .add(eq("username", username))
395 jmachado 123
                    .add(or(
124
                            eq("password", jomm.utils.BytesUtils.getDigestMD5Hex(password)),
125
                            eq("pop3password",DesUtils.getInstance().encrypt(password))
126
                           )
127
                        )
1 fvelez 128
                    .uniqueResult();
129
        }
130
        catch (HibernateException e)
131
        {
132
            throw new DaoException(e);
133
        }
134
    }
135
 
344 jmachado 136
    public List<User> loadRoleUsers(1.5.0/docs/api/java/lang/String.html">String role)
215 jmachado 137
    {
1136 jmachado 138
        if(role == null || role.trim().length() == 0)
139
            return new ArrayList<User>();
1200 jmachado 140
        List<User> users = createCriteria().add(like("roles", "%" + role + "%")).addOrder(Order.asc("name")).list();
141
        Iterator<User> iter = users.iterator();
142
        while(iter.hasNext())
143
        {
144
            User u = iter.next();
145
            if(!u.hasRole(role))
146
                iter.remove();
147
        }
1201 jmachado 148
        return users;
215 jmachado 149
    }
150
 
387 jmachado 151
    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)
152
    {
153
        Criteria c = createCriteria().add(like("roles", "%" + role + "%")).addOrder(Order.asc("name"));
154
        if(area != null && area.trim().length() > 0)
155
           c.add(eq("mainArea",area));
1202 jmachado 156
        List<User> users = c.list();
157
        Iterator<User> iter = users.iterator();
158
        while(iter.hasNext())
159
        {
160
            User u = iter.next();
161
            if(!u.hasRole(role))
162
                iter.remove();
163
        }
164
        return users;
387 jmachado 165
    }
166
 
344 jmachado 167
    public List<User> findUsers(1.5.0/docs/api/java/lang/String.html">String textToSearch)
113 fvelez 168
    {
344 jmachado 169
        return findUsers(textToSearch, null);
179 fvelez 170
    }
171
 
344 jmachado 172
    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 173
    {
344 jmachado 174
        Criteria criteria;
175
        if (typeToSearch != null && typeToSearch.trim().length() != 0)
179 fvelez 176
            try
177
            {
178
                criteria = createCriteria(1.5.0/docs/api/java/lang/Class.html">Class.forName(typeToSearch));
179
            }
180
            catch (1.5.0/docs/api/java/lang/ClassNotFoundException.html">ClassNotFoundException e)
181
            {
344 jmachado 182
                logger.error(e, e);
183
                return null;
179 fvelez 184
            }
185
        else
344 jmachado 186
            criteria = createCriteria();
721 jmachado 187
        Criterion textSearch = DaoUtils.createSearchQuery(textToSearch, SearchTypeEnum.AllWords, "name", "username");
373 jmachado 188
        Criterion text2Search = DaoUtils.createSearchQuery(textToSearch, SearchTypeEnum.AllWords, "email");
720 jmachado 189
        Criterion fields = or(textSearch, text2Search);
721 jmachado 190
        try{
191
            1.5.0/docs/api/java/lang/Integer.html">Integer siges = 1.5.0/docs/api/java/lang/Integer.html">Integer.parseInt(textToSearch);
192
            fields = or(fields,eq("sigesCode",siges));
193
        }catch(1.5.0/docs/api/java/lang/Exception.html">Exception e){}
194
 
195
 
344 jmachado 196
        return criteria.add(fields)
197
                .addOrder(Order.desc("name"))
198
                .list();
113 fvelez 199
    }
200
 
201
 
45 fvelez 202
    public 1.5.0/docs/api/java/io/Serializable.html">Serializable save(User obj)
203
    {
344 jmachado 204
        try
205
        {
45 fvelez 206
            obj.setSaveDate(new 5+0%2Fdocs%2Fapi+Date">Date());
207
            return super.save(obj);
208
        }
344 jmachado 209
        catch (HibernateException e)
210
        {
45 fvelez 211
            throw new DaoException(e);
212
        }
213
 
214
    }
215
 
215 jmachado 216
    public int countUsers(1.5.0/docs/api/java/lang/String.html">String query, SearchTypeEnum searchType)
217
    {
344 jmachado 218
        Criterion c = DaoUtils.createSearchQuery(query, searchType, "name", "username");
215 jmachado 219
        return createCriteria()
220
                .add(c)
221
                .list().size();
222
    }
223
 
224
 
225
    public List<User> search(1.5.0/docs/api/java/lang/String.html">String query, SearchTypeEnum searchTypeEnum, int maxResults, int page)
226
    {
227
        Criterion c = DaoUtils.createSearchQuery(query, searchTypeEnum, "name", "username");
228
        Criteria criteria = createCriteria();
229
        criteria.add(c)
230
                .addOrder(Order.asc("name"))
231
                .setMaxResults(maxResults)
232
                .setFirstResult(page * maxResults);
233
        return criteria.list();
234
    }
381 jmachado 235
 
236
    public List<User> findByEmail(1.5.0/docs/api/java/lang/String.html">String email)
237
    {
238
        return createCriteria().add(or(or(or(eq("email",email),eq("outEmail",email)),eq("gmail",email)),eq("msn",email))).list();
239
    }
411 jmachado 240
 
1312 jmachado 241
    public User loadByUsernameOrSigesCode(int sigesCode)
411 jmachado 242
    {
243
        return (User) createCriteria().add(or(eq("sigesCode",sigesCode),eq("username","a" + sigesCode))).uniqueResult();
244
    }
1312 jmachado 245
 
246
    public User loadBySigesCode(int sigesCode)
247
    {
248
        return (User) createCriteria().add(eq("sigesCode", sigesCode)).uniqueResult();
249
    }
250
 
684 jmachado 251
 
252
 // Duarte Santos
671 jmachado 253
    public List<User> loadRolesUsers(List<String> roles)
254
    {
1136 jmachado 255
        if(roles == null || roles.size() == 0)
256
            return new ArrayList<User>();
671 jmachado 257
        Criteria criteria = createCriteria();
258
        Criterion co = null;
259
        for (1.5.0/docs/api/java/lang/String.html">String role : roles)
260
        {
1136 jmachado 261
            if(role.trim().length() == 0)
262
                continue;
671 jmachado 263
            Criterion cor = like("roles", "%" + role + "%");
264
            if (co == null)
265
                co = cor;
266
            else
267
                co = or(co, cor);
268
        }
269
        criteria.add(co);
1202 jmachado 270
        List<User> users = criteria.list();
271
        Iterator<User> iter = users.iterator();
272
        while(iter.hasNext())
273
        {
274
            boolean hasIt = false;
275
            User u = iter.next();
276
            for(1.5.0/docs/api/java/lang/String.html">String role: roles)
277
            {
278
                if(u.hasRole(role))
279
                {
280
                    hasIt = true;
281
                    break;
282
                }
283
            }
284
            if(!hasIt)
285
                iter.remove();
286
        }
287
        return users;
671 jmachado 288
    }
1 fvelez 289
}