bstlboard-back/src/main/java/de/bstly/board/model/LocalUser.java

259 lines
4.6 KiB
Java

/**
*
*/
package de.bstly.board.model;
import java.util.List;
import java.util.Map;
import javax.persistence.CollectionTable;
import javax.persistence.Column;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.Table;
import javax.persistence.Transient;
import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.google.common.collect.Maps;
import de.bstly.board.model.support.Types;
/**
* The Class LocalUser.
*/
@Entity
@Table(name = "users")
@JsonInclude(Include.NON_EMPTY)
public class LocalUser {
@Id
@Column(name = "username", nullable = false)
private String username;
@Column(name = "external_id", nullable = true)
private String externalId;
@JsonIgnore
@Column(name = "password_hash", nullable = true)
private String passwordHash;
@ElementCollection
@LazyCollection(LazyCollectionOption.FALSE)
@CollectionTable(name = "users_roles")
private List<String> roles;
@Lob
@Column(name = "about", nullable = true)
private String about;
@Column(name = "email", nullable = true)
private String email;
@Column(name = "locale", nullable = false, columnDefinition = "varchar(255) default 'en'")
private String locale;
@Column(name = "dark_theme", columnDefinition = "boolean default false")
private boolean darkTheme;
@ElementCollection
@LazyCollection(LazyCollectionOption.FALSE)
@CollectionTable(name = "users_settings")
private Map<String, String> settings;
@Transient
private Map<String, Object> metadata;
@Transient
private final Types type = Types.user;
/**
* Gets the username.
*
* @return the username
*/
public String getUsername() {
return username;
}
/**
* Sets the username.
*
* @param username the new username
*/
public void setUsername(String username) {
this.username = username;
}
/**
* Gets the external id.
*
* @return the external id
*/
public String getExternalId() {
return externalId;
}
/**
* Sets the external id.
*
* @param externalId the new external id
*/
public void setExternalId(String externalId) {
this.externalId = externalId;
}
/**
* Gets the password hash.
*
* @return the password hash
*/
public String getPasswordHash() {
return passwordHash;
}
/**
* Sets the password hash.
*
* @param passwordHash the new password hash
*/
public void setPasswordHash(String passwordHash) {
this.passwordHash = passwordHash;
}
/**
* Gets the roles.
*
* @return the roles
*/
public List<String> getRoles() {
return roles;
}
/**
* Sets the roles.
*
* @param roles the new roles
*/
public void setRoles(List<String> roles) {
this.roles = roles;
}
/**
* Gets the about.
*
* @return the about
*/
public String getAbout() {
return about;
}
/**
* Sets the about.
*
* @param about the new about
*/
public void setAbout(String about) {
this.about = about;
}
/**
* Gets the email.
*
* @return the email
*/
public String getEmail() {
return email;
}
/**
* Sets the email.
*
* @param email the new email
*/
public void setEmail(String email) {
this.email = email;
}
/**
* Gets the locale.
*
* @return the locale
*/
public String getLocale() {
return locale;
}
/**
* Sets the locale.
*
* @param locale the new locale
*/
public void setLocale(String locale) {
this.locale = locale;
}
/**
* Checks if is dark theme.
*
* @return true, if is dark theme
*/
public boolean isDarkTheme() {
return darkTheme;
}
/**
* Sets the dark theme.
*
* @param darkTheme the new dark theme
*/
public void setDarkTheme(boolean darkTheme) {
this.darkTheme = darkTheme;
}
/**
* Gets the settings.
*
* @return the settings
*/
public Map<String, String> getSettings() {
return settings;
}
/**
* Sets the settings.
*
* @param settings the settings
*/
public void setSettings(Map<String, String> settings) {
this.settings = settings;
}
/**
* Gets the metadata.
*
* @return the metadata
*/
public Map<String, Object> getMetadata() {
if (metadata == null) {
metadata = Maps.newHashMap();
}
return metadata;
}
/**
* Sets the metadata.
*
* @param metadata the metadata
*/
public void setMetadata(Map<String, Object> metadata) {
this.metadata = metadata;
}
/**
* Gets the type.
*
* @return the type
*/
public Types getType() {
return type;
}
}