remove imports
[cdmlib.git] / cdmlib-services / src / main / java / eu / etaxonomy / cdm / api / service / GroupService.java
1 // $Id$
2 /**
3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
6 *
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
9 */
10
11 package eu.etaxonomy.cdm.api.service;
12
13 import java.util.ArrayList;
14 import java.util.List;
15
16 import org.hibernate.criterion.Criterion;
17 import org.springframework.beans.factory.annotation.Autowired;
18 import org.springframework.security.core.GrantedAuthority;
19 import org.springframework.stereotype.Service;
20 import org.springframework.transaction.annotation.Propagation;
21 import org.springframework.transaction.annotation.Transactional;
22 import org.springframework.util.Assert;
23
24 import eu.etaxonomy.cdm.model.common.Group;
25 import eu.etaxonomy.cdm.model.common.User;
26 import eu.etaxonomy.cdm.persistence.dao.common.IGroupDao;
27 import eu.etaxonomy.cdm.persistence.dao.common.IUserDao;
28 import eu.etaxonomy.cdm.persistence.query.MatchMode;
29 import eu.etaxonomy.cdm.persistence.query.OrderHint;
30
31 /**
32 * @author n.hoffmann
33 * @created Mar 9, 2011
34 * @version 1.0
35 */
36 @Service
37 @Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
38 public class GroupService extends ServiceBase<Group,IGroupDao> implements IGroupService {
39
40 protected IUserDao userDao;
41
42 /* (non-Javadoc)
43 * @see org.springframework.security.provisioning.GroupManager#findAllGroups()
44 */
45 @Override
46 public List<String> findAllGroups() {
47 return dao.listNames(null,null);
48 }
49
50 /* (non-Javadoc)
51 * @see org.springframework.security.provisioning.GroupManager#findUsersInGroup(java.lang.String)
52 */
53 @Override
54 public List<String> findUsersInGroup(String groupName) {
55 Assert.hasText(groupName);
56 Group group = dao.findGroupByName(groupName);
57
58 List<String> users = dao.listMembers(group, null, null);
59
60 return users;
61 }
62
63 /* (non-Javadoc)
64 * @see org.springframework.security.provisioning.GroupManager#createGroup(java.lang.String, java.util.List)
65 */
66 @Override
67 @Transactional(readOnly=false)
68 public void createGroup(String groupName, List<GrantedAuthority> authorities) {
69 Assert.hasText(groupName);
70 Assert.notNull(authorities);
71
72 Group group = Group.NewInstance(groupName);
73
74 for(GrantedAuthority authority : authorities) {
75 group.getGrantedAuthorities().add(authority);
76 }
77
78 dao.save(group);
79 }
80
81 /* (non-Javadoc)
82 * @see org.springframework.security.provisioning.GroupManager#deleteGroup(java.lang.String)
83 */
84 @Override
85 @Transactional(readOnly=false)
86 public void deleteGroup(String groupName) {
87 Assert.hasText(groupName);
88
89 Group group = dao.findGroupByName(groupName);
90 dao.delete(group);
91 }
92
93 /* (non-Javadoc)
94 * @see org.springframework.security.provisioning.GroupManager#renameGroup(java.lang.String, java.lang.String)
95 */
96 @Override
97 @Transactional(readOnly=false)
98 public void renameGroup(String oldName, String newName) {
99 Assert.hasText(oldName);
100 Assert.hasText(newName);
101
102 Group group = dao.findGroupByName(oldName);
103
104 group.setName(newName);
105 dao.update(group);
106 }
107
108 /* (non-Javadoc)
109 * @see org.springframework.security.provisioning.GroupManager#addUserToGroup(java.lang.String, java.lang.String)
110 */
111 @Override
112 @Transactional(readOnly=false)
113 public void addUserToGroup(String username, String groupName) {
114 Assert.hasText(username);
115 Assert.hasText(groupName);
116
117 Group group = dao.findGroupByName(groupName);
118 User user = userDao.findUserByUsername(username);
119
120 if(group.addMember(user)) {
121 dao.update(group);
122 }
123 }
124
125 /* (non-Javadoc)
126 * @see org.springframework.security.provisioning.GroupManager#removeUserFromGroup(java.lang.String, java.lang.String)
127 */
128 @Override
129 @Transactional(readOnly=false)
130 public void removeUserFromGroup(String username, String groupName) {
131 Assert.hasText(username);
132 Assert.hasText(groupName);
133
134 Group group = dao.findGroupByName(groupName);
135 User user = userDao.findUserByUsername(username);
136
137 if(group.removeMember(user)) {
138 dao.update(group);
139 }
140 }
141
142 /* (non-Javadoc)
143 * @see org.springframework.security.provisioning.GroupManager#findGroupAuthorities(java.lang.String)
144 */
145 @Override
146 public List<GrantedAuthority> findGroupAuthorities(String groupName) {
147 Assert.hasText(groupName);
148 Group group = dao.findGroupByName(groupName);
149
150 return new ArrayList<GrantedAuthority>(group.getGrantedAuthorities());
151 }
152
153 /* (non-Javadoc)
154 * @see org.springframework.security.provisioning.GroupManager#addGroupAuthority(java.lang.String, org.springframework.security.core.GrantedAuthority)
155 */
156 @Override
157 @Transactional(readOnly=false)
158 public void addGroupAuthority(String groupName, GrantedAuthority authority) {
159 Assert.hasText(groupName);
160 Assert.notNull(authority);
161
162 Group group = dao.findGroupByName(groupName);
163 if(group.getGrantedAuthorities().add(authority)) {
164 dao.update(group);
165 }
166 }
167
168 /* (non-Javadoc)
169 * @see org.springframework.security.provisioning.GroupManager#removeGroupAuthority(java.lang.String, org.springframework.security.core.GrantedAuthority)
170 */
171 @Override
172 @Transactional(readOnly=false)
173 public void removeGroupAuthority(String groupName,
174 GrantedAuthority authority) {
175 Assert.hasText(groupName);
176 Assert.notNull(authority);
177
178 Group group = dao.findGroupByName(groupName);
179
180 if(group.getGrantedAuthorities().remove(authority)) {
181 dao.update(group);
182 }
183 }
184
185 /* (non-Javadoc)
186 * @see eu.etaxonomy.cdm.api.service.ServiceBase#setDao(eu.etaxonomy.cdm.persistence.dao.common.ICdmEntityDao)
187 */
188 @Override
189 @Autowired
190 protected void setDao(IGroupDao dao) {
191 this.dao = dao;
192 }
193
194 @Autowired
195 public void setUserDao(IUserDao userDao){
196 this.userDao = userDao;
197 }
198
199 @Transactional(readOnly = true)
200 public List<Group> listByName(String queryString,MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
201 Integer numberOfResults = dao.countByName(queryString, matchmode, criteria);
202
203 List<Group> results = new ArrayList<Group>();
204 if(numberOfResults > 0) {
205 results = dao.findByName(queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths);
206 }
207 return results;
208 }
209
210 }