/*
 * Created on May 10, 2004
 *
 * To change the template for this generated file go to
 * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
 */
package modelo;


import java.util.Collection;
import java.util.Date;


/**
 * @author gas y jpg
 *
 * To change the template for this generated type comment go to
 * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
 */
public class Requerimiento {


	protected String nombre;
	
	protected int prioridad;
	
	protected String descripcion;

	protected TipoRequerimiento tipoRequerimiento;

	protected Estado estadoActual;

	protected Collection historia_Estados;
	
	public Requerimiento(){
	}

	public Requerimiento(String nombre,int prioridad, String desc, TipoRequerimiento tr,
						Estado estActual, Collection histEstados){
		this.setNombre(nombre);
		this.setPrioridad(prioridad);
		this.setDescripcion(desc);
		this.setTipoRequerimiento(tr);
		this.setEstadoActual(estActual);
		this.setHistoria_Estados(histEstados);
	}
	public Requerimiento(String nombre,int prioridad, String desc, TipoRequerimiento tr,
							 Collection histEstados){
		this(nombre, prioridad, desc, tr, null, histEstados);						 
	}
	
	
	public int getPrioridad() {
		return prioridad;
	}

	public void setPrioridad(int prioridad) {
		this.prioridad = prioridad;
	}

	public TipoRequerimiento getTipoRequerimiento() {
		return tipoRequerimiento;
	}

	public void setTipoRequerimiento(TipoRequerimiento tipoRequerimiento) {
		this.tipoRequerimiento = tipoRequerimiento;
	}

	public Collection getHistoria_Estados() {
		return historia_Estados;
	}

	public void setHistoria_Estados(Collection historia_Estados) {
		this.historia_Estados = historia_Estados;
	}

	public Estado getEstadoActual() {
		return estadoActual;
	}

	public void setEstadoActual(Estado estadoActual) {
		this.estadoActual = estadoActual;
	}

	public Collection nextStates() {
		return null;
	}

	public void changeToState(RecorridoEstado newState, Usuario resp) {
		Estado estadoActual=this.getEstadoActual();
		estadoActual.setFecha_hasta(new Date());
		this.addHistoriaEstado(estadoActual);
		estadoActual = new Estado(newState,resp,new Date());
		this.setEstadoActual(estadoActual);
	}

	/**
	 * @return
	 */
	public String getNombre() {
		return nombre;
	}

	/**
	 * @param string
	 */
	public void setNombre(String string) {
		nombre = string;
	}

	/**
	 * @return
	 */
	public String getDescripcion() {
		return descripcion;
	}

	/**
	 * @param string
	 */
	public void setDescripcion(String string) {
		descripcion = string;
	}

	public void addHistoriaEstado (Estado estado) {
		this.historia_Estados.add(estado);
	}
	
	public Collection getNextStates(){
		Estado estadoActual=this.getEstadoActual();
		RecorridoEstado nodo=estadoActual.getRecorridoEstado();
		return nodo.nextStates(this.getTipoRequerimiento());
		
	}
}
