package es.uniovi.asw.trivial.db.impl.local.persistencia.model;
import java.io.Serializable;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Transient;
@SuppressWarnings("serial")
@Entity
@Table(name="TUSUARIOS")
public class Usuario implements Serializable{
@Id @GeneratedValue
private Long id;
private String usuario;
private String contrasenia;
private String nombre;
private boolean privilegiado;
@Transient
private String color;
@Transient
private int casillaActual;
@Transient
private String[] quesitos;
@Transient
private String icono;
@OneToMany(mappedBy = "usuario")
protected Set<UsuariosPartida> partidas= new HashSet<UsuariosPartida>();
public Set<UsuariosPartida> getPartida() {
return Collections.unmodifiableSet(partidas);
}
public Set<UsuariosPartida> _getPartida() {
return partidas;
}
public Usuario(){
super();
}
public Usuario(Long id, String usuario, String contrasenia, String nombre){
this.id = id;
this.usuario = usuario;
this.contrasenia = contrasenia;
this.nombre = nombre;
this.color = "";
this.casillaActual = -1;
this.quesitos = new String[4];
this.privilegiado = false;
}
public void addQuesito(String categoria) {
if(quesitos == null)
quesitos = new String[4];
if(categoria.equalsIgnoreCase("espectáculos"))
quesitos[0] = categoria;
else if(categoria.equalsIgnoreCase("ciencias y naturaleza"))
quesitos[1] = categoria;
else if(categoria.equalsIgnoreCase("geografĂa"))
quesitos[2] = categoria;
else if(categoria.equalsIgnoreCase("historia"))
quesitos[3] = categoria;
actualizarIconoQuesitos();
}
public void actualizarIconoQuesitos(){
icono = icono.split("_")[0];
for(String quesito : quesitos){
if(quesito != null)
icono += "_"+quesito.replace(" ", "");
else
icono += "_"+quesito;
}
icono += ".png";
}
public Long getId() {
return id;
}
public void setId(Long id){
this.id=id;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public void setContrasenia(String contrasenia) {
this.contrasenia = contrasenia;
}
public void setColor(String colorJugador) {
this.color = colorJugador;
}
public void setCasillaActual(int casillaActual){
this.casillaActual = casillaActual;
}
public int getCasillaActual(){
return casillaActual;
}
public void setIcono(String icono){
this.icono = icono;
}
public String getIcono(){
return icono;
}
public String getContrasenia(){
return contrasenia;
}
public String getUsuario() {
return usuario;
}
public void setUsuario(String usuario) {
this.usuario = usuario;
}
public boolean isPrivilegiado() {
return privilegiado;
}
public boolean todosLosQuesitos() {
for(String string : quesitos)
if(string == null)
return false;
return true;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.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;
Usuario other = (Usuario) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
return true;
}
}