1 package de.dlr.shepard.auth.users.daos;
2
3 import de.dlr.shepard.auth.users.entities.UserGroup;
4 import de.dlr.shepard.common.neo4j.daos.GenericDAO;
5 import de.dlr.shepard.common.util.CypherQueryHelper;
6 import de.dlr.shepard.common.util.QueryParamHelper;
7 import jakarta.enterprise.context.RequestScoped;
8 import java.util.ArrayList;
9 import java.util.HashMap;
10 import java.util.List;
11 import java.util.Map;
12
13 @RequestScoped
14 public class UserGroupDAO extends GenericDAO<UserGroup> {
15
16 @Override
17 public Class<UserGroup> getEntityType() {
18 return UserGroup.class;
19 }
20
21 public List<UserGroup> findAllUserGroups(QueryParamHelper params, String username) {
22 Map<String, Object> paramsMap = new HashMap<>();
23 if (params.hasPagination()) {
24 paramsMap.put("offset", params.getPagination().getOffset());
25 paramsMap.put("size", params.getPagination().getSize());
26 }
27 var query = String.format(
28 "MATCH %s WHERE %s WITH ug",
29 CypherQueryHelper.getObjectPart("ug", "UserGroup", false),
30 CypherQueryHelper.getReadableByQuery("ug", username)
31 );
32 if (params.hasOrderByAttribute()) {
33 query += " " + CypherQueryHelper.getOrderByPart("ug", params.getOrderByAttribute(), params.getOrderDesc());
34 }
35 if (params.hasPagination()) {
36 query += " " + CypherQueryHelper.getPaginationPart();
37 }
38 query += " " + CypherQueryHelper.getReturnPart("ug");
39 var result = new ArrayList<UserGroup>();
40 for (var userGroup : findByQuery(query, paramsMap)) {
41 result.add(userGroup);
42 }
43 return result;
44 }
45 }