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 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     * For testing purposes only
34     *
35     * @param id identifies the entity
36     */
37    public Collection(long id) {
38      super(id);
39    }
40  
41    /**
42     * Add one related DataObject
43     *
44     * @param dataObject the dataObject to add
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  }