View Javadoc
1   package de.dlr.shepard.auth.apikey.entities;
2   
3   import de.dlr.shepard.auth.users.entities.User;
4   import de.dlr.shepard.common.neo4j.entities.HasCreationDate;
5   import de.dlr.shepard.common.neo4j.entities.Named;
6   import de.dlr.shepard.common.util.Constants;
7   import de.dlr.shepard.common.util.HasId;
8   import java.util.Date;
9   import java.util.Objects;
10  import java.util.UUID;
11  import lombok.Data;
12  import lombok.NoArgsConstructor;
13  import lombok.ToString;
14  import org.neo4j.ogm.annotation.GeneratedValue;
15  import org.neo4j.ogm.annotation.Id;
16  import org.neo4j.ogm.annotation.NodeEntity;
17  import org.neo4j.ogm.annotation.Relationship;
18  import org.neo4j.ogm.annotation.typeconversion.Convert;
19  import org.neo4j.ogm.annotation.typeconversion.DateLong;
20  import org.neo4j.ogm.id.UuidStrategy;
21  import org.neo4j.ogm.typeconversion.UuidStringConverter;
22  
23  @NodeEntity
24  @Data
25  @NoArgsConstructor
26  public class ApiKey implements HasId, Named, HasCreationDate {
27  
28    @Id
29    @GeneratedValue(strategy = UuidStrategy.class)
30    @Convert(UuidStringConverter.class)
31    private UUID uid;
32  
33    private String name;
34  
35    @DateLong
36    private Date createdAt;
37  
38    private String jws;
39  
40    @ToString.Exclude
41    @Relationship(type = Constants.BELONGS_TO)
42    private User belongsTo;
43  
44    public ApiKey(String name, Date createdAt, User belongsTo) {
45      this.name = name;
46      this.createdAt = createdAt;
47      this.belongsTo = belongsTo;
48    }
49  
50    /**
51     * For testing purposes only
52     *
53     * @param uid identifies the entity
54     */
55    public ApiKey(UUID uid) {
56      this.uid = uid;
57    }
58  
59    @Override
60    public String getUniqueId() {
61      return uid.toString();
62    }
63  
64    @Override
65    public int hashCode() {
66      final int prime = 31;
67      int result = 1;
68      result = prime * result + Objects.hash(createdAt, jws, name, uid);
69      result = prime * result + HasId.hashcodeHelper(belongsTo);
70      return result;
71    }
72  
73    @Override
74    public boolean equals(Object obj) {
75      if (this == obj) return true;
76      if (!(obj instanceof ApiKey)) return false;
77      ApiKey other = (ApiKey) obj;
78      return (
79        HasId.equalsHelper(belongsTo, other.belongsTo) &&
80        Objects.equals(createdAt, other.createdAt) &&
81        Objects.equals(jws, other.jws) &&
82        Objects.equals(name, other.name) &&
83        Objects.equals(uid, other.uid)
84      );
85    }
86  }