1 package de.dlr.shepard.context.semantic.daos;
2
3 import de.dlr.shepard.common.neo4j.daos.GenericDAO;
4 import de.dlr.shepard.common.util.CypherQueryHelper;
5 import de.dlr.shepard.common.util.QueryParamHelper;
6 import de.dlr.shepard.context.semantic.entities.SemanticRepository;
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 SemanticRepositoryDAO extends GenericDAO<SemanticRepository> {
15
16 public List<SemanticRepository> findAllSemanticRepositories(QueryParamHelper params) {
17 Map<String, Object> paramsMap = new HashMap<>();
18 if (params.hasName()) paramsMap.put("name", params.getName());
19 var query = String.format(
20 "MATCH %s WITH r",
21 CypherQueryHelper.getObjectPart("r", "SemanticRepository", params.hasName())
22 );
23 if (params.hasOrderByAttribute()) {
24 query += " " + CypherQueryHelper.getOrderByPart("r", params.getOrderByAttribute(), params.getOrderDesc());
25 }
26 if (params.hasPagination()) {
27 paramsMap.put("offset", params.getPagination().getOffset());
28 paramsMap.put("size", params.getPagination().getSize());
29 query += " " + CypherQueryHelper.getPaginationPart();
30 }
31 query += " " + CypherQueryHelper.getReturnPart("r");
32 var result = new ArrayList<SemanticRepository>();
33 for (var rep : findByQuery(query, paramsMap)) {
34 if (matchName(rep, params.getName())) {
35 result.add(rep);
36 }
37 }
38
39 return result;
40 }
41
42 private boolean matchName(SemanticRepository rep, String name) {
43 return name == null || rep.getName().equalsIgnoreCase(name);
44 }
45
46 @Override
47 public Class<SemanticRepository> getEntityType() {
48 return SemanticRepository.class;
49 }
50 }