fix term loading bug
[cdmlib.git] / cdmlib-persistence / src / main / java / eu / etaxonomy / cdm / persistence / dao / hibernate / common / GroupDaoImpl.java
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.common;
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.common.Group;
20 import eu.etaxonomy.cdm.persistence.dao.common.IGroupDao;
21 import eu.etaxonomy.cdm.persistence.query.MatchMode;
22 import eu.etaxonomy.cdm.persistence.query.OrderHint;
23
24 @Repository
25 public class GroupDaoImpl extends CdmEntityDaoBase<Group> implements IGroupDao {
26
27 public GroupDaoImpl() {
28 super(Group.class);
29 }
30
31 public Group findGroupByName(String groupName) {
32 Query query = getSession().createQuery("select g from Group g where g.name = :name");
33 query.setParameter("name",groupName);
34
35 Group group = (Group)query.uniqueResult();
36 if(group != null) {
37 Hibernate.initialize(group.getGrantedAuthorities());
38 Hibernate.initialize(group.getMembers());
39 }
40
41 return group;
42 }
43
44 public List<String> listNames(Integer pageSize, Integer pageNumber) {
45 Query query = getSession().createQuery("select g.name from Group g");
46
47 if(pageSize != null) {
48 query.setMaxResults(pageSize);
49 if(pageNumber != null) {
50 query.setFirstResult(pageNumber * pageSize);
51 } else {
52 query.setFirstResult(0);
53 }
54 }
55
56 return (List<String>)query.list();
57 }
58
59 public List<String> listMembers(Group group, Integer pageSize, Integer pageNumber) {
60 Query query = getSession().createQuery("select m.username from Group g join g.members m where g = :group");
61 query.setParameter("group", group);
62
63 if(pageSize != null) {
64 query.setMaxResults(pageSize);
65 if(pageNumber != null) {
66 query.setFirstResult(pageNumber * pageSize);
67 } else {
68 query.setFirstResult(0);
69 }
70 }
71
72 return (List<String>)query.list();
73 }
74
75 /* (non-Javadoc)
76 * @see eu.etaxonomy.cdm.persistence.dao.common.IGroupDao#countByName(java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List)
77 */
78 public int countByName(String queryString, MatchMode matchmode, List<Criterion> criterion) {
79 return countByParam(type, "name",queryString,matchmode,criterion);
80 }
81
82 /* (non-Javadoc)
83 * @see eu.etaxonomy.cdm.persistence.dao.common.IGroupDao#findByName(java.lang.String, eu.etaxonomy.cdm.persistence.query.MatchMode, java.util.List, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)
84 */
85 public List<Group> findByName(String queryString, MatchMode matchmode, List<Criterion> criterion, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
86 return findByParam(type, "name", queryString, matchmode, criterion, pageSize, pageNumber, orderHints, propertyPaths);
87 }
88 }