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

br.com.jhonsapp.bootstrap.user.model.FinalUser Maven / Gradle / Ivy

package br.com.jhonsapp.bootstrap.user.model;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OneToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;

import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotBlank;
import org.hibernate.validator.constraints.NotEmpty;

import br.com.jhonsapp.bootstrap.user.model.roleGroup.RoleGroup;
import br.com.jhonsapp.bootstrap.user.model.token.android.AndroidToken;
import br.com.jhonsapp.bootstrap.user.model.token.android.FirebaseToken;

@Entity
@Table(name = "final_user")
@SequenceGenerator(name = "final_user_seq_generator", sequenceName = "final_user_seq", allocationSize = 1, initialValue = 1)
public class FinalUser extends AbstractUser implements User{

	/**
	 * Generated serial version id created at 13 October 2017.
	 */
	private static final long serialVersionUID = -610977004964164631L;

	
	@Id
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "final_user_seq_generator")
	private long id;
	
	private String name;
	
	@Column(unique=true, name="user_name")
	private String userName;
	
	private String password;
	
	private boolean active;
	
	@ManyToMany
	@JoinTable(name = "final_user_role_group", joinColumns = @JoinColumn(name = "id_final_user"), inverseJoinColumns = @JoinColumn(name = "id_role_group"))
	private List groups = new ArrayList();

	@OneToOne(cascade= {CascadeType.PERSIST,CascadeType.MERGE}, targetEntity=AndroidToken.class)
	private AndroidToken androidToken;

	public FinalUser() {
		if(this.androidToken == null)
			this.androidToken = new AndroidToken();
	}
	
	public FinalUser(String name, String email, String password) { 
		
		this.name = name;
		this.userName = email;
		this.password = password;
		this.setActive(true);
		this.androidToken = new AndroidToken();
	}
	
	public long getId() {
		return id;
	}

	@Override @NotBlank
	public String getName() {
		return this.name;
	}

	@Override
	public void setName(String name) {
		this.name = name;
	}
	
	@Override @NotBlank @Email
	public String getUserName() {
		return userName;
	}
	
	@Override
	public void setUserName(String userName) {
		this.userName = userName;
	}

	@Override @NotBlank 
	public String getPassword() {
		return password;
	}

	@Override
	public void setPassword(String password) {
		this.password = password;
	}
	
	@Override
	public boolean isActive() {
		return active;
	}

	@Override
	public void setActive(boolean active) {
		this.active = active;
	}

	@Override
	public void addRoleGroup(RoleGroup group) {
		if(!groups.contains(group))
			groups.add(group);
	}
	
	@Override
	public void removeRoleGroup(RoleGroup group) {
		groups.remove(group);
	}
	
	@Override @NotEmpty
	public List getRoleGroups() {
		return groups;
	}
	
	@Override @NotNull
	public FirebaseToken getAndroidToken() {
		return this.androidToken;
	}


	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((userName == null) ? 0 : userName.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		FinalUser other = (FinalUser) obj;
		if (userName == null) {
			if (other.userName != null)
				return false;
		} else if (!userName.equals(other.userName))
			return false;
		return true;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy