package es.uniovi.asw.trivial.db.impl.local.persistencia.model;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@SuppressWarnings("serial")
@Entity
@Table(name="TPREGUNTAS")
public class Pregunta implements Serializable{
	@Id @GeneratedValue 
	private Long id;
	private String pregunta;
	private String categoria;
	
	@OneToMany(mappedBy = "pregunta")
	private List<Respuesta> respuestas = new ArrayList<Respuesta>();

	public void addRespuesta(Respuesta respuesta){
		respuesta._setPregunta(this);
		respuestas.add(respuesta);
	}
	
	public List<Respuesta> getRespuestas() {
		return respuestas;
	}

	public void setRespuestas(List<Respuesta> respuestas) {
		this.respuestas = respuestas;
	}

	public Pregunta(Long id, String pregunta, String categoria) {
		super();
		this.id = id;
		this.pregunta = pregunta;
		this.categoria = categoria;
	}
	
	public Pregunta(String pregunta, String categoria) {
		this.pregunta = pregunta;
		this.categoria = categoria;
	}

	public Pregunta() {
		super();
	}

	public Long getId() {
		return id;
	}

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

	public String getPregunta() {
		return pregunta;
	}

	public void setPregunta(String pregunta) {
		this.pregunta = pregunta;
	}

	public String getCategoria() {
		return categoria;
	}

	public void setCategoria(String categoria) {
		this.categoria = categoria;
	}

	@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;
		Pregunta other = (Pregunta) obj;
		if (id == null) {
			if (other.id != null)
				return false;
		} else if (!id.equals(other.id))
			return false;
		return true;
	}

	public Respuesta getRespuestaCorrecta() {
		Iterator<Respuesta> it = respuestas.iterator() ;
		while(it.hasNext()){
			Respuesta  r= it.next();
			if(r.isCorrecta()){
				return r;
			}
		}
		return null;
	}
}
