/*
 * ReportSupplierListViewSysManager.java
 *
 */

package com.fenalco.utilities.lists;

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

import com.fenalco.entities.DataAccess;
import com.fenalco.entities.SuperOffer;

import java.text.NumberFormat;

/**
 *
 * @author  Néstor Romero León
 */
public class ReportSupplierListViewSysManager implements ListView {
    
    /**
     * El listado (modelo o documento)
     */    
    Vector list;
    /**
     * Como el listado es un Hashtable, aqui almaceno el key actual
     */    
    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;
    
    private int reportType;
    
    /** Creates a new instance of ReportSupplierListViewSysManager */
    public ReportSupplierListViewSysManager( Vector list, int reportType )  {
        
        this.list = list;
        keys = list.elements();
        this.reportType = reportType;
    }
    
    public boolean move() {
        
        
        boolean res = false;
            if( keys.hasMoreElements() )
            {
                actualValue = ( Vector )keys.nextElement();
                int quantity = 0;
                double total = 0;
                double qPercentage = 0;
                double tPercentage = 0;
                
                try{
                
                NumberFormat nf = NumberFormat.getNumberInstance();
                nf.setMaximumFractionDigits( 4 );
                
                valuesToShow = new Vector();
                count = 0;
                
                
                if( this.reportType == 1 ){
                
                	int soId = ((Integer)actualValue.elementAt(0)).intValue();
                    	SuperOffer so = new SuperOffer( soId );
                        quantity = ((Integer)actualValue.elementAt( 1 )).intValue();
                    	total = ((Double)actualValue.elementAt( 2 )).doubleValue();
                    	qPercentage = ((Double)actualValue.elementAt( 3 )).doubleValue();
                    	tPercentage = ((Double)actualValue.elementAt( 4 )).doubleValue();
                    
                        
                        //valuesToShow.addElement( String.valueOf( so.getId() ) );
                        valuesToShow.addElement( so.getDescription() );
                        valuesToShow.addElement( so.getStartDate().toString() );
                        valuesToShow.addElement( so.getEndDate().toString() );
                        valuesToShow.addElement( String.valueOf( quantity ) );
                        valuesToShow.addElement( DataAccess.getCurrency( total ) );
                        valuesToShow.addElement( nf.format( qPercentage ) );
                        valuesToShow.addElement( nf.format( tPercentage ) );
                        
                }else{
                        
                        quantity = ((Integer)actualValue.elementAt( 2 )).intValue();
                    	qPercentage = ((Double)actualValue.elementAt( 4 )).doubleValue();
                        
                        //System.out.println( actualValue.elementAt( 0 ).toString() + actualValue.elementAt( 1 ).toString() + quantity + " :: " + qPercentage );
                        
                        valuesToShow.addElement( actualValue.elementAt( 0 ).toString() );
                        valuesToShow.addElement( actualValue.elementAt( 1 ).toString() );
                	valuesToShow.addElement( String.valueOf( quantity ) );
                        valuesToShow.addElement( nf.format( qPercentage ) );
                }
                
                }catch( Exception e ){
                    e.printStackTrace();
                }
                
                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;
    }
    
}
// “Copyright (C) <2008> Multilateral Investment Fund of the Inter-American Development Bank.
// Este archivo es parte de <ICT4BUS-PVL>
// < ICT4BUS-PVL > es software libre: usted puede redistribuirlo y/o modificarlo bajo los términos de la Licencia Pública General GNU publicada por la Fundación para el Software Libre, ya sea la versión 3 de la Licencia, o (a su elección) cualquier versión posterior.
// < ICT4BUS-PVL > se distribuye con la esperanza de que sea útil, pero SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 
// Consulte los detalles de la Licencia Pública General GNU para obtener una información más detallada. 
// Debería haber recibido una copia de la Licencia Pública General GNU junto a este programa. En caso contrario, consulte http://www.gnu.org/licenses/.”