Subversion Repositories bacoAlunos

Rev

Rev 1136 | Rev 1201 | 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
        }
215 jmachado 148
    }
149
 
387 jmachado 150
    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)
151
    {
152
        Criteria c = createCriteria().add(like("roles", "%" + role + "%")).addOrder(Order.asc("name"));
153
        if(area != null && area.trim().length() > 0)
154
           c.add(eq("mainArea",area));
155
        return c.list();
156
    }
157
 
344 jmachado 158
    public List<User> findUsers(1.5.0/docs/api/java/lang/String.html">String textToSearch)
113 fvelez 159
    {
344 jmachado 160
        return findUsers(textToSearch, null);
179 fvelez 161
    }
162
 
344 jmachado 163
    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 164
    {
344 jmachado 165
        Criteria criteria;
166
        if (typeToSearch != null && typeToSearch.trim().length() != 0)
179 fvelez 167
            try
168
            {
169
                criteria = createCriteria(1.5.0/docs/api/java/lang/Class.html">Class.forName(typeToSearch));
170
            }
171
            catch (1.5.0/docs/api/java/lang/ClassNotFoundException.html">ClassNotFoundException e)
172
            {
344 jmachado 173
                logger.error(e, e);
174
                return null;
179 fvelez 175
            }
176
        else
344 jmachado 177
            criteria = createCriteria();
721 jmachado 178
        Criterion textSearch = DaoUtils.createSearchQuery(textToSearch, SearchTypeEnum.AllWords, "name", "username");
373 jmachado 179
        Criterion text2Search = DaoUtils.createSearchQuery(textToSearch, SearchTypeEnum.AllWords, "email");
720 jmachado 180
        Criterion fields = or(textSearch, text2Search);
721 jmachado 181
        try{
182
            1.5.0/docs/api/java/lang/Integer.html">Integer siges = 1.5.0/docs/api/java/lang/Integer.html">Integer.parseInt(textToSearch);
183
            fields = or(fields,eq("sigesCode",siges));
184
        }catch(1.5.0/docs/api/java/lang/Exception.html">Exception e){}
185
 
186
 
344 jmachado 187
        return criteria.add(fields)
188
                .addOrder(Order.desc("name"))
189
                .list();
113 fvelez 190
    }
191
 
192
 
45 fvelez 193
    public 1.5.0/docs/api/java/io/Serializable.html">Serializable save(User obj)
194
    {
344 jmachado 195
        try
196
        {
45 fvelez 197
            obj.setSaveDate(new 5+0%2Fdocs%2Fapi+Date">Date());
198
            return super.save(obj);
199
        }
344 jmachado 200
        catch (HibernateException e)
201
        {
45 fvelez 202
            throw new DaoException(e);
203
        }
204
 
205
    }
206
 
215 jmachado 207
    public int countUsers(1.5.0/docs/api/java/lang/String.html">String query, SearchTypeEnum searchType)
208
    {
344 jmachado 209
        Criterion c = DaoUtils.createSearchQuery(query, searchType, "name", "username");
215 jmachado 210
        return createCriteria()
211
                .add(c)
212
                .list().size();
213
    }
214
 
215
 
216
    public List<User> search(1.5.0/docs/api/java/lang/String.html">String query, SearchTypeEnum searchTypeEnum, int maxResults, int page)
217
    {
218
        Criterion c = DaoUtils.createSearchQuery(query, searchTypeEnum, "name", "username");
219
        Criteria criteria = createCriteria();
220
        criteria.add(c)
221
                .addOrder(Order.asc("name"))
222
                .setMaxResults(maxResults)
223
                .setFirstResult(page * maxResults);
224
        return criteria.list();
225
    }
381 jmachado 226
 
227
    public List<User> findByEmail(1.5.0/docs/api/java/lang/String.html">String email)
228
    {
229
        return createCriteria().add(or(or(or(eq("email",email),eq("outEmail",email)),eq("gmail",email)),eq("msn",email))).list();
230
    }
411 jmachado 231
 
232
     public User loadByUsernameOrSigesCode(int sigesCode)
233
    {
234
        return (User) createCriteria().add(or(eq("sigesCode",sigesCode),eq("username","a" + sigesCode))).uniqueResult();
235
    }
684 jmachado 236
 
237
 // Duarte Santos
671 jmachado 238
    public List<User> loadRolesUsers(List<String> roles)
239
    {
1136 jmachado 240
        if(roles == null || roles.size() == 0)
241
            return new ArrayList<User>();
671 jmachado 242
        Criteria criteria = createCriteria();
243
        Criterion co = null;
244
        for (1.5.0/docs/api/java/lang/String.html">String role : roles)
245
        {
1136 jmachado 246
            if(role.trim().length() == 0)
247
                continue;
671 jmachado 248
            Criterion cor = like("roles", "%" + role + "%");
249
            if (co == null)
250
                co = cor;
251
            else
252
                co = or(co, cor);
253
        }
254
        criteria.add(co);
255
        return criteria.list();
256
    }
1 fvelez 257
}