Project

General

Profile

Download (6.32 KB) Statistics
| Branch: | Tag: | Revision:
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 GroupServiceImpl 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
		if(group != null){
91
			dao.delete(group);
92
		}
93
	}
94

    
95
	/* (non-Javadoc)
96
	 * @see org.springframework.security.provisioning.GroupManager#renameGroup(java.lang.String, java.lang.String)
97
	 */
98
	@Override
99
	@Transactional(readOnly=false)
100
	public void renameGroup(String oldName, String newName) {
101
		Assert.hasText(oldName);
102
		Assert.hasText(newName);
103
		
104
		Group group = dao.findGroupByName(oldName);
105
		
106
		group.setName(newName);
107
		dao.update(group);
108
	}
109

    
110
	/* (non-Javadoc)
111
	 * @see org.springframework.security.provisioning.GroupManager#addUserToGroup(java.lang.String, java.lang.String)
112
	 */
113
	@Override
114
	@Transactional(readOnly=false)
115
	public void addUserToGroup(String username, String groupName) {
116
		Assert.hasText(username);
117
		Assert.hasText(groupName);
118
		
119
		Group group = dao.findGroupByName(groupName);
120
		User user = userDao.findUserByUsername(username);
121
		
122
		if(group != null || user != null){
123
			if(group.addMember(user)) {
124
				dao.update(group);
125
			}
126
		}
127
	}
128

    
129
	/* (non-Javadoc)
130
	 * @see org.springframework.security.provisioning.GroupManager#removeUserFromGroup(java.lang.String, java.lang.String)
131
	 */
132
	@Override
133
	@Transactional(readOnly=false)
134
	public void removeUserFromGroup(String username, String groupName) {
135
		Assert.hasText(username);
136
		Assert.hasText(groupName);
137
		
138
		Group group = dao.findGroupByName(groupName);
139
		User user = userDao.findUserByUsername(username);
140
		
141
		if(group != null || user != null){
142
			if(group.removeMember(user)){
143
				dao.update(group);
144
			}
145
		}
146
	}
147

    
148
	/* (non-Javadoc)
149
	 * @see org.springframework.security.provisioning.GroupManager#findGroupAuthorities(java.lang.String)
150
	 */
151
	@Override
152
	public List<GrantedAuthority> findGroupAuthorities(String groupName) {
153
		Assert.hasText(groupName);
154
		Group group = dao.findGroupByName(groupName);
155
		
156
		if (group != null){
157
			return new ArrayList<GrantedAuthority>(group.getGrantedAuthorities());
158
		}
159
		
160
		return new ArrayList<GrantedAuthority>();
161
	}
162

    
163
	/* (non-Javadoc)
164
	 * @see org.springframework.security.provisioning.GroupManager#addGroupAuthority(java.lang.String, org.springframework.security.core.GrantedAuthority)
165
	 */
166
	@Override
167
	@Transactional(readOnly=false)
168
	public void addGroupAuthority(String groupName, GrantedAuthority authority) {
169
		Assert.hasText(groupName);
170
		Assert.notNull(authority);
171
		
172
		Group group = dao.findGroupByName(groupName);
173
		
174
		if (group != null){
175
			if(group.getGrantedAuthorities().add(authority)){
176
				dao.update(group);
177
			}
178
		}
179
	}
180

    
181
	/* (non-Javadoc)
182
	 * @see org.springframework.security.provisioning.GroupManager#removeGroupAuthority(java.lang.String, org.springframework.security.core.GrantedAuthority)
183
	 */
184
	@Override
185
	@Transactional(readOnly=false)
186
	public void removeGroupAuthority(String groupName,
187
			GrantedAuthority authority) {
188
		Assert.hasText(groupName);
189
		Assert.notNull(authority);
190
		
191
		Group group = dao.findGroupByName(groupName);
192
		
193
		if(group != null){
194
			if(group.getGrantedAuthorities().remove(authority)) {
195
				dao.update(group);
196
			}
197
		}
198
	}
199

    
200
	/* (non-Javadoc)
201
	 * @see eu.etaxonomy.cdm.api.service.ServiceBase#setDao(eu.etaxonomy.cdm.persistence.dao.common.ICdmEntityDao)
202
	 */
203
	@Override
204
	@Autowired
205
	protected void setDao(IGroupDao dao) {
206
		this.dao = dao;
207
	}
208

    
209
	@Autowired
210
	public void setUserDao(IUserDao userDao){
211
		this.userDao = userDao;
212
	}
213
	
214
	@Transactional(readOnly = true)
215
	public List<Group> listByName(String queryString,MatchMode matchmode, List<Criterion> criteria, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths) {
216
		 Integer numberOfResults = dao.countByName(queryString, matchmode, criteria);
217
			
218
		 List<Group> results = new ArrayList<Group>();
219
		 if(numberOfResults > 0) { 
220
				results = dao.findByName(queryString, matchmode, criteria, pageSize, pageNumber, orderHints, propertyPaths); 
221
		 }
222
		 return results;
223
	}
224
	
225
}
(20-20/76)