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.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     * For testing purposes only
39     *
40     * @param id identifies the entity
41     */
42    public Collection(long id) {
43      super(id);
44    }
45  
46    /**
47     * Add one related DataObject
48     *
49     * @param dataObject the dataObject to add
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  }