View Javadoc
1   package de.dlr.shepard.neo4Core.services;
2   
3   import java.util.ArrayList;
4   import java.util.List;
5   
6   import de.dlr.shepard.neo4Core.dao.PermissionsDAO;
7   import de.dlr.shepard.neo4Core.dao.UserDAO;
8   import de.dlr.shepard.neo4Core.dao.UserGroupDAO;
9   import de.dlr.shepard.neo4Core.entities.Permissions;
10  import de.dlr.shepard.neo4Core.entities.User;
11  import de.dlr.shepard.neo4Core.entities.UserGroup;
12  import de.dlr.shepard.neo4Core.io.UserGroupIO;
13  import de.dlr.shepard.util.DateHelper;
14  import de.dlr.shepard.util.PermissionType;
15  import de.dlr.shepard.util.QueryParamHelper;
16  
17  public class UserGroupService {
18  
19  	private UserGroupDAO userGroupDAO = new UserGroupDAO();
20  	private UserDAO userDAO = new UserDAO();
21  	private PermissionsDAO permissionsDAO = new PermissionsDAO();
22  	private DateHelper dateHelper = new DateHelper();
23  
24  	public List<UserGroup> getAllUserGroups(QueryParamHelper params, String username) {
25  		return userGroupDAO.findAllUserGroups(params, username);
26  	}
27  
28  	public UserGroup getUserGroup(Long userGroupId) {
29  		return userGroupDAO.findByNeo4jId(userGroupId);
30  	}
31  
32  	public UserGroup createUserGroup(UserGroupIO userGroup, String username) {
33  		var user = userDAO.find(username);
34  		var toCreate = new UserGroup();
35  		toCreate.setName(userGroup.getName());
36  		toCreate.setCreatedBy(user);
37  		toCreate.setCreatedAt(dateHelper.getDate());
38  		toCreate.setUsers(fetchUsers(userGroup.getUsernames()));
39  		var created = userGroupDAO.createOrUpdate(toCreate);
40  		permissionsDAO.createOrUpdate(new Permissions(created, user, PermissionType.Private));
41  		return created;
42  	}
43  
44  	public UserGroup updateUserGroup(Long id, UserGroupIO userGroup, String username) {
45  		var user = userDAO.find(username);
46  		var old = userGroupDAO.findByNeo4jId(id);
47  		old.setUpdatedBy(user);
48  		old.setUpdatedAt(dateHelper.getDate());
49  		old.setName(userGroup.getName());
50  		old.setUsers(fetchUsers(userGroup.getUsernames()));
51  		var updated = userGroupDAO.createOrUpdate(old);
52  		return updated;
53  	}
54  
55  	public boolean deleteUserGroup(Long id) {
56  		var old = userGroupDAO.findByNeo4jId(id);
57  		if (old == null)
58  			return false;
59  
60  		var permissions = permissionsDAO.findByEntityNeo4jId(id);
61  		var permissionsResult = permissions == null || permissionsDAO.deleteByNeo4jId(permissions.getId());
62  		if (!permissionsResult)
63  			return false;
64  
65  		return userGroupDAO.deleteByNeo4jId(id);
66  	}
67  
68  	private ArrayList<User> fetchUsers(String[] usernames) {
69  		var result = new ArrayList<User>(usernames.length);
70  		for (var username : usernames) {
71  			if (username == null) {
72  				continue;
73  			}
74  			var user = userDAO.find(username);
75  			if (user != null) {
76  				result.add(user);
77  			}
78  		}
79  		return result;
80  	}
81  
82  }