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.Collection;
6 import lombok.Data;
7 import lombok.NoArgsConstructor;
8 import org.eclipse.microprofile.openapi.annotations.media.Schema;
9
10 @Data
11 @NoArgsConstructor
12 @Schema(name = "Collection")
13 public class CollectionIO extends AbstractDataObjectIO {
14
15 @Schema(readOnly = true, required = true)
16 private long[] dataObjectIds;
17
18 @Schema(readOnly = true, required = true)
19 private long[] incomingIds;
20
21 public CollectionIO(Collection collection) {
22 super(collection);
23 this.dataObjectIds = extractShepardIds(collection.getDataObjects());
24 this.incomingIds = extractShepardIds(collection.getIncoming());
25 }
26
27 @Override
28 public boolean equals(Object o) {
29 if (this == o) return true;
30 if (!super.equals(o)) return false;
31 if (!(o instanceof CollectionIO)) return false;
32 CollectionIO other = (CollectionIO) o;
33 return (
34 HasId.areEqualSets(dataObjectIds, other.dataObjectIds) && HasId.areEqualSets(incomingIds, other.incomingIds)
35 );
36 }
37
38 @Override
39 public int hashCode() {
40 final int prime = 31;
41 int result = super.hashCode();
42 result = prime * result + HasId.hashcodeHelper(dataObjectIds);
43 result = prime * result + HasId.hashcodeHelper(incomingIds);
44 return result;
45 }
46 }