/* 
 * ProductCategoryList.java
 *
 * Created on 12 de agosto de 2004, 11:36 --> fecha de creación del archivo
 */

package com.fenalco.entities;

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

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

/**
 * Esta clase representa la tabla catagoria_producto de la base de datos, agrupa
 * las categorías en que se dividen los productos dentro del sistema
 * 
 * @author Néstor Romero León, Mario Linares Vásquez
 */
public class ProductCategoryList
{
	/**
	 * Este <CODE>Hashtable</CODE> mantiene un listado de objetos <CODE>
	 * ProductCategory</CODE> y está organizado de la siguiente forma: key:
	 * Identificador de la categoría de producto value: Objeto del tipo <CODE>
	 * ProductCategory</CODE>
	 */
	private Hashtable productCategories;

	/**
	 * Constructor por omisión que carga la lista de categorías de producto
	 * desde la base de datos mediante un llamado al método <CODE>loadData
	 * </CODE>.
	 */
	public ProductCategoryList( )
	{
		// TODO: implement
		this.productCategories = new Hashtable();
		this.loadData();
	}

	/**
	 * Este método carga la tabla categoría_producto en el objeto mediante
	 * haciendo uso del método <CODE>query</CODE> de la clase <CODE>
	 * SQLUtilities</CODE>.
	 * 
	 * @return Valor booleano que indica si la operación tuvo éxito o no
	 */
	public boolean loadData( )
	{
		try
		{
			Vector results = new Vector();
			results = SQLUtilities
					.query("SELECT cate_prod_id FROM categoria_producto;");
			for( int i = 0; i < results.size(); i++ )
			{
				Hashtable temp = new Hashtable();
				temp = (Hashtable) results.elementAt(i);
				Integer key = (Integer) temp.get("cate_prod_id");
				this.productCategories.put(key, new ProductCategory(key
						.intValue()));
			}
		}
		catch (QueryException qe)
		{
			System.out.println(qe.getMessage());
			return false;
		}
		return true;
	}

	/**
	 * Consultor para el atributo productCategories.
	 * 
	 * @return Valor del atributo productCategories.
	 */
	public Hashtable getProductCategories( )
	{
		return productCategories;
	}

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

}