View Javadoc
1   package de.dlr.shepard.context.semantic.entities;
2   
3   import de.dlr.shepard.common.neo4j.entities.Named;
4   import de.dlr.shepard.common.util.Constants;
5   import de.dlr.shepard.common.util.HasId;
6   import java.util.Objects;
7   import lombok.Data;
8   import lombok.NoArgsConstructor;
9   import lombok.ToString;
10  import org.neo4j.ogm.annotation.GeneratedValue;
11  import org.neo4j.ogm.annotation.Id;
12  import org.neo4j.ogm.annotation.NodeEntity;
13  import org.neo4j.ogm.annotation.Relationship;
14  
15  @NodeEntity
16  @Data
17  @NoArgsConstructor
18  public class SemanticAnnotation implements HasId, Named {
19  
20    @Id
21    @GeneratedValue
22    private Long id;
23  
24    @Deprecated
25    public String getName() {
26      return "%s::%s".formatted(this.getPropertyName(), this.getValueName());
27    }
28  
29    private String propertyName;
30  
31    private String propertyIRI;
32  
33    private String valueName;
34  
35    private String valueIRI;
36  
37    @ToString.Exclude
38    @Relationship(type = Constants.PROPERTY_REPOSITORY)
39    private SemanticRepository propertyRepository;
40  
41    @ToString.Exclude
42    @Relationship(type = Constants.VALUE_REPOSITORY)
43    private SemanticRepository valueRepository;
44  
45    /**
46     * For testing purposes only
47     *
48     * @param id identifies the entity
49     */
50    public SemanticAnnotation(long id) {
51      this.id = id;
52    }
53  
54    @Override
55    public int hashCode() {
56      final int prime = 31;
57      var result = Objects.hash(id, propertyName, valueName, propertyIRI, valueIRI);
58      result = prime * result + HasId.hashcodeHelper(propertyRepository);
59      result = prime * result + HasId.hashcodeHelper(valueRepository);
60      return result;
61    }
62  
63    @Override
64    public boolean equals(Object obj) {
65      if (this == obj) return true;
66      if (obj == null) return false;
67      if (!(obj instanceof SemanticAnnotation other)) return false;
68      return (
69        Objects.equals(id, other.id) &&
70        Objects.equals(propertyName, other.propertyName) &&
71        Objects.equals(valueName, other.valueName) &&
72        Objects.equals(propertyIRI, other.propertyIRI) &&
73        Objects.equals(valueIRI, other.valueIRI) &&
74        HasId.equalsHelper(propertyRepository, other.propertyRepository) &&
75        HasId.equalsHelper(valueRepository, other.valueRepository)
76      );
77    }
78  
79    @Override
80    public String getUniqueId() {
81      return id.toString();
82    }
83  }