Package gui.statistique

Source Code of gui.statistique.StatistiqueDepenseFenetre

package gui.statistique;

import static gui.MotsCleProjet.CMD_OK;

import static gui.MotsCleProjet.CMD_QUIT;
import static gui.util.TaxiGuiUtil.FabricationButton;
import gui.MainWindow;
import gui.Ouvrable;
import gui.PrjException;
import gui.util.Mois;
import gui.util.TaxiGuiUtil;


import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;

import javax.swing.BorderFactory;
import javax.swing.JDesktopPane;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JToolBar;

import modele.charge.ChargeVoiture;
import modele.course.Tournee;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;

import dao.GestionnaireDeStockage;
import dao.IChargeVoitureDao;
import dao.ITourneeDao;
import dao.implementation.mysql.AccessMySql;

/**
* class StatistiqueDepenseFenetre
* <p> Affiche les d�penses</p>
* @author Kasandra
*
*/
public class StatistiqueDepenseFenetre implements ActionListener, Ouvrable {

  private JDialog aDialog;// R�f�rence � la boite de dialogue. 

  private JPanel titre;
  private JLabel titres;
 


  static Font titreFont = new Font("Tahoma", 1, 12);

  protected boolean okFlag;
 
  protected JInternalFrame internalFrame;
 
  public void ouvreFenetre() {
    internalFrame.setVisible(true);
  }
 
  public void fermeFenetre() {
    internalFrame.setVisible(false);
  }
 
  /**
   * <p> cr�e un objet de la classe qui impl�mente les m�thodes de l'interface IChargeVoitureDao.</p>
   * <p> charge depuis la base de donn�es toutes les charges</p>
   <p> cr�e un tableau associatif qui prend 2 valeurs </p>
   *   <p> on parcourt la liste des charges et on met le mois et le montant dans le tableau, ensuite on ajoute les valeurs
   *     dans le tableau. </p>
   *    <p> on affiche les donn�es</p>
   *    on cr�e la barre et on l'associe au panel.
   * @return
   */
  private JPanel getChartPane() {
   
    IChargeVoitureDao chargeVoitureDao =  getChargeVoitureDao();
   
    java.util.List<ChargeVoiture> chargeVoitures = chargeVoitureDao.findAll();
   
    //carte (tableau associatif qui prend 2 valeurs : int mois et le montant
    Map<Integer,BigDecimal> depenseParMois = new HashMap<Integer, BigDecimal>();
   
    for (ChargeVoiture chargeVoiture: chargeVoitures) {
     
      //R�cup�re seulement le mois de la date d'�mission de facture
      int mois = chargeVoiture.getDateEmmissionCharge().getMonth();
     
      //R�cup�re le montant de la charge
      BigDecimal depense = chargeVoiture.getMontantIndicatif();     
     
      if (depense == null) depense = new BigDecimal(0.0);
     
      if (depenseParMois.containsKey(mois)) {
       
        BigDecimal depenseTemp = depenseParMois.get(mois);
       
        depenseParMois.put(mois, depenseTemp.add(depense));
      } else {
        depenseParMois.put(mois, depense);
      }
    }
   
    DefaultCategoryDataset dataset = new DefaultCategoryDataset();
   
    // affiche les donn�es m�me s'il n'y a pas eu de chiffre d'affaire dans ce mois.
    for (Mois mois : Mois.values()) {
      BigDecimal depenseDuMois = depenseParMois.get(mois.getIndex());
      dataset.addValue((depenseDuMois != null ? depenseDuMois : 0.0 ), "D�penses mensuelles", mois.getNom());
    }
   
    /**
     * cr�e le graphique sous forme de barre
     */
    JFreeChart barChart = ChartFactory.createBarChart(
        "Evolution des d�penses", "",
        " Montant des d�penses en euro", dataset, PlotOrientation.VERTICAL, true, true,
        false);

    ChartPanel cPanel = new ChartPanel(barChart);
   
    cPanel.setSize(700,560);
   
    return cPanel;
  }

  /**
   * <p>Retourne l'instance de la classe qui impl�mente les m�thodes de l'interface IChargeVoitureDao</p>
   * @return
   */
 
  private IChargeVoitureDao getChargeVoitureDao() {
    try {
      return GestionnaireDeStockage.getInstance().getChargeVoitureDao();
    } catch (ClassNotFoundException e) {
      throw new RuntimeException(e);
    } catch (InstantiationException e) {
      throw new RuntimeException(e);
    } catch (IllegalAccessException e) {
      throw new RuntimeException(e);
    }
  }

  public boolean OK_Button() {
    return okFlag;
  }

 
  /**
   * Constructeur
   * @throws PrjException
   */
 
 
  /**
   * Constructeur de la classe
   * @throws PrjException
   */
  public StatistiqueDepenseFenetre(JDesktopPane jDesktopPane) {
  //JFrame dependantFrame, MainWindow mainwin) {
  {
    internalFrame = TaxiGuiUtil.creeInternalFrame("Stastique des d�penses");
    jDesktopPane.add(internalFrame);
   
    try {
      AccessMySql.ouvreConnection();     
      JToolBar toolBar = new JToolBar("Outils...");

      JPanel parameterPane = new JPanel(false);
      parameterPane.setBackground(new Color(170, 207, 249));

      parameterPane.setLayout(new FlowLayout());
      parameterPane.setPreferredSize(new Dimension(900,660));
      //parameterPane.setBorder(BorderFactory.createTitledBorder(" "));
      toolBar.setBackground(new Color(66, 79, 120));
      toolBar.add(FabricationButton("Quitter", CMD_QUIT, "Quitter...", this));     

      parameterPane.add(getChartPane(), BorderLayout.CENTER);
           
      internalFrame.getContentPane().add(getTitre(), BorderLayout.NORTH);
      internalFrame.getContentPane().add(parameterPane, BorderLayout.CENTER);
      internalFrame.getContentPane().add(toolBar, BorderLayout.PAGE_END);
     
     
    } catch (Exception e) {
      System.exit(1);
   
   
   
    okFlag = false;
   
  }
 

}


 
  /**
   * Renvoie titre formulaire
   *
   * @return
   */
  private JPanel getTitre() {
    if (titre == null) {
      GridBagConstraints gridBagTitre = new GridBagConstraints();
      gridBagTitre.gridx = 0;
      gridBagTitre.gridy = 0;
      titres = new JLabel();
      titres.setText("  Statistique des d�penses ");
      titres.setFont(new java.awt.Font("Comic Sans MS", 1, 20));
      titres.setForeground(new Color(255, 255, 255));
      titre = new JPanel();
      titre.setLayout(new GridBagLayout());
      titre.setPreferredSize(new Dimension(50, 45));
      titre.setBackground(new Color(66, 79, 120));
      titre.add(titres, gridBagTitre);
    }

    return titre;
  }
 

  /**
   * Gestionnaire des �v�nements
   */
  public void actionPerformed(ActionEvent e) {
   
   
    String cmd = e.getActionCommand();
   
    if (CMD_OK.equals(cmd)) {     

      okFlag = true;
      aDialog.setVisible(false);
    
    }else if (CMD_QUIT.equals(cmd)) {
      okFlag = false;
      aDialog.setVisible(false);
    }
  }
 


}
TOP

Related Classes of gui.statistique.StatistiqueDepenseFenetre

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.