1 | package org.medias.eccad.metier.statistique; |
---|
2 | |
---|
3 | import java.awt.Color; |
---|
4 | import java.io.File; |
---|
5 | import java.io.FileNotFoundException; |
---|
6 | import java.io.FileOutputStream; |
---|
7 | import java.io.IOException; |
---|
8 | import java.io.OutputStream; |
---|
9 | import java.text.SimpleDateFormat; |
---|
10 | import java.util.List; |
---|
11 | |
---|
12 | |
---|
13 | |
---|
14 | import org.jfree.chart.ChartFactory; |
---|
15 | import org.jfree.chart.ChartUtilities; |
---|
16 | import org.jfree.chart.JFreeChart; |
---|
17 | import org.jfree.chart.axis.DateAxis; |
---|
18 | import org.jfree.chart.plot.XYPlot; |
---|
19 | import org.jfree.chart.renderer.xy.XYErrorRenderer; |
---|
20 | import org.jfree.data.time.Day; |
---|
21 | import org.jfree.data.time.TimeSeries; |
---|
22 | import org.jfree.data.time.TimeSeriesCollection; |
---|
23 | import org.jfree.data.xy.XYDataset; |
---|
24 | import org.medias.eccad.helpers.Donnees; |
---|
25 | import org.medias.eccad.helpers.LoggerPerso; |
---|
26 | import org.medias.eccad.modele.Valeur; |
---|
27 | |
---|
28 | public class ServiceGraphe { |
---|
29 | |
---|
30 | public String genereGraphe(String identifiant, List<Valeur> liste_valeur) { |
---|
31 | File fichier = new File(Donnees.getHome() + "/images/graphes_temporaires/" + identifiant +"_graphe.png"); |
---|
32 | OutputStream out = null; |
---|
33 | |
---|
34 | try { |
---|
35 | out = new FileOutputStream(fichier); |
---|
36 | getGraphe(out, liste_valeur); |
---|
37 | } catch (FileNotFoundException e) { |
---|
38 | LoggerPerso.log(ServiceGraphe.class, LoggerPerso.DEBUG, "erreur d'écriture du graphe", e); |
---|
39 | return "/"; |
---|
40 | } catch (IOException e) { |
---|
41 | LoggerPerso.log(ServiceGraphe.class, LoggerPerso.DEBUG, "erreur d'écriture du graphe", e); |
---|
42 | return "/"; |
---|
43 | } |
---|
44 | |
---|
45 | return "/images/graphes_temporaires/" + identifiant +"_graphe.png"; |
---|
46 | } |
---|
47 | |
---|
48 | public void getGraphe(OutputStream out, List<Valeur> liste_valeur) |
---|
49 | throws IOException { |
---|
50 | |
---|
51 | // CategoryDataset dataset = new DefaultCategoryDataset(); |
---|
52 | TimeSeries time = new TimeSeries("", Day.class); |
---|
53 | |
---|
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 | |
---|
137 | } |
---|
138 | |
---|
139 | /*private void svgTest(JFreeChart graphe, String type) { |
---|
140 | File fichier = new File("/tmp/" + type + ".png"); |
---|
141 | OutputStream out = null; |
---|
142 | try { |
---|
143 | out = new FileOutputStream(fichier); |
---|
144 | ChartUtilities.writeChartAsPNG(out, graphe, 720, 360); |
---|
145 | out.close(); |
---|
146 | } catch (FileNotFoundException e) { |
---|
147 | // TODO Auto-generated catch block |
---|
148 | e.printStackTrace(); |
---|
149 | } catch (IOException e) { |
---|
150 | // TODO Auto-generated catch block |
---|
151 | e.printStackTrace(); |
---|
152 | } |
---|
153 | }*/ |
---|
154 | } |
---|