IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Web en Java Discussion :

Problème association JFreeChart / MySQL


Sujet :

Développement Web en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Inscrit en
    Août 2010
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 416
    Par défaut
    Bonjour,

    J'ai un petit problème d’association entre JFreechart et Mysql.

    J'ai une requête SQL qui permet d'avoir des valeurs enregistrées pour les dernières 24h, ces valeurs seront utilisées dans une servlet Java afin de tracer une courbe en fonction du temps .

    Ma table (table1) est constitué de trois colonne :
    • date de type DATE
    • heure de type TIME
    • valeur de type float.

    Ci-dessous la requête utilisés :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select heure, valeur from table1
    WHERE
      STR_TO_DATE(CONCAT(`date`, ' ', heure), '%Y-%m-%d %H:%i:%s')
      BETWEEN DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 24 HOUR)
      AND CURRENT_TIMESTAMP;");
    et voici le code source de ma servlet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    package metier;
    import java.awt.Color;
    import java.awt.Graphics;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.io.PrintWriter;
    import java.sql.Date;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Timestamp;
    import java.util.Enumeration;
     
    import javax.imageio.ImageIO;
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartPanel;
    import org.jfree.chart.ChartUtilities;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.axis.DateAxis;
    import org.jfree.chart.axis.NumberAxis;
    import org.jfree.chart.plot.XYPlot;
    import org.jfree.chart.renderer.xy.XYItemRenderer;
    import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
    import org.jfree.chart.title.TextTitle;
    import org.jfree.data.time.Hour;
    import org.jfree.data.time.Minute;
    import org.jfree.data.time.Second;
    import org.jfree.data.time.TimeSeries;
    import org.jfree.data.time.TimeSeriesCollection;
    import org.jfree.ui.RectangleInsets;
     
    import com.sun.corba.se.impl.orbutil.graph.Graph;
     
    import marouene.TimeSeriesDemoTest;
    import marouene.compare;
     
     
    public class httpcompare extends HttpServlet {
        protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException, SQLException {
             connexionBD con = new connexionBD();
            response.setContentType("image/png");
     
                ResultSet rs1 = con.execute("select heure,valeur from table1 WHERE STR_TO_DATE(CONCAT(`date`, ' ', heure), '%Y-%m-%d %H:%i:%s') BETWEEN DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 24 HOUR) AND CURRENT_TIMESTAMP;");
                final TimeSeries series1 = new TimeSeries("valeur", Hour.class);
                while(rs1.next()){
     
                    java.sql.Time v1;
     
                        v1 = rs1.getTime("heure");
     
                     double v2=rs1.getFloat("valeur");
     
                     series1.addOrUpdate( new Minute(v1), v2);
     
                 }   
            DateAxis domain = new DateAxis("Time");
                NumberAxis range = new NumberAxis("Débit en Kb/s");
            final TimeSeriesCollection dataset = new TimeSeriesCollection(series1);
     
            dataset.setDomainIsPointsInTime(true);
            XYItemRenderer renderer = new XYLineAndShapeRenderer(true, false);
            XYPlot plot = new XYPlot(dataset, domain, range, renderer);
            plot.setBackgroundPaint(Color.lightGray);
            plot.setDomainGridlinePaint(Color.white);
            plot.setRangeGridlinePaint(Color.white);
            plot.setAxisOffset(new RectangleInsets(5.0, 5.0, 5.0, 5.0));
            range.setAutoRange(true);
            range.setLowerMargin(0.0);
            range.setUpperMargin(0.0);
            range.setTickLabelsVisible(true);
            range.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
            JFreeChart chart = new JFreeChart(plot);
     
            XYItemRenderer r = plot.getRenderer();
            if (r instanceof XYLineAndShapeRenderer) {
                XYLineAndShapeRenderer renderer1 = (XYLineAndShapeRenderer) r;
                renderer1.setBaseShapesVisible(true);
                renderer1.setBaseShapesFilled(true);
            }
            chart.setTitle(new TextTitle("Comparaison du débit Http"));
     
            final ChartPanel chartPanel = new ChartPanel(chart);
            chartPanel.setPreferredSize(new java.awt.Dimension(600, 300));
            chartPanel.setMouseZoomable(true, false);
     
            OutputStream out = response.getOutputStream();
            ChartUtilities.writeChartAsPNG(out, chart, 700, 500);   
              request.setAttribute("image",out);
        }        
     
         protected void doGet(HttpServletRequest request, HttpServletResponse response)
         throws ServletException, IOException {
     try {
        processRequest(request, response);
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    }
    }
    Jusque la tout devrait marcher, sauf que lors de l'affichage , dans l'axe du temps, au lieu d'avoir une axe dans l'intervalle [now, now -24h] , j'ai un affichage entre [00h, 00h] de la journée précédente, ce qui est quand même bizarre.. vue que ma requête me retourne juste les valeurs enregistrées pendant les dernières 24h.

    Quelqu'un aurait une idée sur l'origine du problème ?

    Merci beaucoup

    personne n'a eu ce genre de problème ?

  2. #2
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Par défaut
    Je ne connais pas JFreechart, cependant en lisant rapidement la documentation, j'ai l'impression que Minute(Date) ne garde que les minutes.

    Essayes donc plutôt avec Hour(Date) ...
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  3. #3
    Membre chevronné
    Inscrit en
    Août 2010
    Messages
    416
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 416
    Par défaut
    Merci pour votre réponse.

    J'ai effectivement changé de minute a hour... mais sans résultat c'est toujours la meme

Discussions similaires

  1. Problème de configuration MySQL Apache
    Par FredMines dans le forum Installation
    Réponses: 4
    Dernier message: 01/07/2005, 11h43
  2. Problème avec Ado, MySQL
    Par sylvain.g dans le forum Bases de données
    Réponses: 2
    Dernier message: 07/06/2005, 10h45
  3. problème démarrage serveur mysql
    Par vbcasimir dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 25/04/2005, 14h14
  4. Problème sous requete MySQL
    Par gavelin dans le forum Langage SQL
    Réponses: 3
    Dernier message: 20/07/2004, 10h36
  5. problème de connection mysql par tcp/ip
    Par leroyphil dans le forum Administration
    Réponses: 5
    Dernier message: 04/09/2003, 18h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo