ApiKey.java

  1. package de.dlr.shepard.neo4Core.entities;

  2. import de.dlr.shepard.util.Constants;
  3. import de.dlr.shepard.util.HasId;
  4. import java.util.Date;
  5. import java.util.Objects;
  6. import java.util.UUID;
  7. import lombok.Data;
  8. import lombok.NoArgsConstructor;
  9. import lombok.ToString;
  10. import org.neo4j.ogm.annotation.GeneratedValue;
  11. import org.neo4j.ogm.annotation.Id;
  12. import org.neo4j.ogm.annotation.NodeEntity;
  13. import org.neo4j.ogm.annotation.Relationship;
  14. import org.neo4j.ogm.annotation.typeconversion.Convert;
  15. import org.neo4j.ogm.annotation.typeconversion.DateLong;
  16. import org.neo4j.ogm.id.UuidStrategy;
  17. import org.neo4j.ogm.typeconversion.UuidStringConverter;

  18. @NodeEntity
  19. @Data
  20. @NoArgsConstructor
  21. public class ApiKey implements HasId {

  22.   @Id
  23.   @GeneratedValue(strategy = UuidStrategy.class)
  24.   @Convert(UuidStringConverter.class)
  25.   private UUID uid;

  26.   private String name;

  27.   @DateLong
  28.   private Date createdAt;

  29.   private String jws;

  30.   @ToString.Exclude
  31.   @Relationship(type = Constants.BELONGS_TO)
  32.   private User belongsTo;

  33.   public ApiKey(String name, Date createdAt, User belongsTo) {
  34.     this.name = name;
  35.     this.createdAt = createdAt;
  36.     this.belongsTo = belongsTo;
  37.   }

  38.   /**
  39.    * For testing purposes only
  40.    *
  41.    * @param uid identifies the entity
  42.    */
  43.   public ApiKey(UUID uid) {
  44.     this.uid = uid;
  45.   }

  46.   @Override
  47.   public String getUniqueId() {
  48.     return uid.toString();
  49.   }

  50.   @Override
  51.   public int hashCode() {
  52.     final int prime = 31;
  53.     int result = 1;
  54.     result = prime * result + Objects.hash(createdAt, jws, name, uid);
  55.     result = prime * result + HasId.hashcodeHelper(belongsTo);
  56.     return result;
  57.   }

  58.   @Override
  59.   public boolean equals(Object obj) {
  60.     if (this == obj) return true;
  61.     if (!(obj instanceof ApiKey)) return false;
  62.     ApiKey other = (ApiKey) obj;
  63.     return (
  64.       HasId.equalsHelper(belongsTo, other.belongsTo) &&
  65.       Objects.equals(createdAt, other.createdAt) &&
  66.       Objects.equals(jws, other.jws) &&
  67.       Objects.equals(name, other.name) &&
  68.       Objects.equals(uid, other.uid)
  69.     );
  70.   }
  71. }