View Javadoc
1   package de.dlr.shepard.data.timeseries.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.CypherQueryHelper.Neighborhood;
6   import de.dlr.shepard.common.util.QueryParamHelper;
7   import de.dlr.shepard.data.timeseries.model.TimeseriesContainer;
8   import jakarta.enterprise.context.RequestScoped;
9   import java.util.ArrayList;
10  import java.util.HashMap;
11  import java.util.List;
12  import java.util.Map;
13  
14  @RequestScoped
15  public class TimeseriesContainerDAO extends GenericDAO<TimeseriesContainer> {
16  
17    public List<TimeseriesContainer> findAllTimeseriesContainers(QueryParamHelper params, String username) {
18      String query;
19      Map<String, Object> paramsMap = new HashMap<>();
20      paramsMap.put("name", params.getName());
21      if (params.hasPagination()) {
22        paramsMap.put("offset", params.getPagination().getOffset());
23        paramsMap.put("size", params.getPagination().getSize());
24      }
25  
26      query = String.format(
27        "MATCH %s WHERE %s WITH c",
28        CypherQueryHelper.getObjectPart("c", "TimeseriesContainer", params.hasName()),
29        CypherQueryHelper.getReadableByQuery("c", username)
30      );
31      if (params.hasOrderByAttribute()) {
32        query += " " + CypherQueryHelper.getOrderByPart("c", params.getOrderByAttribute(), params.getOrderDesc());
33      }
34      if (params.hasPagination()) {
35        query += " " + CypherQueryHelper.getPaginationPart();
36      }
37      query += " " + CypherQueryHelper.getReturnPart("c", Neighborhood.ESSENTIAL);
38      var result = new ArrayList<TimeseriesContainer>();
39      for (var container : findByQuery(query, paramsMap)) {
40        if (matchName(container, params.getName())) {
41          result.add(container);
42        }
43      }
44      return result;
45    }
46  
47    private boolean matchName(TimeseriesContainer container, String name) {
48      return name == null || container.getName().equalsIgnoreCase(name);
49    }
50  
51    @Override
52    public Class<TimeseriesContainer> getEntityType() {
53      return TimeseriesContainer.class;
54    }
55  }