/*
 * UserList.java
 * 
 * Created on 11 de agosto de 2004, 6:30
 */

/**
 *
 * @author  Juan Ernesto Peña Kaltekis
 *
 * Esta clase representa una lista de usuarios internos pertenecientes a un proveedor
 * 
 * CONTROL DE CAMBIOS:
 *
 * Fecha        Autor       tipo        cambio      descripción
 *
 *
 */
package com.fenalco.entities;

import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Vector;

import com.fenalco.utilities.database.QueryException;
import com.fenalco.utilities.database.SQLUtilities;

/**
 * Esta clase representa una lista de usuarios internos pertenecientes a un
 * proveedor
 */
public class UserList
{

	/**
	 * Es un Hashtable que tiene como llave un int que representa el id de un
	 * usuario, el objeto es de tipo <CODE>User</CODE>
	 */
	private Hashtable users;

	/**
	 * Constructor por defecto de la de la clase UserList
	 * 
	 * @param supplierId
	 *            Identificador del proveedor
	 */
	public UserList( )
	{
		// TODO: implement
		this.users = new Hashtable();
		this.loadData();
	}

	/**
	 * Constructor de la de la clase UserList
	 * 
	 * @param supplierId
	 *            Identificador del proveedor
	 */
	public UserList( int supplierId)
	{
		// TODO: implement
		this.users = new Hashtable();
		this.loadData(supplierId);
	}

	/**
	 * Hace una consulta en la tabla usuario por medio del método <CODE>query
	 * </CODE> de la clase <CODE>SqlUtilities</CODE> para cargar la variable
	 * users con usuarios que tengan rol de Call Center
	 * 
	 * @return booleano que indica si la carga de los usuarios fué exitosa
	 */
	public boolean loadData( )
	{
		// TODO: implement
		try
		{
			Vector results = new Vector();
			results = SQLUtilities
					.query("SELECT usua_login FROM usuario,rol WHERE usuario.rol_id=rol.rol_id AND rol_nombre=\'Callcenter\';");
			for( int i = 0; i < results.size(); i++ )
			{
				Hashtable temp = new Hashtable();
				temp = (Hashtable) results.elementAt(i);
				String key = (String) temp.get("usua_login");
				this.users.put(key, new User(key));
			}
		}
		catch (QueryException qe)
		{
			System.out.println(qe.getMessage());
			return false;
		}
		return true;
	}

	/**
	 * Hace una consulta en la tabla usuarios por medio del método <CODE>query
	 * </CODE> de la clase <CODE>SqlUtilities</CODE> para cargar la lista de
	 * usuarios y llenar la variable users con los usuarios internos
	 * pertenecientes al proveedor
	 * 
	 * @param supplierId
	 *            id del proveedor
	 * @return booleano que indica el éxito de la carga de la lista
	 */
	public boolean loadData( int supplierId )
	{
		// TODO: implement
		try
		{
			Vector results = new Vector();
			results = SQLUtilities
					.query("SELECT usua_login FROM usuario WHERE empr_id="
							+ supplierId + ";");
			for( int i = 0; i < results.size(); i++ )
			{
				Hashtable temp = new Hashtable();
				temp = (Hashtable) results.elementAt(i);
				String key = (String) temp.get("usua_login");
				this.users.put(key, new User(key));
			}
		}
		catch (QueryException qe)
		{
			System.out.println(qe.getMessage());
			return false;
		}

		return true;
	}

	/**
	 * Consultor para el atributo users.
	 * 
	 * @return Valor para el atributo users.
	 */
	public Hashtable getUsers( )
	{
		return this.users;
	}

	/**
	 * Modificador para el atributo users.
	 * 
	 * @param users
	 *            Nuevo valor para el atributo users.
	 */
	public void setUsers( Hashtable users )
	{
		this.users = users;
	}

	public static void main( String args[] )
	{
		UserList lol = new UserList(2);
		Enumeration e = lol.getUsers().elements();

		while( e.hasMoreElements() )
		{
			User lo = new User();
			lo = (User) e.nextElement();
			String s = lo.getLogin();
			String d = lo.getPassword();
			System.out.println("login: " + s);
			System.out.println("password: " + d);
		}
	}

}