Ignore:
Timestamp:
04/26/10 19:12:49 (14 years ago)
Author:
cbipsl
Message:

maj eccad V3.2

File:
1 edited

Legend:

Unmodified
Added
Removed
  • ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/statistique/ServiceGraphe.java

    r68 r70  
    77import java.io.IOException; 
    88import java.io.OutputStream; 
     9import java.text.DecimalFormat; 
     10import java.text.NumberFormat; 
     11import java.text.ParseException; 
    912import java.text.SimpleDateFormat; 
     13import java.util.ArrayList; 
     14import java.util.Date; 
    1015import java.util.List; 
    11  
    12  
    1316 
    1417import org.jfree.chart.ChartFactory; 
     
    1619import org.jfree.chart.JFreeChart; 
    1720import org.jfree.chart.axis.DateAxis; 
     21import org.jfree.chart.axis.NumberAxis; 
     22import org.jfree.chart.axis.NumberTickUnit; 
    1823import org.jfree.chart.plot.XYPlot; 
    1924import org.jfree.chart.renderer.xy.XYErrorRenderer; 
    20 import org.jfree.data.time.Day; 
     25import org.jfree.data.time.FixedMillisecond; 
    2126import org.jfree.data.time.TimeSeries; 
    2227import org.jfree.data.time.TimeSeriesCollection; 
     
    2833public class ServiceGraphe { 
    2934         
    30         public String genereGraphe(String identifiant, List<Valeur> liste_valeur) { 
     35        public String genereGraphe(String identifiant, List<Valeur> liste_valeur, String param, String produit, String unite, String secteur, String rcp, String alt) { 
    3136                File fichier = new File(Donnees.getHome() + "/images/graphes_temporaires/" + identifiant +"_graphe.png"); 
    3237                OutputStream out = null; 
     
    3439                try { 
    3540                        out = new FileOutputStream(fichier); 
    36                         getGraphe(out, liste_valeur); 
     41                        getGraphe(out, liste_valeur, param, produit, unite, secteur, rcp, alt); 
    3742                } catch (FileNotFoundException e) { 
    38                         LoggerPerso.log(ServiceGraphe.class, LoggerPerso.DEBUG, "erreur d'écriture du graphe", e); 
     43                        LoggerPerso.log(ServiceGraphe.class, LoggerPerso.ERROR, "erreur d'écriture du graphe", e); 
    3944                        return "/"; 
    4045                } catch (IOException e) { 
    41                         LoggerPerso.log(ServiceGraphe.class, LoggerPerso.DEBUG, "erreur d'écriture du graphe", e); 
     46                        LoggerPerso.log(ServiceGraphe.class, LoggerPerso.ERROR, "erreur d'écriture du graphe", e); 
    4247                        return "/"; 
    4348                } 
     
    4651        } 
    4752         
    48         public void getGraphe(OutputStream out, List<Valeur> liste_valeur)  
     53        public void getGraphe(OutputStream out, List<Valeur> liste_valeur, String param, String produit, String unite, String secteur, String rcp, String alt)  
    4954    throws IOException {  
    5055     
    51    // CategoryDataset dataset = new DefaultCategoryDataset();  
    52     TimeSeries time = new TimeSeries("", Day.class); 
     56                // CategoryDataset dataset = new DefaultCategoryDataset();  
     57                TimeSeries time = new TimeSeries(""); 
     58                double min = Double.MAX_VALUE, max = -1; 
     59                DecimalFormat df = new DecimalFormat("0.##E0"); 
     60                try { 
     61                        Date dateVal; 
     62                        String datePrec = ""; 
     63                        ArrayList<Double> vals = new ArrayList<Double>(); 
     64                        int nbGrilles = -1; 
     65                        double val; 
     66                        for (Valeur valeur : liste_valeur) { 
     67                                val = Double.parseDouble(valeur.getValeur()); 
     68                                if (!valeur.getNom().equals(datePrec)) { 
     69                                        nbGrilles++; 
     70                                        vals.add(Double.valueOf(val)); 
     71//                                      val = Double.parseDouble(valeur.getValeur()); 
     72                                } else { 
     73                                        vals.set(nbGrilles, Double.valueOf(vals.get(nbGrilles).doubleValue()+val)); 
     74//                                      val += Double.parseDouble(valeur.getValeur()); 
     75                                } 
     76//                              LoggerPerso.log(ServiceGraphe.class, LoggerPerso.DEBUG, "valeur graphe="+valeur.getValeur()+", nom="+valeur.getNom()+", val="+val+", format="+df.format(val)); 
     77                                dateVal = (new SimpleDateFormat("yyyyMMdd")).parse(valeur.getNom()); 
     78                                time.addOrUpdate(new FixedMillisecond(dateVal),vals.get(nbGrilles).doubleValue()); 
     79                                datePrec = valeur.getNom(); 
     80//                      time.add(new Day(Integer.parseInt(valeur.getNom().substring(6, 8)),  
     81//                                               Integer.parseInt(valeur.getNom().substring(4, 6)),  
     82//                                               Integer.parseInt(valeur.getNom().substring(0, 4))),  
     83//                              Double.parseDouble(valeur.getValeur())); 
     84                        } 
     85                        for (int num = 0; num < vals.size(); num++) { 
     86                                val = vals.get(num).doubleValue(); 
     87                                if (min > val) min = val; 
     88                                if (max < val) max = val; 
     89                        } 
     90                } catch (ParseException e) { 
     91                        e.printStackTrace(); 
     92                } 
    5393     
    54     for (Valeur valeur : liste_valeur) { 
    55          
    56         LoggerPerso.log(ServiceGraphe.class, LoggerPerso.DEBUG, "______________________________________________valeur graphe string "+valeur.getValeur()+" double "+ Double.parseDouble(valeur.getValeur())); 
    57                  
    58          
    59         time.add(new Day(Integer.parseInt(valeur.getNom().substring(6, 8)),  
    60                                                  Integer.parseInt(valeur.getNom().substring(4, 6)),  
    61                                                  Integer.parseInt(valeur.getNom().substring(0, 4))),  
    62                                  Double.parseDouble(valeur.getValeur())); 
    63         } 
    64      
    65   /*time.add(new Day(1, 1, 2000), 10); 
    66    time.add(new Day(2, 1, 2000), 10); 
    67    time.add(new Day(3, 1, 2000), 10); 
    68    time.add(new Day(4, 1, 2000), 10); 
    69    time.add(new Day(5, 1, 2000), 10); 
    70    time.add(new Day(10, 1, 2000), 100); 
    71    time.add(new Day(11, 1, 2000), 100); 
    72    time.add(new Day(12, 1, 2000), 100); 
    73    time.add(new Day(13, 1, 2000), 100); 
    74    time.add(new Day(14, 1, 2000), 100); 
    75    time.add(new Day(15, 1, 2000), 100);*/ 
    76     
    77      
    78    XYDataset dataset = new TimeSeriesCollection(time); 
    79    //dataset.setDomainIsPointsInTime(true); 
    80     JFreeChart barChart = ChartFactory.createTimeSeriesChart("", "",  
    81       "", dataset, false, true, false);  
    82     XYPlot plot = barChart.getXYPlot(); 
    83     DateAxis axis = (DateAxis) plot.getDomainAxis(); 
    84     axis.setDateFormatOverride(new SimpleDateFormat("yyyy-MM-dd")); 
    85     plot.setRenderer(new XYErrorRenderer()); 
    86     plot.getRenderer().setSeriesPaint(0, Color.blue); 
    87      
    88     /*plot.setRenderer(new XYBarRenderer()); 
    89     svgTest(barChart, "XYBarRenderer"); 
    90     plot.setRenderer(new XYStepRenderer()); 
    91     svgTest(barChart, "XYStepRenderer"); 
    92     plot.setRenderer(new ClusteredXYBarRenderer()); 
    93     svgTest(barChart, "ClusteredXYBarRenderer"); 
    94     plot.setRenderer(new CyclicXYItemRenderer()); 
    95         svgTest(barChart, "CyclicXYItemRenderer"); 
    96     plot.setRenderer(new DefaultXYItemRenderer()); 
    97         svgTest(barChart, "DefaultXYItemRenderer"); 
    98     plot.setRenderer(new DeviationRenderer()); 
    99         svgTest(barChart, "DeviationRenderer"); 
    100     plot.setRenderer(new HighLowRenderer()); 
    101         svgTest(barChart, "HighLowRenderer"); 
    102     plot.setRenderer(new StandardXYItemRenderer()); 
    103         svgTest(barChart, "StandardXYItemRenderer"); 
    104     plot.setRenderer(new VectorRenderer()); 
    105         svgTest(barChart, "VectorRenderer"); 
    106     plot.setRenderer(new XYAreaRenderer()); 
    107         svgTest(barChart, "XYAreaRenderer"); 
    108     plot.setRenderer(new XYAreaRenderer2()); 
    109         svgTest(barChart, "XYAreaRenderer2"); 
    110     plot.setRenderer(new XYBarRenderer()); 
    111         svgTest(barChart, "XYBarRenderer"); 
    112     plot.setRenderer(new XYBlockRenderer()); 
    113         svgTest(barChart, "XYBlockRenderer"); 
    114     plot.setRenderer(new XYBubbleRenderer()); 
    115     svgTest(barChart, "XYBubbleRenderer"); 
    116     plot.setRenderer(new XYDifferenceRenderer()); 
    117         svgTest(barChart, "XYDifferenceRenderer"); 
    118     plot.setRenderer(new XYDotRenderer()); 
    119         svgTest(barChart, "XYDotRenderer"); 
    120     plot.setRenderer(new XYErrorRenderer()); 
    121         svgTest(barChart, "XYErrorRenderer"); 
    122     plot.setRenderer(new XYLine3DRenderer()); 
    123         svgTest(barChart, "XYLine3DRenderer"); 
    124     plot.setRenderer(new XYLineAndShapeRenderer()); 
    125         svgTest(barChart, "XYLineAndShapeRenderer"); 
    126     plot.setRenderer(new XYStepAreaRenderer()); 
    127         svgTest(barChart, "XYStepAreaRenderer"); 
    128     plot.setRenderer(new XYStepRenderer()); 
    129         svgTest(barChart, "XYStepRenderer"); 
    130     plot.setRenderer(new YIntervalRenderer()); 
    131     svgTest(barChart, "YIntervalRenderer");*/ 
    132     
    133      
    134     ChartUtilities.writeChartAsPNG(out, barChart, 720, 360); 
    135          
    136          
     94                XYDataset dataset = new TimeSeriesCollection(time); 
     95                //dataset.setDomainIsPointsInTime(true); 
     96                String titre = param; 
     97                if (produit.equals("IPCC")) { 
     98                        titre += ", "+secteur; 
     99                        if (!rcp.equals("None")) { 
     100                                titre += ", RCP "+rcp; 
     101                        } 
     102                } 
     103                titre += " : "+produit; 
     104                if (produit.equals("IPCC") && !alt.equals("0")) { 
     105                        if (alt.equals("Sum")) 
     106                                titre += " (Sum altitude)"; 
     107                        else 
     108                                titre += " ("+alt+" km)"; 
     109                } 
     110                JFreeChart barChart = ChartFactory.createTimeSeriesChart(titre, "Date",  
     111                                unite, dataset, false, true, false); 
     112                XYPlot plot = barChart.getXYPlot(); 
     113                DateAxis axis = (DateAxis) plot.getDomainAxis(); 
     114                axis.setDateFormatOverride(new SimpleDateFormat("yyyy-MM-dd")); 
     115                plot.setRenderer(new XYErrorRenderer()); 
     116                plot.getRenderer().setSeriesPaint(0, Color.blue); 
     117//              if (!unite.equals("pers/km2") && !unite.equals("%") && !unite.equals("km2") && !unite.equals("number of fires")) { 
     118//                      plot.getRangeAxis().setStandardTickUnits(new StandardTickUnitSource()); 
     119//              } 
     120//                      plot.getRangeAxis().setUpperBound(max); 
     121//                      plot.getRangeAxis().setLowerBound(min); 
     122                if (max != -1) { 
     123                        NumberAxis na = (NumberAxis)plot.getRangeAxis(); 
     124                        na.setAutoTickUnitSelection(false); 
     125                        if (max == min && min != 0) { 
     126                                min = 0; 
     127                        } else if (max == min && min == 0) { 
     128                                max = 6; 
     129                        } 
     130                        na.setRangeWithMargins(min-(max-min)/20,max+(max-min)/20); 
     131                        if (!unite.equals("pers/km2") && !unite.equals("%") && !unite.equals("km2") && !unite.equals("number of fires")) { 
     132                                na.setTickUnit(new NumberTickUnit((max-min)/6,df)); 
     133                        } else { 
     134                                na.setTickUnit(new NumberTickUnit((max-min)/6,NumberFormat.getIntegerInstance())); 
     135                        } 
     136                } 
     137//      plot.setBackgroundPaint(Color.white); 
     138 
     139//              plot.setRenderer(new StandardXYItemRenderer( 
     140//                StandardXYItemRenderer.LINES + StandardXYItemRenderer.SHAPES)); 
     141 
     142                /*plot.setRenderer(new XYBarRenderer()); 
     143        svgTest(barChart, "XYBarRenderer"); 
     144        plot.setRenderer(new XYStepRenderer()); 
     145        svgTest(barChart, "XYStepRenderer"); 
     146        plot.setRenderer(new ClusteredXYBarRenderer()); 
     147        svgTest(barChart, "ClusteredXYBarRenderer"); 
     148        plot.setRenderer(new CyclicXYItemRenderer()); 
     149                svgTest(barChart, "CyclicXYItemRenderer"); 
     150        plot.setRenderer(new DefaultXYItemRenderer()); 
     151                svgTest(barChart, "DefaultXYItemRenderer"); 
     152        plot.setRenderer(new DeviationRenderer()); 
     153                svgTest(barChart, "DeviationRenderer"); 
     154        plot.setRenderer(new HighLowRenderer()); 
     155                svgTest(barChart, "HighLowRenderer"); 
     156        plot.setRenderer(new StandardXYItemRenderer()); 
     157                svgTest(barChart, "StandardXYItemRenderer"); 
     158        plot.setRenderer(new VectorRenderer()); 
     159                svgTest(barChart, "VectorRenderer"); 
     160        plot.setRenderer(new XYAreaRenderer()); 
     161                svgTest(barChart, "XYAreaRenderer"); 
     162        plot.setRenderer(new XYAreaRenderer2()); 
     163                svgTest(barChart, "XYAreaRenderer2"); 
     164        plot.setRenderer(new XYBarRenderer()); 
     165                svgTest(barChart, "XYBarRenderer"); 
     166        plot.setRenderer(new XYBlockRenderer()); 
     167                svgTest(barChart, "XYBlockRenderer"); 
     168        plot.setRenderer(new XYBubbleRenderer()); 
     169        svgTest(barChart, "XYBubbleRenderer"); 
     170        plot.setRenderer(new XYDifferenceRenderer()); 
     171                svgTest(barChart, "XYDifferenceRenderer"); 
     172        plot.setRenderer(new XYDotRenderer()); 
     173                svgTest(barChart, "XYDotRenderer"); 
     174        plot.setRenderer(new XYErrorRenderer()); 
     175                svgTest(barChart, "XYErrorRenderer"); 
     176        plot.setRenderer(new XYLine3DRenderer()); 
     177                svgTest(barChart, "XYLine3DRenderer"); 
     178        plot.setRenderer(new XYLineAndShapeRenderer()); 
     179                svgTest(barChart, "XYLineAndShapeRenderer"); 
     180        plot.setRenderer(new XYStepAreaRenderer()); 
     181                svgTest(barChart, "XYStepAreaRenderer"); 
     182        plot.setRenderer(new XYStepRenderer()); 
     183                svgTest(barChart, "XYStepRenderer"); 
     184        plot.setRenderer(new YIntervalRenderer()); 
     185        svgTest(barChart, "YIntervalRenderer");*/ 
     186 
     187                ChartUtilities.writeChartAsPNG(out, barChart, 720, 360); 
    137188        } 
    138189         
Note: See TracChangeset for help on using the changeset viewer.