/*
 * SectionListView.java
 *
 * Created on 30 de septiembre de 2004, 17:03
 */

package com.fenalco.utilities.lists;

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

import com.fenalco.entities.Section;
import com.fenalco.entities.SectionList;

/**
 *
 * @author  Juan Ernesto Peña Kaltekis
 */
public class SectionListView implements ListView{
    
    /**
     * El listado (modelo o documento)
     */    
    SectionList sectionList;
    /**
     * 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 Section 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;
    
    public SectionListView( SectionList list )
    {
    	sectionList = list;
    	keys = sectionList.getSections().keys();
    }

	
	
	/**
	 * (non-Javadoc)
	 * 
	 * @see com.fenalco.utilities.lists.ListView#move()
	 */
	public boolean move( )
	{
        boolean res = false;
        if( keys.hasMoreElements() )
        {
            actualKey = keys.nextElement();
            actualValue = ( Section )sectionList.getSections().get( actualKey );
            
            valuesToShow = new Vector();
            count = 0;
            
            // siempre el primer elemento que mando es el id del objeto (se use o no)
            valuesToShow.addElement( actualValue.getId() + "");
            valuesToShow.addElement( actualValue.getName() );
            valuesToShow.addElement( actualValue.getEmail() );
            res = true;
        }
        return res;
	}

	/**
	 * (non-Javadoc)
	 * 
	 * @see com.fenalco.utilities.lists.ListView#nextElement()
	 */
	public Object nextElement( )
	{
            Object res = null;
            if( valuesToShow != null && valuesToShow.size() > 0)
            {
                if( count < valuesToShow.size() )
                {
                    res = valuesToShow.elementAt( count++ );
                }
            }
            return res;	}

        }