View Javadoc
1   package de.dlr.shepard.data.timeseries.model;
2   
3   import de.dlr.shepard.common.neo4j.entities.Annotatable;
4   import de.dlr.shepard.common.util.HasId;
5   import de.dlr.shepard.common.util.Neo4jLabels;
6   import de.dlr.shepard.context.semantic.entities.SemanticAnnotation;
7   import de.dlr.shepard.data.timeseries.model.enums.DataPointValueType;
8   import jakarta.persistence.EnumType;
9   import jakarta.persistence.Enumerated;
10  import jakarta.persistence.GeneratedValue;
11  import jakarta.persistence.Id;
12  import jakarta.validation.constraints.NotBlank;
13  import java.util.ArrayList;
14  import java.util.List;
15  import lombok.Data;
16  import lombok.EqualsAndHashCode;
17  import lombok.NoArgsConstructor;
18  import lombok.NonNull;
19  import lombok.RequiredArgsConstructor;
20  import org.neo4j.ogm.annotation.Index;
21  import org.neo4j.ogm.annotation.NodeEntity;
22  import org.neo4j.ogm.annotation.Relationship;
23  import org.neo4j.ogm.annotation.Relationship.Direction;
24  
25  @NodeEntity
26  @Data
27  @NoArgsConstructor(force = true)
28  @RequiredArgsConstructor
29  public class Timeseries implements HasId, Annotatable {
30  
31    @Id
32    @GeneratedValue
33    @EqualsAndHashCode.Exclude
34    private Long id;
35  
36    @Index
37    @NotBlank
38    private boolean deleted;
39  
40    @NotBlank
41    @NonNull
42    @Relationship(type = Neo4jLabels.IS_IN_CONTAINER, direction = Direction.OUTGOING)
43    private TimeseriesContainer container;
44  
45    @NotBlank
46    @NonNull
47    @Relationship(type = Neo4jLabels.HAS_TIMESERIES_TUPLE, direction = Direction.OUTGOING)
48    private TimeseriesTuple timeseriesTuple;
49  
50    @NotBlank
51    @Enumerated(EnumType.STRING)
52    private final DataPointValueType valueType;
53  
54    @NotBlank
55    private final Long timeseriesId;
56  
57    @NotBlank
58    @Relationship(type = Neo4jLabels.HAS_ANNOTATION, direction = Direction.OUTGOING)
59    private final List<SemanticAnnotation> annotations = new ArrayList<>();
60  
61    @Override
62    public String getUniqueId() {
63      return "timeseries-" + getTimeseriesId();
64    }
65  
66    @Override
67    public void addAnnotation(SemanticAnnotation annotation) {
68      annotations.add(annotation);
69    }
70  }