/*
 * 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.Iterator;
import java.util.LinkedList;

/**
 * @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 NodoCompuesto extends RecorridoEstado {

	protected Collection estadosSigtes;
	
	public NodoCompuesto(){
		super();
	}
	
	public NodoCompuesto(TipoEstado tipoEstado, Collection tiposReqPermitidos, Collection estadosSigtes) {
		super(tipoEstado, tiposReqPermitidos);
		this.setEstadosSigtes(estadosSigtes);
	}

//	Recibe como parámetro  el tipo de requerimiento para el cual se quieren saber los posibles estados a partir del estado actual
	  public Collection nextStates(TipoRequerimiento tReq) {
		  Iterator it=this.getEstadosSigtes().iterator();
		  Collection nextStates = new LinkedList();
		  while (it.hasNext()) {
			  RecorridoEstado re = (RecorridoEstado) it.next();
			  LinkedList par = new LinkedList();
			  par.add(0,this);
			  par.add(1,tReq);
			  if (re.isNavigableType(par)) {
					nextStates.add(re);
			  }
				
		  }
		  return nextStates;
	  }

	public void addSigte(RecorridoEstado nodoDestino) {
		this.getEstadosSigtes().add(nodoDestino);
	}

	public Collection getEstadosSigtes() {
		return estadosSigtes;
	}

	public void setEstadosSigtes(Collection collection) {
		estadosSigtes = collection;
	}

}