Package gui.statistique

Source Code of gui.statistique.StatistiqueChiffreAffaireFenetre

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.GridLayout;
import java.awt.Paint;
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.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JToolBar;

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

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;

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

/**
* Classe StatistiqueChiffreAffaireFenetre
*
* @author Kasandra
*
*/
public class StatistiqueChiffreAffaireFenetre 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);
  }
 
     class CustomRenderer extends BarRenderer {
          /**
           * Returns the paint for an item.  Overrides the default behaviour inherited from
           * AbstractSeriesRenderer.
           *
           * @param row  the series.
           * @param column  the category.
           *
           * @return The item color.
           */
          public Paint getItemPaint(final int row, final int column) {
            CategoryDataset dataSet = getPlot().getDataset();
            Number value = dataSet.getValue(row, column);
              return (value.doubleValue() > 0.0) ? Color.GREEN : Color.RED ;
          }
         
         
      }
 
private JPanel createChartPaneChiffreAffaire() {
 
    ITourneeDao tourneeDao =  getTourneeDao();
   
    java.util.List<Tournee> tournees = tourneeDao.findAll();
   
    Map<Integer,BigDecimal> chiffresAffaireParMois = new HashMap<Integer, BigDecimal>();
   
    for (Tournee tournee: tournees) {
      int mois = tournee.getDateDebutService().getMonth();
      BigDecimal recetteJournali�re = tournee.getRecetteJournali�re();
      if (recetteJournali�re == null)
        recetteJournali�re = new BigDecimal(0.0);
      if (chiffresAffaireParMois.containsKey(mois)) {
        BigDecimal chiffreAffaireTemp = chiffresAffaireParMois.get(mois);
       
        chiffresAffaireParMois.put(mois, chiffreAffaireTemp.add(recetteJournali�re));
      } else {
        chiffresAffaireParMois.put(mois, recetteJournali�re);
      }
    }

    IChargeVoitureDao chargeVoitureDao =  getChargeVoitureDao();
   
    java.util.List<ChargeVoiture> chargeVoitures = chargeVoitureDao.findAll();
   
    for (ChargeVoiture chargeVoiture: chargeVoitures) {
     
      int mois = chargeVoiture.getDateEmmissionCharge().getMonth();
      BigDecimal depense = chargeVoiture.getMontantIndicatif().negate();
     
      if (depense == null) depense = new BigDecimal(0.0);
     
      if (chiffresAffaireParMois.containsKey(mois)) {
       
        BigDecimal depenseTemp = chiffresAffaireParMois.get(mois);
        chiffresAffaireParMois.put(mois, depenseTemp.add(depense));
      }
      else {
        chiffresAffaireParMois.put(mois, depense);
      }
    }
   
    DefaultCategoryDataset dataset = new DefaultCategoryDataset();
   
    // affiche les donn�es m�me s'il n'y a pas eu de chiffre d'affaire.
    for (Mois mois : Mois.values()) {
      BigDecimal depenseDuMois = chiffresAffaireParMois.get(mois.getIndex());
      dataset.addValue((depenseDuMois != null ? depenseDuMois : 0.0 ), "Chiffre d'affaires mensuel", mois.getNom());
    }

    JFreeChart barChart = ChartFactory.createBarChart(
        "Evolution du chiffre d'affaires", "",
        " Montant de chiffre d'affaires en euro", dataset, PlotOrientation.VERTICAL, true, true,
        false);
   
    final CategoryPlot plot = barChart.getCategoryPlot();
    plot.setRenderer(new CustomRenderer());
       
   

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

/**
* retourne l'instance de la classe MysqlTourneeDao pour pouvoir
*  utiliser les m�thodes de l'interface ITourneeDao
* @return ITourneeDao
*/
  private ITourneeDao getTourneeDao() {
    try {
      return GestionnaireDeStockage.getInstance().getTourneeDao();
    } catch (ClassNotFoundException e) {
      throw new RuntimeException(e);
    } catch (InstantiationException e) {
      throw new RuntimeException(e);
    } catch (IllegalAccessException e) {
      throw new RuntimeException(e);
    }
  }
 
  /**
   * retourne l'instance de la classe MysqlChargeVoitureDao pour pouvoir
   *  utiliser les m�thodes de l'interface IChargeVoitureDao
   * @return ChargeVoitureDao
   */
  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 de la classe
   * @throws PrjException
   */
  public StatistiqueChiffreAffaireFenetre(JDesktopPane jDesktopPane) {
  //JFrame dependantFrame, MainWindow mainwin) {
  {
    internalFrame = TaxiGuiUtil.creeInternalFrame("Stastique de chiffre d'affaires");
    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(createChartPaneChiffreAffaire(), BorderLayout.CENTER);
           
      internalFrame.getContentPane().add(getTitre(), BorderLayout.NORTH);
      internalFrame.getContentPane().add(parameterPane, BorderLayout.CENTER);
      internalFrame.getContentPane().add(toolBar, BorderLayout.PAGE_END);
     
     
    } catch (Exception e) {
      //TaxiGuiUtil.MessageBox( "Erreur de base de donn�es.  V�rifiez que la base de donn�es est d�mar�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("  Vue d'ensemble chiffre d'affaires");
      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;
  }

  /**
   * D�finit la fen�tre et ses composants
   */
  public void affiche() throws PrjException {
    try {
      JToolBar toolBar = new JToolBar("Outils...");

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

      parameterPane.setLayout(new GridLayout(1,2));
      parameterPane.setPreferredSize(new Dimension(1200, 500));
      parameterPane.setBorder(BorderFactory.createTitledBorder(" "));
      parameterPane.add(createChartPaneChiffreAffaire());
     

      aDialog.getContentPane().add(getTitre(), BorderLayout.NORTH);
      aDialog.getContentPane().add(parameterPane, BorderLayout.CENTER);
      aDialog.getContentPane().add(toolBar, BorderLayout.PAGE_END);

      toolBar.setBackground(new Color(66, 79, 120));
      //toolBar.add(FabricationButton("OK", CMD_OK, "OK...", this));
      toolBar.add(FabricationButton("Quitter", CMD_QUIT, "Quitter...", this));

      Point p = MainWindow.cadrePrincipal().getLocation();
      aDialog.setLocation((p.x + 250), (p.y + 200));

      aDialog.pack();
      aDialog.setVisible(true);
    } catch (NullPointerException exc) {
      throw new PrjException(exc.getMessage());
    }
  }

  /**
   * 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.StatistiqueChiffreAffaireFenetre

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.