package it.enea.cruise.model.user;

import java.io.Serializable;
import java.util.Objects;

import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.persistence.Transient;

/**
 * 
 * @author gianluca
 * Questa classe rappresenta l'ID della tabella users_communities che 
 * non esiste all'interno del DB. 
 * Attraverso questa classe e' possibile creare una relazione tra Users e 
 * Communities che contenga anche altre informazioni.
 * I dati di questa classe vengono registrati all'interno dell'oggetto
 * UserCommunity in cui questa classe e' inserita.
 */
@Embeddable
public class UserRoleId implements Serializable {
 
    /*
	 * Properties 
	 */
	@Transient
	private static final long serialVersionUID = 1L;

	@Column ( name = "userid")
    private Long userid;
	@Column ( name = "roleid")
    private Long roleid;
	@Column ( name = "communityid")
    private Long communityid;

	/*
	 * Generic Methods 
	 */	
	
    public UserRoleId() {}
 
    public UserRoleId(
        Long userId,
        Long roleid,
        Long communityid) {
        this.setUserId(userId);
        this.setRoleId(roleid);
        this.setCommunityId(communityid);
    }
 
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
 
        if (o == null || getClass() != o.getClass())
            return false;
 
        UserRoleId that = (UserRoleId) o;
        return Objects.equals(this, that);
    }
 
    @Override
    public int hashCode() {
        return Objects.hash(this);
    }

    /*
	 * Getters and setters
	 */	
    
	public Long getUserId() {
		return userid;
	}

	public void setUserId(Long userId) {
		this.userid = userId;
	}

	public Long getRoleId() {
		return roleid;
	}

	public void setRoleId(Long roleid) {
		this.roleid = roleid;
	}
	
	public Long getCommunityId() {
		return communityid;
	}

	public void setCommunityId(Long communityid) {
		this.communityid = communityid;
	}
}