/*
 * ChartInfo.java
 *
 * Created on 2 de febrero de 2005, 05:55 PM
 */

package co.com.ddt.chart;

import org.jfree.chart.plot.PlotOrientation;

import java.util.Vector;
import java.util.Hashtable;
import java.util.Enumeration;
/**
 * Esta clase encapsula los atributos propios y comunes para
 * los diferentes tipos de charts que se pueden generar
 * @author Mario Linares Vásquez
 */
public class ChartInfo {
    
    private String title;
    
    private boolean tooltips;
    private boolean legend;
    private boolean chart3D;
    
    private int type;
    private int width;
    private int height;
    
    private String xLabel;
    private String yLabel;
    
    private String file ;
    
    private PlotOrientation orientation;
    
        
    // static constants
    /**
     * Constante que define el tipo de gráfica LINE
     */    
    public static int LINE = 1;
    /**
     * Constante que define el tipo de gráfica BAR
     */    
    public static int BAR = 2;
    /**
     * Constante que define el tipo de gráfica PIE
     */    
    public static int PIE = 3;
 
    /**
     * Hash que almacena las series que componen la gráfica :
     * - key : Nombre de la seie
     * - value: serie (instancia de <CODE>ChartSerie</CODE>)
     */    
    protected Hashtable series;
    
    /**
     * Cantidad de series que componen el chart
     */    
    protected int seriesSize;
    
    /**
     * Constructor por omisi&oacute;n de la clase
     */
    public ChartInfo() {
        this.series = new Hashtable();
        file =  "";
    }
    
    /**
     * M&eacute;todo para agregar series de al chart
     * @param serie Serie instancia de clases derivadas de <CODE>ChartSerie</CODE>
     * @return Bandera que indica si la serie pudo ser agregada al chart
     */    
    public boolean addSerie(ChartSerie serie){
        
        boolean flag = true;
        try{
        
            this.series.put(serie.getSerieName() , serie);
        }
        catch(Exception e){
            
            flag = false;
        }
        return flag;
    }
    
    
    /**
     *  M&eacute;todo consultor para el atributo title.
     * @return Valor del atributo title.
     */
    public java.lang.String getTitle() {
        return title;
    }
    
    /**
     *  M&eacute;todo modificador para el atributo title.
     * @param title Nuevo valor para el atributo title.
     */
    public void setTitle(java.lang.String title) {
        this.title = title;
    }
    
    /**
     *  M&eacute;todo consultor para el atributo tooltips.
     * @return Valor del atributo tooltips.
     */
    public boolean isTooltips() {
        return tooltips;
    }
    
    /**
     *  M&eacute;todo modificador para el atributo tooltips.
     * @param tooltips Nuevo valor para el atributo tooltips.
     */
    public void setTooltips(boolean tooltips) {
        this.tooltips = tooltips;
    }
    
    /**
     *  M&eacute;todo consultor para el atributo legend.
     * @return Valor del atributo legend.
     */
    public boolean isLegend() {
        return legend;
    }
    
    /**
     *  M&eacute;todo modificador para el atributo legend.
     * @param legend Nuevo valor para el atributo legend.
     */
    public void setLegend(boolean legend) {
        this.legend = legend;
    }
    
    /**
     *  M&eacute;todo consultor para el atributo type.
     * @return Valor del atributo type.
     */
    public int getType() {
        return type;
    }
    
    /**
     *  M&eacute;todo modificador para el atributo type.
     * @param type Nuevo valor para el atributo type.
     */
    public void setType(int type) {
        this.type = type;
    }
    
    /**
     *  M&eacute;todo consultor para el atributo width.
     * @return Valor del atributo width.
     */
    public int getWidth() {
        return width;
    }
    
    /**
     *  M&eacute;todo modificador para el atributo width.
     * @param width Nuevo valor para el atributo width.
     */
    public void setWidth(int width) {
        this.width = width;
    }
    
    /**
     *  M&eacute;todo consultor para el atributo height.
     * @return Valor del atributo height.
     */
    public int getHeight() {
        return height;
    }
    
    /**
     *  M&eacute;todo modificador para el atributo height.
     * @param height Nuevo valor para el atributo height.
     */
    public void setHeight(int height) {
        this.height = height;
    }
    
    /**
     *  M&eacute;todo consultor para el atributo xLabel.
     * @return Valor del atributo xLabel.
     */
    public java.lang.String getXLabel() {
        return xLabel;
    }
    
    /**
     *  M&eacute;todo modificador para el atributo xLabel.
     * @param xLabel Nuevo valor para el atributo xLabel.
     */
    public void setXLabel(java.lang.String xLabel) {
        this.xLabel = xLabel;
    }
    
    /**
     *  M&eacute;todo consultor para el atributo yLabel.
     * @return Valor del atributo yLabel.
     */
    public java.lang.String getYLabel() {
        return yLabel;
    }
    
    /**
     *  M&eacute;todo modificador para el atributo yLabel.
     * @param yLabel Nuevo valor para el atributo yLabel.
     */
    public void setYLabel(java.lang.String yLabel) {
        this.yLabel = yLabel;
    }
    
    /**
     *  M&eacute;todo consultor para el atributo orientation.
     * @return Valor del atributo orientation.
     */
    public org.jfree.chart.plot.PlotOrientation getOrientation() {
        return orientation;
    }
    
    /**
     *  M&eacute;todo modificador para el atributo orientation.
     * @param orientation Nuevo valor para el atributo orientation.
     */
    public void setOrientation(org.jfree.chart.plot.PlotOrientation orientation) {
        this.orientation = orientation;
    }
    
        
    /**
     *  M&eacute;todo consultor para el atributo chart3D.
     * @return Valor del atributo chart3D.
     */
    public boolean isChart3D() {
        return chart3D;
    }    

    /**
     *  M&eacute;todo modificador para el atributo chart3D.
     * @param chart3D Nuevo valor para el atributo chart3D.
     */
    public void setChart3D(boolean chart3D) {
        this.chart3D = chart3D;
    }
    
    /**
     * Este m&eacute;todo retorna un arreglo con los nombres de las series
     * de la gr&aacute;fica
     * @return Arreglo de cadenas
     */    
    public String[] getSerieNames(){
        String[] serieNames = new String[this.series.size()];
        Enumeration seriesEnum = this.series.keys();
        int count = 0; 
        while(seriesEnum.hasMoreElements()){
            serieNames[count] = (String)seriesEnum.nextElement();
            count++;
        }
        return serieNames;
    }
    
    /**
     * M&eacute;todo consultor para el atributo seriesSize
     * @return Cantidad de series que componen el chart
     */    
    public int getSeriesSize(){
        return this.series.size();
    }
    
    /**
     *  M&eacute;todo consultor para el atributo file.
     * @return Valor del atributo file.
     */
    public java.lang.String getFile() {
        return file;
    }
    
    /**
     *  M&eacute;todo modificador para el atributo file.
     * @param file Nuevo valor para el atributo file.
     */
    public void setFile(java.lang.String file) {
        this.file = file;
    }
    
}
// “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/.”