View Javadoc
1   package de.dlr.shepard.context.references.timeseriesreference.daos;
2   
3   import de.dlr.shepard.common.neo4j.daos.GenericDAO;
4   import de.dlr.shepard.common.util.CypherQueryHelper;
5   import de.dlr.shepard.context.references.timeseriesreference.model.ReferencedTimeseriesNodeEntity;
6   import jakarta.enterprise.context.RequestScoped;
7   import java.util.Map;
8   
9   @RequestScoped
10  public class ReferencedTimeseriesNodeEntityDAO extends GenericDAO<ReferencedTimeseriesNodeEntity> {
11  
12    /**
13     * Find a timeseries by properties
14     *
15     * @param measurement  measurement
16     * @param device       device
17     * @param location     location
18     * @param symbolicName symbolicName
19     * @param field        field
20     *
21     * @return the found timeseries or null
22     */
23    public ReferencedTimeseriesNodeEntity find(
24      String measurement,
25      String device,
26      String location,
27      String symbolicName,
28      String field
29    ) {
30      var query = String.format(
31        "MATCH (t:Timeseries { measurement: $measurement, device: $device, location: $location, symbolicName: $symbolicName, field: $field }) %s",
32        CypherQueryHelper.getReturnPart("t")
33      );
34      Map<String, Object> params = Map.of(
35        "measurement",
36        measurement,
37        "device",
38        device,
39        "location",
40        location,
41        "symbolicName",
42        symbolicName,
43        "field",
44        field
45      );
46      var results = findByQuery(query, params);
47      return results.iterator().hasNext() ? results.iterator().next() : null;
48    }
49  
50    @Override
51    public Class<ReferencedTimeseriesNodeEntity> getEntityType() {
52      return ReferencedTimeseriesNodeEntity.class;
53    }
54  }