fi.evolver.ai.vaadin.entity.UserProfile Maven / Gradle / Ivy
package fi.evolver.ai.vaadin.entity;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
import jakarta.persistence.*;
@Entity
@Table(name="user_profile")
public class UserProfile {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private long id;
@Column(name="username")
private String username;
@Column(name="language")
private String language;
@OneToMany(mappedBy="userProfile", cascade=CascadeType.ALL, orphanRemoval=true, fetch=FetchType.EAGER)
@OrderBy("id")
@Fetch(value = FetchMode.SUBSELECT)
private List parameters;
public UserProfile() {}
public UserProfile(String username) {
this.username = username;
this.parameters = new ArrayList<>();
}
public long getId() {
return id;
}
public String getUsername() {
return username;
}
public String getLanguage() {
return language;
}
public void setLanguage(String language) {
this.language = language;
}
private Optional getUserProfileParameter(String key) {
return parameters.stream()
.filter(param -> param.getKey().equals(key))
.findFirst();
}
public Optional getParameter(String key) {
return getUserProfileParameter(key)
.map(UserProfileParameter::getValue);
}
public void setParameter(String key, String value) {
getUserProfileParameter(key).ifPresentOrElse(
p -> p.setValue(value),
() -> parameters.add(new UserProfileParameter(this, key, value)));
}
@Override
public String toString() {
return "UserProfile [id=" + id + ", username=" + username + ", language=" + language +
", userProfileParameters=" + parameters + "]";
}
}