1 package de.dlr.shepard.common.neo4j.entities;
2
3 import de.dlr.shepard.common.util.Neo4jLabels;
4 import de.dlr.shepard.context.version.entities.Version;
5 import de.dlr.shepard.context.version.entities.VersionableEntity;
6 import java.util.Map;
7 import lombok.Data;
8 import lombok.EqualsAndHashCode;
9 import lombok.NoArgsConstructor;
10 import lombok.ToString;
11 import org.neo4j.ogm.annotation.Index;
12 import org.neo4j.ogm.annotation.NodeEntity;
13 import org.neo4j.ogm.annotation.Properties;
14 import org.neo4j.ogm.annotation.Relationship;
15
16 @NodeEntity(label = Neo4jLabels.VERSIONABLE_ENTITY)
17 @Data
18 @ToString(callSuper = true)
19 @NoArgsConstructor
20 @EqualsAndHashCode(callSuper = true)
21 public abstract class AbstractDataObject extends BasicEntity implements VersionableEntity {
22
23 @Index
24 private Long shepardId;
25
26 @Relationship(type = Neo4jLabels.HAS_VERSION)
27 protected Version version;
28
29 private String description;
30
31 @ToString.Exclude
32 @Properties(delimiter = "||")
33 private Map<String, String> attributes;
34
35
36
37
38
39
40 protected AbstractDataObject(long id) {
41 super(id);
42 }
43
44 @Override
45 public long getNumericId() {
46 return getShepardId();
47 }
48 }