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