1 package de.dlr.shepard.context.references.timeseriesreference.model;
2
3 import com.fasterxml.jackson.annotation.JsonIgnore;
4 import de.dlr.shepard.common.util.HasId;
5 import de.dlr.shepard.data.timeseries.model.Timeseries;
6 import de.dlr.shepard.data.timeseries.model.TimeseriesUniqueIdBuilder;
7 import jakarta.validation.constraints.NotBlank;
8 import lombok.Data;
9 import lombok.NoArgsConstructor;
10 import org.neo4j.ogm.annotation.GeneratedValue;
11 import org.neo4j.ogm.annotation.Id;
12 import org.neo4j.ogm.annotation.NodeEntity;
13
14 @NodeEntity(label = "Timeseries")
15 @Data
16 @NoArgsConstructor
17 public class ReferencedTimeseriesNodeEntity implements HasId {
18
19 @Id
20 @GeneratedValue
21 @JsonIgnore
22 private Long id;
23
24 @NotBlank
25 private String measurement;
26
27 @NotBlank
28 private String device;
29
30 @NotBlank
31 private String location;
32
33 @NotBlank
34 private String symbolicName;
35
36 @NotBlank
37 private String field;
38
39 public ReferencedTimeseriesNodeEntity(
40 String measurement,
41 String device,
42 String location,
43 String symbolicName,
44 String field
45 ) {
46 this.measurement = measurement;
47 this.device = device;
48 this.location = location;
49 this.symbolicName = symbolicName;
50 this.field = field;
51 }
52
53 public ReferencedTimeseriesNodeEntity(Timeseries timeseries) {
54 this.measurement = timeseries.getMeasurement();
55 this.device = timeseries.getDevice();
56 this.location = timeseries.getLocation();
57 this.symbolicName = timeseries.getSymbolicName();
58 this.field = timeseries.getField();
59 }
60
61 public Timeseries toTimeseries() {
62 return new Timeseries(
63 this.getMeasurement(),
64 this.getDevice(),
65 this.getLocation(),
66 this.getSymbolicName(),
67 this.getField()
68 );
69 }
70
71 @Override
72 public String getUniqueId() {
73 return TimeseriesUniqueIdBuilder.buildUniqueId(measurement, device, location, symbolicName, field);
74 }
75 }