1 package de.dlr.shepard.common.neo4j.io;
2
3 import de.dlr.shepard.common.neo4j.entities.AbstractDataObject;
4 import de.dlr.shepard.common.neo4j.io.validation.NoDelimiterInMapKeys;
5 import java.util.HashMap;
6 import java.util.Map;
7 import java.util.Objects;
8 import lombok.Data;
9 import lombok.NoArgsConstructor;
10 import org.eclipse.microprofile.openapi.annotations.media.Schema;
11
12 @Data
13 @NoArgsConstructor
14 @Schema(name = "AbstractDataObject")
15 public abstract class AbstractDataObjectIO extends BasicEntityIO {
16
17 @Schema(nullable = true)
18 private String description;
19
20 @NoDelimiterInMapKeys
21 private Map<String, String> attributes = new HashMap<>();
22
23 protected AbstractDataObjectIO(AbstractDataObject dataObject) {
24 super(dataObject);
25 this.description = dataObject.getDescription();
26 this.attributes = dataObject.getAttributes();
27 }
28
29 @Override
30 public boolean equals(Object o) {
31 if (this == o) return true;
32 if (!super.equals(o)) return false;
33 if (!(o instanceof AbstractDataObjectIO)) return false;
34 AbstractDataObjectIO other = (AbstractDataObjectIO) o;
35 return (Objects.equals(description, other.description) && Objects.equals(attributes, other.attributes));
36 }
37
38 @Override
39 public int hashCode() {
40 final int prime = 31;
41 int result = super.hashCode();
42 result = prime * result + Objects.hash(description, attributes);
43 return result;
44 }
45 }