Package application.vues

Source Code of application.vues.VuePanelStats

package application.vues;

import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.image.BufferedImage;
import java.sql.SQLException;
import java.util.Collection;
import java.util.Vector;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;
import application.exceptions.DataFormatException;
import application.modeles.ModeleClassement;
import application.modeles.ModeleClassementCollection;
import application.modeles.ModeleVideotheque;
import application.modeles.ModeleRepartition;
import application.modeles.ModeleRepartitionCollection;




@SuppressWarnings("serial")
public class VuePanelStats extends JPanel{

  private JLabel _lbltop10Acteur;
  private JLabel _lbltop10Realisateur;
  private JLabel _lblRepartition;
  private JScrollPane  _jsAfficheTop10Act;
  private JScrollPane _jsAfficheTop10Real;
  private JLabel _lblAfficheRepartition;
  private JPanel _pnlLabelInfo;
  private JPanel _pnlLabelListe;
  private ModeleRepartitionCollection _repart;
  private ModeleClassementCollection _ladder;
  private ModeleVideotheque _mod;
 
 
  public VuePanelStats(ModeleVideotheque mod) {
   
    _mod = mod;
    _lbltop10Acteur = new JLabel("Top 10 des meilleurs acteurs :  ");
    _lbltop10Realisateur = new JLabel("Top 10 des meilleurs réalisateurs :  ");
    _lblRepartition = new JLabel("Répartition par genre :  ");
    _lblAfficheRepartition = new JLabel();
    _pnlLabelInfo = new JPanel(new GridLayout(4,1));
    _pnlLabelListe = new JPanel (new GridLayout(2,1));
    JPanel pnlTab = new JPanel (new GridLayout(2,2));
    _repart = new ModeleRepartitionCollection(_mod.get_DB());
    _ladder = new ModeleClassementCollection(_mod.get_DB());
    _pnlLabelInfo.add(_lbltop10Acteur);
    _pnlLabelInfo.add(_lbltop10Realisateur);
    _pnlLabelInfo.add(_lblRepartition);
    this.VuePanelStatsLoad();
    pnlTab.add(_jsAfficheTop10Act);
    pnlTab.add(_jsAfficheTop10Real);
    _pnlLabelListe.add(pnlTab);
    _pnlLabelListe.add(_lblAfficheRepartition);
   

    setVisible(true);
    setLayout(new BorderLayout());
    add(_pnlLabelInfo, BorderLayout.WEST);
    add(_pnlLabelListe, BorderLayout.EAST);
    add(_pnlLabelInfo,BorderLayout.WEST);
    add(_pnlLabelListe, BorderLayout.CENTER);
     
  }
 
 
 
 
  /**
   *
   * Methode qui permet de construire les outils statistiques
   * (diagrammes et tableaux).
   *
   */
  public void VuePanelStatsLoad(){
 
 
    try {
     
      String[] columnNames = {"Prénom", "Nom", "Nombre de film"};
      Object[][] data1 = {
            {"Mary", "Campione", 25},
            {"Barbara", "Goa'Uld", 23},
            {"Polly", "Nôme", 15},
            {"Aron", "Shariel",3},
            {"Aron", "Shariel",3},
            {"Aron", "Shariel",3},
            {"Aron", "Shariel",3},
            {"Aron", "Shariel",3},
            {"Aron", "Shariel",3},
            {"Aron", "Shariel",3}
        };
     
      Object[][] data2 = {
            {"Mary", "Campione", 25},
            {"Barbara", "Goa'Uld", 23},
            {"Polly", "Nôme", 15},
            {"Aron", "Shariel",3},
            {"Aron", "Shariel",3},
            {"Aron", "Shariel",3},
            {"Aron", "Shariel",3},
            {"Aron", "Shariel",3},
            {"Aron", "Shariel",3},
            {"Aron", "Shariel",3}
        };

     
     
      Collection<ModeleClassement> top10Acteurs = _ladder.top10Acteurs();
      Collection<ModeleClassement> top10Real = _ladder.top10Realisateurs();
      Collection<ModeleRepartition> repartition = _repart.getRepartitions();
      Vector<ModeleClassement> lstacteurs = (Vector<ModeleClassement>) top10Acteurs;
      Vector<ModeleClassement> lstreal = (Vector<ModeleClassement>)top10Real;
      Vector<ModeleRepartition> repart = (Vector<ModeleRepartition>) repartition;
      DefaultPieDataset pieDataset = new DefaultPieDataset();
   
 
      for(int i=0; i<top10Acteurs.size(); i++){
       
        // On remplit ligne par ligne chaque colone du tableau.
        data1[i][0] =  lstacteurs.elementAt(i).getIndividu().getPrenom();
        data1[i][1] =  lstacteurs.elementAt(i).getIndividu().getNom();
        data1[i][2] =  lstacteurs.elementAt(i).getNbAppritions();
       
      }
     
      for(int i=0; i<top10Real.size(); i++){
       
        data1[i][0] =  lstreal.elementAt(i).getIndividu().getPrenom();
        data1[i][1] =  lstreal.elementAt(i).getIndividu().getNom();
        data1[i][2] =  lstreal.elementAt(i).getNbAppritions();
       
      }
     
      for(int i=0; i<repart.size(); i++){
       
        // remplissage du diagramme 3D pour les repartitions par genre.
        pieDataset.setValue(repart.elementAt(i).getGenre().getLibelle(), repart.elementAt(i).getTaux());
       
      }
     
      // On finalise les tableaux avant de les ajouter aux JScrollPane.
      JTable tableActeurs = new JTable(data1, columnNames);
      JTable tableRealisateur = new JTable(data2, columnNames);
      tableActeurs.setFillsViewportHeight(true);
      tableRealisateur.setFillsViewportHeight(true);
      _jsAfficheTop10Act = new JScrollPane (tableActeurs);
      _jsAfficheTop10Real = new JScrollPane (tableRealisateur);
     
     
      // Construction du diagramme.
      JFreeChart chart = ChartFactory.createPieChart3D("Répartition par genre", pieDataset,true, true, true );
      chart.setBorderVisible(false);
      BufferedImage image = chart.createBufferedImage(580,275);
      _lblAfficheRepartition.setIcon(new ImageIcon(image));
   
 
     
    } catch (SQLException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (DataFormatException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
   
  }

}
TOP

Related Classes of application.vues.VuePanelStats

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.