/*
 * Created on May 21, 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.List;
/**
 * @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 abstract class RecorridoEstado {

	protected TipoEstado tipoEstado;

	protected Collection tiposReqPermitidos;
	
	public RecorridoEstado(){
	}

	public abstract Collection nextStates(TipoRequerimiento tReq);
	
	public RecorridoEstado (TipoEstado tipoEstado, Collection tiposReqPermitidos) {
		this.setTipoEstado(tipoEstado);
		this.setTiposReqPermitidos(tiposReqPermitidos);
	}

// Recibe una colección de pares (nodo origen, tipo requerimiento).  Este par es una colección de dos elementos.
   public boolean isNavigableType(Collection par) {
	   List estadosSigtes = (List) this.getTiposReqPermitidos();
	   if (estadosSigtes.indexOf(par) > -1) {
			   return true;
	   }
	   return false;
   }

	public TipoEstado getTipoEstado() {
		return tipoEstado;
	}

	public void setTipoEstado(TipoEstado tipoEstado) {
		this.tipoEstado = tipoEstado;
	}

	public Collection getTiposReqPermitidos() {
		return tiposReqPermitidos;
	}

	public void setTiposReqPermitidos(Collection tiposReqPermitidos) {
		this.tiposReqPermitidos = tiposReqPermitidos;
	}
	
	public void addTipoReqPermitido(Collection par) {
			this.getTiposReqPermitidos().add(par);
	}


	public abstract  void addSigte(RecorridoEstado nodoDestino) ;

	public abstract Collection getEstadosSigtes();
}