1 package de.dlr.shepard.context.references.timeseriesreference.model;
2
3 import de.dlr.shepard.common.util.Constants;
4 import de.dlr.shepard.common.util.HasId;
5 import de.dlr.shepard.context.references.basicreference.entities.BasicReference;
6 import de.dlr.shepard.data.timeseries.model.TimeseriesContainer;
7 import java.util.ArrayList;
8 import java.util.List;
9 import java.util.Objects;
10 import lombok.Data;
11 import lombok.NoArgsConstructor;
12 import lombok.ToString;
13 import org.neo4j.ogm.annotation.NodeEntity;
14 import org.neo4j.ogm.annotation.Relationship;
15
16 @NodeEntity
17 @Data
18 @NoArgsConstructor
19 public class TimeseriesReference extends BasicReference {
20
21 private long start;
22
23 private long end;
24
25 @Relationship(type = Constants.HAS_PAYLOAD)
26 private List<ReferencedTimeseriesNodeEntity> referencedTimeseriesList = new ArrayList<>();
27
28 @ToString.Exclude
29 @Relationship(type = Constants.IS_IN_CONTAINER)
30 private TimeseriesContainer timeseriesContainer;
31
32
33
34
35
36
37 public TimeseriesReference(long id) {
38 super(id);
39 }
40
41 public void addTimeseries(ReferencedTimeseriesNodeEntity timeseries) {
42 this.referencedTimeseriesList.add(timeseries);
43 }
44
45 @Override
46 public int hashCode() {
47 final int prime = 31;
48 int result = super.hashCode();
49 result = prime * result + Objects.hash(end, start, referencedTimeseriesList);
50 result = prime * result + HasId.hashcodeHelper(timeseriesContainer);
51 return result;
52 }
53
54 @Override
55 public boolean equals(Object obj) {
56 if (this == obj) return true;
57 if (!super.equals(obj)) return false;
58 if (!(obj instanceof TimeseriesReference)) return false;
59 TimeseriesReference other = (TimeseriesReference) obj;
60 return (
61 end == other.end &&
62 start == other.start &&
63 Objects.equals(referencedTimeseriesList, other.referencedTimeseriesList) &&
64 HasId.equalsHelper(timeseriesContainer, other.timeseriesContainer)
65 );
66 }
67 }