All Downloads are FREE. Search and download functionalities are using the official Maven repository.

fi.evolver.ai.vaadin.entity.UserProfile Maven / Gradle / Ivy

The newest version!
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 + "]";
	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy