1 package de.dlr.shepard.context.collection.entities;
2
3 import de.dlr.shepard.auth.permission.model.Permissions;
4 import de.dlr.shepard.common.neo4j.entities.AbstractDataObject;
5 import de.dlr.shepard.common.util.Constants;
6 import de.dlr.shepard.common.util.HasId;
7 import de.dlr.shepard.context.references.dataobject.entities.CollectionReference;
8 import java.util.ArrayList;
9 import java.util.List;
10 import lombok.Data;
11 import lombok.NoArgsConstructor;
12 import lombok.ToString;
13 import org.neo4j.ogm.annotation.NodeEntity;
14 import org.neo4j.ogm.annotation.Relationship;
15 import org.neo4j.ogm.annotation.Relationship.Direction;
16
17 @NodeEntity
18 @Data
19 @ToString(callSuper = true, onlyExplicitlyIncluded = true)
20 @NoArgsConstructor
21 public class Collection extends AbstractDataObject {
22
23 @Relationship(type = Constants.HAS_DATAOBJECT)
24 private List<DataObject> dataObjects = new ArrayList<>();
25
26 @Relationship(type = Constants.POINTS_TO, direction = Direction.INCOMING)
27 private List<CollectionReference> incoming = new ArrayList<>();
28
29 @Relationship(type = Constants.HAS_PERMISSIONS)
30 private Permissions permissions;
31
32
33
34
35
36
37 public Collection(long id) {
38 super(id);
39 }
40
41
42
43
44
45
46 public void addDataObject(DataObject dataObject) {
47 dataObjects.add(dataObject);
48 }
49
50 @Override
51 public int hashCode() {
52 final int prime = 31;
53 int result = super.hashCode();
54 result = prime * result + HasId.hashcodeHelper(dataObjects);
55 result = prime * result + HasId.hashcodeHelper(incoming);
56 result = prime * result + HasId.hashcodeHelper(permissions);
57 result = prime * result + HasId.hashcodeHelper(version);
58 return result;
59 }
60
61 @Override
62 public boolean equals(Object obj) {
63 if (this == obj) return true;
64 if (!super.equals(obj)) return false;
65 if (!(obj instanceof Collection)) return false;
66 Collection other = (Collection) obj;
67 return (
68 HasId.areEqualSetsByUniqueId(dataObjects, other.dataObjects) &&
69 HasId.areEqualSetsByUniqueId(incoming, other.incoming) &&
70 HasId.equalsHelper(permissions, other.permissions) &&
71 HasId.equalsHelper(version, other.version)
72 );
73 }
74 }