1 package de.dlr.shepard.neo4Core.dao;
2
3 import java.util.ArrayList;
4 import java.util.HashMap;
5 import java.util.List;
6 import java.util.Map;
7
8 import de.dlr.shepard.neo4Core.entities.StructuredDataContainer;
9 import de.dlr.shepard.util.CypherQueryHelper;
10 import de.dlr.shepard.util.QueryParamHelper;
11
12 public class StructuredDataContainerDAO extends GenericDAO<StructuredDataContainer> {
13
14 public List<StructuredDataContainer> findAllStructuredDataContainers(QueryParamHelper params, String username) {
15 String query;
16 Map<String, Object> paramsMap = new HashMap<>();
17 paramsMap.put("name", params.getName());
18 if (params.hasPagination()) {
19 paramsMap.put("offset", params.getPagination().getOffset());
20 paramsMap.put("size", params.getPagination().getSize());
21 }
22 query = String.format("MATCH %s WHERE %s WITH c",
23 CypherQueryHelper.getObjectPart("c", "StructuredDataContainer", params.hasName()),
24 CypherQueryHelper.getReadableByQuery("c", username));
25 if (params.hasOrderByAttribute()) {
26 query += " " + CypherQueryHelper.getOrderByPart("c", params.getOrderByAttribute(), params.getOrderDesc());
27 }
28 if (params.hasPagination()) {
29 query += " " + CypherQueryHelper.getPaginationPart();
30 }
31 query += " " + CypherQueryHelper.getReturnPart("c", true);
32 var result = new ArrayList<StructuredDataContainer>();
33 for (var container : findByQuery(query, paramsMap)) {
34 if (matchName(container, params.getName())) {
35 result.add(container);
36 }
37 }
38
39 return result;
40 }
41
42 private boolean matchName(StructuredDataContainer container, String name) {
43 return name == null || container.getName().equalsIgnoreCase(name);
44 }
45
46 @Override
47 public Class<StructuredDataContainer> getEntityType() {
48 return StructuredDataContainer.class;
49 }
50
51 }