User.java
package de.dlr.shepard.neo4Core.entities;
import de.dlr.shepard.util.Constants;
import de.dlr.shepard.util.HasId;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import org.neo4j.ogm.annotation.Id;
import org.neo4j.ogm.annotation.NodeEntity;
import org.neo4j.ogm.annotation.Relationship;
import org.neo4j.ogm.annotation.Relationship.Direction;
@NodeEntity
@Data
@NoArgsConstructor
public class User implements HasId {
@Id
private String username;
private String firstName;
private String lastName;
private String email;
@ToString.Exclude
@Relationship(type = Constants.SUBSCRIBED_BY, direction = Direction.INCOMING)
private List<Subscription> subscriptions = new ArrayList<>();
@ToString.Exclude
@Relationship(type = Constants.BELONGS_TO, direction = Direction.INCOMING)
private List<ApiKey> apiKeys = new ArrayList<>();
/**
* For testing purposes only
*
* @param username identifies the user
*/
public User(String username) {
this.username = username;
}
/**
* Simple constructor
*
* @param username Username
* @param firstName First name
* @param lastName Last name
* @param email E-Mail Address
*/
public User(String username, String firstName, String lastName, String email) {
this.username = username;
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + Objects.hash(email, firstName, lastName, username);
result = prime * result + HasId.hashcodeHelper(apiKeys);
result = prime * result + HasId.hashcodeHelper(subscriptions);
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (!(obj instanceof User)) return false;
User other = (User) obj;
return (
HasId.equalsHelper(apiKeys, other.apiKeys) &&
HasId.equalsHelper(subscriptions, other.subscriptions) &&
Objects.equals(email, other.email) &&
Objects.equals(firstName, other.firstName) &&
Objects.equals(lastName, other.lastName) &&
Objects.equals(username, other.username)
);
}
@Override
public String getUniqueId() {
return username;
}
}