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 }