Changeset 70 for ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/statistique/ServiceGraphe.java
- Timestamp:
- 04/26/10 19:12:49 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
ether_eccad/trunk/ECCAD_INTERFACE/WEB-INF/src/org/medias/eccad/metier/statistique/ServiceGraphe.java
r68 r70 7 7 import java.io.IOException; 8 8 import java.io.OutputStream; 9 import java.text.DecimalFormat; 10 import java.text.NumberFormat; 11 import java.text.ParseException; 9 12 import java.text.SimpleDateFormat; 13 import java.util.ArrayList; 14 import java.util.Date; 10 15 import java.util.List; 11 12 13 16 14 17 import org.jfree.chart.ChartFactory; … … 16 19 import org.jfree.chart.JFreeChart; 17 20 import org.jfree.chart.axis.DateAxis; 21 import org.jfree.chart.axis.NumberAxis; 22 import org.jfree.chart.axis.NumberTickUnit; 18 23 import org.jfree.chart.plot.XYPlot; 19 24 import org.jfree.chart.renderer.xy.XYErrorRenderer; 20 import org.jfree.data.time. Day;25 import org.jfree.data.time.FixedMillisecond; 21 26 import org.jfree.data.time.TimeSeries; 22 27 import org.jfree.data.time.TimeSeriesCollection; … … 28 33 public class ServiceGraphe { 29 34 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) { 31 36 File fichier = new File(Donnees.getHome() + "/images/graphes_temporaires/" + identifiant +"_graphe.png"); 32 37 OutputStream out = null; … … 34 39 try { 35 40 out = new FileOutputStream(fichier); 36 getGraphe(out, liste_valeur );41 getGraphe(out, liste_valeur, param, produit, unite, secteur, rcp, alt); 37 42 } 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); 39 44 return "/"; 40 45 } 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); 42 47 return "/"; 43 48 } … … 46 51 } 47 52 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) 49 54 throws IOException { 50 55 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 } 53 93 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); 137 188 } 138 189
Note: See TracChangeset
for help on using the changeset viewer.