/*
 * BillingParameterListView.java
 *
 * Created on 16 de septiembre de 2004, 14:05
 */

package com.fenalco.utilities.lists;

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

/**
 *
 * @author  Juan Ernsto Peña Kaltekis
 */
public class BillingParameterListView implements ListView{
    
    /**
     * El listado (modelo o documento)
     */    
    Hashtable billingParameterList;
    /**
     * 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 Vector 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;

    
    /** Constructor de la clase */
    public BillingParameterListView(){
        
    }
    
    /**
     * Crea una nueva vista para el listado
     * @param list la lista (modelo o documento)
     */
    public BillingParameterListView(Hashtable list)
    {
        billingParameterList = list;
        keys=billingParameterList.keys();
    }
    
    /**
     *
     * @see ListView.move
     * @link ListView.move
     */    
    public boolean move()
    {
        boolean res = false;
        if( keys.hasMoreElements() )
        {
            actualKey = keys.nextElement();
            actualValue = (Vector)billingParameterList.get(actualKey);
            
            valuesToShow = new Vector();
            count = 0;
            
            valuesToShow.addElement( actualKey + "" );            
            valuesToShow.addElement( actualValue.elementAt(0) + "" );
            valuesToShow.addElement( actualValue.elementAt(1) + "" );            

            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;
    }
    
}
