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