/*
 * Created on 12/05/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;
import java.util.List;
import java.util.Map;

/**
 * @author german
 *
 * 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 AgregarMiembro extends FuncionAbstracta {
	public AgregarMiembro(){}
//Recibe como parametro el sistema, proyecto, el usuario, y la coleccion de roles
	public Object execute(Map m) {
		Proyecto project=(Proyecto)m.get(Constants.PROYECTO);
		Usuario usuario=(Usuario)m.get(Constants.USUARIO);
		List roles=(List) m.get(Constants.ROLES);
		Sistema sist=(Sistema)m.get(Constants.SISTEMA);
		Collection rol_miembros= project.getRolesMiembros();
		Iterator it_rol_miembros=rol_miembros.iterator();
//Agrego el usuario a los  roles que ya existen en el proyecto
		while(it_rol_miembros.hasNext()){
			RolMiembros rm=(RolMiembros)it_rol_miembros.next();
			Rol rol=rm.getRol();
			if(roles.indexOf(rol)>-1){
				rm.addUsuario(usuario);
				roles.remove(rol);
			}
			
		}
/*Agrego ahora el usuario a roles que todavia no existen para este proyecto
 * Por ejemplo si en este proyecto no habia ningun usuario con rol Analista 
 * hay que crear una instancia de RolMiembros cuyo Rol sea Analista y cuyo 
 * usuario sea el que viene como parametro y luego agrego esa instancia de 
 * RolMiembros al Proyecto
 */
		Iterator it_roles= roles.iterator();
		while (it_roles.hasNext()){
				Rol rol=(Rol)it_roles.next();
				RolMiembros rolMiembro = new RolMiembros(new LinkedList(),rol);
				rolMiembro.addUsuario(usuario);
				project.addRolMiembros(rolMiembro);
							
		}
		return null;
			
	}
		
		
		
}
