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

org.devocative.demeter.entity.User Maven / Gradle / Ivy

The newest version!
package org.devocative.demeter.entity;

import org.hibernate.envers.Audited;
import org.hibernate.envers.NotAudited;
import org.hibernate.envers.RelationTargetAuditMode;

import javax.persistence.*;
import java.util.Date;
import java.util.List;

@Audited
@Entity
@Table(name = "t_dmt_user", uniqueConstraints = {
	@UniqueConstraint(name = User.UQ_CONST, columnNames = {"c_username"})
})
public class User implements IRowMode, ICreationDate, ICreatorUser, IModificationDate, IModifierUser {
	public static final String UQ_CONST = "uk_dmt_user_username";

	private static final long serialVersionUID = 1580426811623477680L;

	@Id
	private Long id;

	//@NotNull
	@Column(name = "c_username", nullable = false)
	private String username;

	@NotAudited
	@Column(name = "c_password")
	private String password;

	@Column(name = "e_auth_mech", nullable = false)
	@Convert(converter = EAuthMechanism.Converter.class)
	private EAuthMechanism authMechanism = EAuthMechanism.DATABASE;

	//@NotNull
	@Column(name = "e_status", nullable = false)
	@Convert(converter = EUserStatus.Converter.class)
	private EUserStatus status = EUserStatus.ENABLED;

	@Column(name = "e_locale")
	@Convert(converter = ELocale.Converter.class)
	private ELocale locale;

	@Column(name = "e_cal_type")
	@Convert(converter = ECalendar.Converter.class)
	private ECalendar calendarType;

	//TODO
	@Transient
	private String timeZone;

	@Column(name = "e_date_pattern")
	@Convert(converter = EDatePatternType.Converter.class)
	private EDatePatternType datePatternType;

	@Column(name = "e_date_time_pattern")
	@Convert(converter = EDateTimePatternType.Converter.class)
	private EDateTimePatternType dateTimePatternType;

	@NotAudited
	@Column(name = "d_last_login", columnDefinition = "date")
	private Date lastLoginDate;

	@Column(name = "b_admin", nullable = false)
	private Boolean admin = false;

