1 package de.dlr.shepard.context.references.structureddata.io;
2
3 import de.dlr.shepard.common.util.HasId;
4 import de.dlr.shepard.context.references.basicreference.io.BasicReferenceIO;
5 import de.dlr.shepard.context.references.structureddata.entities.StructuredDataReference;
6 import de.dlr.shepard.data.structureddata.entities.StructuredData;
7 import jakarta.validation.constraints.NotEmpty;
8 import jakarta.validation.constraints.NotNull;
9 import lombok.Data;
10 import lombok.NoArgsConstructor;
11 import org.eclipse.microprofile.openapi.annotations.media.Schema;
12
13 @Data
14 @NoArgsConstructor
15 @Schema(name = "StructuredDataReference")
16 public class StructuredDataReferenceIO extends BasicReferenceIO {
17
18 @NotEmpty
19 @Schema(required = true)
20 private String[] structuredDataOids;
21
22 @NotNull
23 @Schema(required = true)
24 private long structuredDataContainerId;
25
26 public StructuredDataReferenceIO(StructuredDataReference ref) {
27 super(ref);
28 this.structuredDataOids = ref.getStructuredDatas().stream().map(StructuredData::getOid).toArray(String[]::new);
29 this.structuredDataContainerId = ref.getStructuredDataContainer() != null
30 ? ref.getStructuredDataContainer().getId()
31 : -1;
32 }
33
34 @Override
35 public boolean equals(Object o) {
36 if (this == o) return true;
37 if (o == null) return false;
38 if (!super.equals(o)) return false;
39 if (this.getClass() != o.getClass()) return false;
40 StructuredDataReferenceIO other = (StructuredDataReferenceIO) o;
41 return (
42 structuredDataContainerId == other.structuredDataContainerId &&
43 HasId.areEqualSets(structuredDataOids, other.structuredDataOids)
44 );
45 }
46
47 @Override
48 public int hashCode() {
49 final int prime = 31;
50 int result = super.hashCode();
51 result = prime * result + ((Long) structuredDataContainerId).hashCode();
52 result = prime * result + HasId.hashcodeHelper(structuredDataOids);
53 return result;
54 }
55 }