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