	@Column(name = "n_session_timeout")
	private Integer sessionTimeout;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "id", insertable = false, updatable = false, foreignKey = @ForeignKey(name = "user2person"))
	private Person person;

	@OrderBy("name")
	@ManyToMany(fetch = FetchType.LAZY)
	@JoinTable(name = "mt_dmt_user_role",
		joinColumns = {@JoinColumn(name = "f_user", nullable = false)},
		inverseJoinColumns = {@JoinColumn(name = "f_role", nullable = false)},
		foreignKey = @ForeignKey(name = "userRole2user"),
		inverseForeignKey = @ForeignKey(name = "userRole2role"),
		uniqueConstraints = {@UniqueConstraint(name = "uk_dmt_mtUserRole", columnNames = {"f_user", "f_role"})}
	)
	private List roles;

	@Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
	@ManyToMany(fetch = FetchType.LAZY)
	@JoinTable(name = "mt_dmt_prvlg_user_perm",
		joinColumns = {@JoinColumn(name = "f_user", nullable = false)},
		inverseJoinColumns = {@JoinColumn(name = "f_prvlg", nullable = false)},
		foreignKey = @ForeignKey(name = "prvlgUserPerm2user"),
		inverseForeignKey = @ForeignKey(name = "prvlgUserPerm2prvlg"),
		uniqueConstraints = {@UniqueConstraint(name = "uk_dmt_mtPrvlgUserPerm", columnNames = {"f_user", "f_prvlg"})}
	)
	private List permissions;

	@Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
	@ManyToMany(fetch = FetchType.LAZY)
	@JoinTable(name = "mt_dmt_prvlg_user_deny",
		joinColumns = {@JoinColumn(name = "f_user", nullable = false)},
		inverseJoinColumns = {@JoinColumn(name = "f_prvlg", nullable = false)},
		foreignKey = @ForeignKey(name = "prvlgUserDeny2user"),
		inverseForeignKey = @ForeignKey(name = "prvlgUserDeny2prvlg"),
		uniqueConstraints = {@UniqueConstraint(name = "uk_dmt_mtPrvlgUserDeny", columnNames = {"f_user", "f_prvlg"})}
	)
	private List denials;

	// ------------------------------

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public EAuthMechanism getAuthMechanism() {
		return authMechanism;
	}

	public void setAuthMechanism(EAuthMechanism authMechanism) {
		this.authMechanism = authMechanism;
	}

	public EUserStatus getStatus() {
		return status;
	}

	public void setStatus(EUserStatus status) {
		this.status = status;
	}

	public ELocale getLocale() {
		return locale;
	}

	public void setLocale(ELocale locale) {
		this.locale = locale;
	}

	public ECalendar getCalendarType() {
		return calendarType;
	}

	public void setCalendarType(ECalendar calendarType) {
		this.calendarType = calendarType;
	}

	public String getTimeZone() {
		return timeZone;
	}

	public void setTimeZone(String timeZone) {
		this.timeZone = timeZone;
	}

	public EDatePatternType getDatePatternType() {
		return datePatternType;
	}

	public void setDatePatternType(EDatePatternType datePatternType) {
		this.datePatternType = datePatternType;
	}

	public EDateTimePatternType getDateTimePatternType() {
		return dateTimePatternType;
	}

	public void setDateTimePatternType(EDateTimePatternType dateTimePatternType) {
		this.dateTimePatternType = dateTimePatternType;
	}

	public Date getLastLoginDate() {
		return lastLoginDate;
	}

	public void setLastLoginDate(Date lastLoginDate) {
		this.lastLoginDate = lastLoginDate;
	}

	public Boolean getAdmin() {
		return admin;
	}

	public void setAdmin(Boolean admin) {
		this.admin = admin;
	}

	public Integer getSessionTimeout() {
		return sessionTimeout;
	}

	public void setSessionTimeout(Integer sessionTimeout) {
		this.sessionTimeout = sessionTimeout;
	}

	public Person getPerson() {
		return person;
	}

	public void setPerson(Person person) {
		this.person = person;
	}

	public List getRoles() {
		return roles;
	}

	public void setRoles(List roles) {
		this.roles = roles;
	}

	public List getPermissions() {
		return permissions;
	}

	public void setPermissions(List permissions) {
		this.permissions = permissions;
	}

	public List getDenials() {
		return denials;
	}

	public void setDenials(List denials) {
		this.denials = denials;
	}

	// ---------------

	@Override
	public ERowMode getRowMode() {
		return getPersonSafely().getRowMode();
	}

	@Override
	public void setRowMode(ERowMode rowMode) {
		getPersonSafely().setRowMode(rowMode);
	}

	@Override
	public Date getCreationDate() {
		return getPersonSafely().getCreationDate();
	}

	@Override
	public void setCreationDate(Date date) {
		getPersonSafely().setCreationDate(date);
	}

	@Override
	public Long getCreatorUserId() {
		return getPersonSafely().getCreatorUserId();
	}

	@Override
	public void setCreatorUserId(Long userId) {
		getPersonSafely().setCreatorUserId(userId);
	}

	@Override
	public Date getModificationDate() {
		return getPersonSafely().getModificationDate();
	}

	@Override
	public void setModificationDate(Date date) {
		getPersonSafely().setModificationDate(date);
	}

	@Override
	public Long getModifierUserId() {
		return getPersonSafely().getModifierUserId();
	}

	@Override
	public void setModifierUserId(Long userId) {
		getPersonSafely().setModifierUserId(userId);
	}

	@Override
	public Integer getVersion() {
		return getPersonSafely().getVersion();
	}

	@Override
	public void setVersion(Integer version) {
		getPersonSafely().setVersion(version);
	}

	// ---------------

	@Override
	public boolean equals(Object o) {
		if (this == o) return true;
		if (!(o instanceof User)) return false;

		User user = (User) o;

		if (getId() != null ? !getId().equals(user.getId()) : user.getId() != null) return false;

		return true;
	}

	@Override
	public int hashCode() {
		return getId() != null ? getId().hashCode() : 0;
	}

	@Override
	public String toString() {
		return getUsername() != null ? getUsername() : String.format("[%s]", getId());
	}

	// ---------------

	public Person getPersonSafely() {
		if (getPerson() == null) {
			setPerson(new Person());
		}
		return getPerson();
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy