View Javadoc
1   package de.dlr.shepard.context.collection.io;
2   
3   import de.dlr.shepard.common.neo4j.io.AbstractDataObjectIO;
4   import de.dlr.shepard.common.util.HasId;
5   import de.dlr.shepard.context.collection.entities.DataObject;
6   import java.util.Objects;
7   import lombok.Data;
8   import lombok.NoArgsConstructor;
9   import org.eclipse.microprofile.openapi.annotations.media.Schema;
10  
11  @Data
12  @NoArgsConstructor
13  @Schema(name = "DataObject")
14  public class DataObjectIO extends AbstractDataObjectIO {
15  
16    @Schema(readOnly = true, required = true)
17    private long collectionId;
18  
19    @Schema(readOnly = true, required = true)
20    private long[] referenceIds;
21  
22    @Schema(readOnly = true, required = true)
23    private long[] successorIds;
24  
25    private long[] predecessorIds;
26  
27    @Schema(readOnly = true, required = true)
28    private long[] childrenIds;
29  
30    @Schema(nullable = true, required = true)
31    private Long parentId;
32  
33    @Schema(readOnly = true, required = true)
34    private long[] incomingIds;
35  
36    public DataObjectIO(DataObject dataObject) {
37      super(dataObject);
38      this.collectionId = dataObject.getCollection().getShepardId();
39      this.referenceIds = extractShepardIds(dataObject.getReferences());
40      this.successorIds = extractShepardIds(dataObject.getSuccessors());
41      this.predecessorIds = extractShepardIds(dataObject.getPredecessors());
42      this.childrenIds = extractShepardIds(dataObject.getChildren());
43      this.parentId = dataObject.getParent() != null ? dataObject.getParent().getShepardId() : null;
44      this.incomingIds = extractShepardIds(dataObject.getIncoming());
45    }
46  
47    @Override
48    public boolean equals(Object o) {
49      if (this == o) return true;
50      if (!super.equals(o)) return false;
51      if (!(o instanceof DataObjectIO)) return false;
52      DataObjectIO other = (DataObjectIO) o;
53      return (
54        collectionId == other.collectionId &&
55        HasId.areEqualSets(referenceIds, other.referenceIds) &&
56        HasId.areEqualSets(successorIds, other.successorIds) &&
57        HasId.areEqualSets(predecessorIds, other.predecessorIds) &&
58        HasId.areEqualSets(childrenIds, other.childrenIds) &&
59        Objects.equals(parentId, other.parentId) &&
60        HasId.areEqualSets(incomingIds, other.incomingIds)
61      );
62    }
63  
64    @Override
65    public int hashCode() {
66      final int prime = 31;
67      int result = super.hashCode();
68      result = prime * result + ((Long) collectionId).hashCode();
69      result = prime * result + HasId.hashcodeHelper(referenceIds);
70      result = prime * result + HasId.hashcodeHelper(successorIds);
71      result = prime * result + HasId.hashcodeHelper(childrenIds);
72      result = prime * result + HasId.hashcodeHelper(incomingIds);
73      result = prime * result + HasId.hashcodeHelper(predecessorIds);
74      result = prime * result + Objects.hashCode(parentId);
75  
76      return result;
77    }
78  }