View Javadoc
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  }