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

/**
 *
 * @author  Juan Ernesto Peña Kaltekis
 *
 * Esta clase representa una lista de facturas 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 facturas pertenecientes a un proveedor
 */
public class BillingList
{

	/**
	 * Es un Hashtable que tiene como llave un int que representa el id de una
	 * factura, el objeto es de tipo <CODE>Bill</CODE>
	 */
	private Hashtable bills;

	/**
	 * Constructor por defecto de la clase BillingList
	 * 
	 * @param supplierId
	 *            id que identifica un proveedor
	 */
	public BillingList( int supplierId)
	{
		// TODO: implement
		this.bills = new Hashtable();
		this.loadData(supplierId);
	}

	/**
	 * Hace una consulta en la tabla factura por medio del método <CODE>query
	 * </CODE> de la clase <CODE>SqlUtilities</CODE> para cargar la lista de
	 * facturas y llenar la variable bills con las facturas pertenecientes al
	 * proveedor
	 * 
	 * @param supplierId
	 *            id que identifica un proveedor
	 * @return booleano que indica si la carga de la lista fué exitosa
	 */
	public boolean loadData( int supplierId )
	{
		// TODO: implement
		try
		{
			Vector results = new Vector();
			results = SQLUtilities
					.query("SELECT fact_id FROM factura WHERE empr_id="
							+ supplierId + ";");
			for( int i = 0; i < results.size(); i++ )
			{
				Hashtable temp = new Hashtable();
				temp = (Hashtable) results.elementAt(i);
				Integer key = (Integer) temp.get("fact_id");
				this.bills.put(key, new Bill(key.intValue()));
			}
		}
		catch (QueryException qe)
		{
			System.out.println(qe.getMessage());
			return false;
		}
		return true;
	}

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

	/**
	 * Consultor para el atributo bills.
	 * 
	 * @param bills
	 *            Nuevo valor para el atributo bills.
	 */
	public void setBills( Hashtable bills )
	{
		this.bills = bills;
	}

	public static void main( String args[] )
	{
		BillingList bl = new BillingList(3);
		Enumeration e = bl.getBills().elements();
		while( e.hasMoreElements() )
		{
			Bill b = new Bill();
			b = (Bill) e.nextElement();
			String s = b.getSupplierName();
			double d = b.getValue();
			//            System.out.println("proveedor: "+ s);
			//            System.out.println("valor: "+ d);
		}
	}
}