/*
 * BillingListView.java
 *
 * Created on 14 de agosto de 2004, 15:13
 */

package com.fenalco.utilities.lists;

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

import com.fenalco.entities.Bill;
import com.fenalco.entities.BillingList;



/**
 * Esta clase representa la vista para un listado de tipo BillingList que ve el
 * administrador del sistema
 * @author andres
 */
public class BillingListViewSysManager implements ListView
{
    /**
     * El listado (modelo o documento)
     */    
    BillingList billingList;
    /**
     * Como el listado es un hashtable, aqui almaceno los keys
     */    
    private Enumeration keys;
    /**
     * La llave actual que se está trabajando, se usa para tener acceso a los objetos
     * que se deben mostrar de ese elemento de la lista
     */    
    private Object actualKey;
    /**
     * valor actual en el que se está trabajando, es decir, la fila actual de la lista
     */    
    private Bill actualValue;
    /**
     * aqui se almacenan los datos que se van a mostrar en las diferentes columnas
     * de la lista
     */    
    private Vector valuesToShow;
    /**
     * contador que indica en que columna voy
     */    
    private int count;
    
    /**
     * Crea una nueva vista para el listado
     * @param list la lista (modelo o documento)
     */
    public BillingListViewSysManager(BillingList list)
    {
        billingList = list;
        keys = billingList.getBills().keys();
    }
    
    /**
     *
     * @see ListView.move
     * @link ListView.move
     */    
    public boolean move()
    {
        boolean res = false;
        if( keys.hasMoreElements() )
        {
            actualKey = keys.nextElement();
            actualValue = ( Bill )billingList.getBills().get( actualKey );
            
            valuesToShow = new Vector();
            count = 0;
            
            valuesToShow.addElement( actualValue.getId() + "" );
            valuesToShow.addElement( actualValue.getStatusId() + "" );            
            valuesToShow.addElement( actualValue.getDate().toString() );
            valuesToShow.addElement( actualValue.getValue() + "" );

            res = true;
        }
        return res;
    }
    
    public Object nextElement()
    {
        Object res = null;
        if( valuesToShow != null && valuesToShow.size() > 0)
        {
            if( count < valuesToShow.size() )
            {
                res = valuesToShow.elementAt( count++ );
            }
        }
        return res;
    }
    
}
