package demoGrafici;

import org.jfree.data.xy.*;
import org.jfree.chart.*;
import org.jfree.chart.plot.*;
import org.jfree.data.category.*;
import org.jfree.data.general.*;

import java.io.*;

public class Esempio2
{

  static void creaGrafo2()
  {
    // creo un CategoryDataset
    DefaultCategoryDataset dataSet = caricaDati2();

    // creo l'oggetto JFreeChart col metodo statico dedicato
    // per il tipo di grafico in esame
    JFreeChart grafo = ChartFactory.createBarChart(
            "Entrate/Uscite", 
            "Mesi", 
            "Euro", 
            dataSet, 
            PlotOrientation.VERTICAL, 
            true, 
            false, 
            false);
    
    // creo un oggetto ChartFrame per visualizzare il grafico
    // ChartFrame eredita da java.awt.Frame ed è quindi trattabile 
    // in seguito
    // con le normali primitive grafiche fornite dal package java.awt
    ChartFrame frame = new ChartFrame("Esempio2", grafo);
    // scelgo la dimensione in pixel della finestra
    frame.setSize(400,350);
    // e la visualizzo
    frame.setVisible(true);
  }

  static DefaultCategoryDataset caricaDati2()
  {
    String s, a[];
    DefaultCategoryDataset dataSet = new DefaultCategoryDataset();

    try
    {
      FileReader in = new FileReader("esempio2.dat");
      BufferedReader reader = new BufferedReader(in);
      
      while (reader.ready())
      {
        s = reader.readLine();
        if (s.length() > 0 && s.charAt(0) != '#')
        {
          // la funzione split suddivide la stringa s in
          // sottostringhe riconoscibili da un delimitatore
          // (in questo caso una tabulazione)
          a = s.split("\t");
          // a[0] mese
          // a[1] entrate
          // a[2] uscite
          dataSet.addValue(
                 Double.parseDouble(a[1]), 
                 "Entrate", 
                 a[0]);
          dataSet.addValue(
                 Double.parseDouble(a[2]), 
                 "Uscite", 
                 a[0]);
        }
      }

      reader.close();
      in.close();
    }
    catch (IOException ioe)
    {
      System.out.println(ioe.getMessage());
    }
    return dataSet;
  }
  
  
  public static void main (String[] args)
  {
    creaGrafo2();
  }

} /* end of class declaration */


