comparison artifacts/src/main/java/org/dive4elements/river/artifacts/charts/TimeseriesStepChart.java @ 5838:5aa05a7a34b7

Rename modules to more fitting names.
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 25 Apr 2013 15:23:37 +0200
parents flys-artifacts/src/main/java/org/dive4elements/river/artifacts/charts/TimeseriesStepChart.java@bd047b71ab37
children 4897a58c8746
comparison
equal deleted inserted replaced
5837:d9901a08d0a6 5838:5aa05a7a34b7
1 package org.dive4elements.river.artifacts.charts;
2
3 import java.awt.Dimension;
4 import java.util.Date;
5 import java.util.GregorianCalendar;
6
7 import org.jfree.chart.ChartFactory;
8 import org.jfree.chart.ChartPanel;
9 import org.jfree.chart.JFreeChart;
10 import org.jfree.ui.ApplicationFrame;
11
12 import org.jfree.data.time.SimpleTimePeriod;
13 import org.jfree.data.time.Second;
14 import org.jfree.data.time.TimeSeries;
15 import org.jfree.data.time.TimeSeriesCollection;
16 import org.jfree.data.time.TimePeriodValues;
17 import org.jfree.data.time.TimePeriodValuesCollection;
18
19 import org.apache.log4j.Logger;
20 import org.apache.log4j.PropertyConfigurator;
21
22
23 public class TimeseriesStepChart extends ApplicationFrame {
24
25 private static final Logger logger =
26 Logger.getLogger(TimeseriesStepChart.class);
27
28
29 public static final String LOG4J_PROPERTIES = "FLYS_CLIENT_LOG4J_PROPERIES";
30
31 public static final int USER_CHART_TYPE =
32 Integer.getInteger("chart.type", -1);
33
34 public static final int CHART_TYPE_TIMEPERIOD = 1;
35 public static final int CHART_TYPE_TIMESERIES = 2;
36
37
38 public static void main(String[] args) {
39 configureLogging();
40
41 logger.info("Start TimeseriesStepChart demo.");
42
43 if (USER_CHART_TYPE <= 0) {
44 logger.error("Unknown chart type: " + USER_CHART_TYPE);
45 }
46
47 logger.debug("Create Chart from type: " + USER_CHART_TYPE);
48
49 TimeseriesStepChart tsc = new TimeseriesStepChart();
50 tsc.build(USER_CHART_TYPE);
51
52 logger.info("End of TimeseriesStepChart demo.");
53 }
54
55
56 /** Setup the log4j logging (read LOG4J_PROPERIES envvar). */
57 public static void configureLogging() {
58 String log4jProperties = System.getenv(LOG4J_PROPERTIES);
59
60 if (log4jProperties != null && log4jProperties.length() > 0) {
61 PropertyConfigurator.configure(log4jProperties);
62 logger.info("Log4J logging initialized.");
63 }
64 else {
65 System.out.println("Error while setting up Log4J configuration.");
66 }
67
68 System.out.println("LoggingConfigurator.init finished");
69 }
70
71
72 public TimeseriesStepChart() {
73 super("TimeseriesStepChart");
74 }
75
76
77 public void build(int type) {
78 ChartPanel chartPanel = createChartPanel(type);
79 chartPanel.setPreferredSize(new Dimension(500, 300));
80
81 setContentPane(chartPanel);
82
83 pack();
84 setVisible(true);
85 }
86
87
88 protected ChartPanel createChartPanel(int type) {
89 JFreeChart chart = createJFreeChart(type);
90 ChartPanel panel = new ChartPanel(chart);
91 return panel;
92 }
93
94
95 protected JFreeChart createJFreeChart(int type) {
96 if (type == CHART_TYPE_TIMEPERIOD) {
97 return createTimePeriodValuesChart();
98 }
99 else if (type == CHART_TYPE_TIMESERIES) {
100 return createTimeSeriesChart();
101 }
102
103 logger.error("Unknown chart type: " + type);
104
105 return null;
106 }
107
108
109 public static Date createDate(int year, int month, int day) {
110 GregorianCalendar cal = new GregorianCalendar(year, month, day);
111 return cal.getTime();
112 }
113
114
115
116 //
117 // XXX FOLLOWING METHODS ARE USED FOR "TimePeriodValues" CHART TYPE
118 //
119 protected JFreeChart createTimePeriodValuesChart() {
120 return ChartFactory.createTimeSeriesChart(
121 "TimePeriodValues Chart",
122 "Time Axis",
123 "Y Axis",
124 createTimePeriodValuesDataset(),
125 true,
126 false,
127 false);
128 }
129
130
131 protected TimePeriodValuesCollection createTimePeriodValuesDataset() {
132 TimePeriodValuesCollection dataset = new TimePeriodValuesCollection();
133 TimePeriodValues series = createTimePeriodValues();
134
135 dataset.addSeries(series);
136
137 return dataset;
138 }
139
140
141 protected TimePeriodValues createTimePeriodValues() {
142 TimePeriodValues series1 = new TimePeriodValues("Series 1");
143
144 Date start1 = createDate(2000, 0, 1);
145 Date end1 = createDate(2000, 11, 31);
146
147 logger.debug("START DATE 1 = " + start1);
148 logger.debug("END DATE 1 = " + end1);
149
150 SimpleTimePeriod period1 = new SimpleTimePeriod(start1, end1);
151
152 Date start2 = createDate(2001, 0, 1);
153 Date end2 = createDate(2001, 11, 31);
154 SimpleTimePeriod period2 = new SimpleTimePeriod(start2, end2);
155
156 Date start3 = createDate(2002, 0, 1);
157 Date end3 = createDate(2002, 11, 31);
158 SimpleTimePeriod period3 = new SimpleTimePeriod(start3, end3);
159
160 series1.add(period1, 100);
161 series1.add(period2, 200);
162 series1.add(period3, 150);
163
164 return series1;
165 }
166
167
168 //
169 // XXX FOLLOWING METHODS ARE USED FOR "TimePeriodValues" CHART TYPE
170 //
171 protected JFreeChart createTimeSeriesChart() {
172 return ChartFactory.createTimeSeriesChart(
173 "TimeSeriesCollection Chart",
174 "Time Axis",
175 "Y Axis",
176 createTimeSeriesCollectionDataset(),
177 true,
178 false,
179 false);
180 }
181
182
183 protected TimeSeriesCollection createTimeSeriesCollectionDataset() {
184 TimeSeriesCollection dataset = new TimeSeriesCollection();
185 TimeSeries[] series = createTimeSeries();
186
187 for (TimeSeries tmp: series) {
188 dataset.addSeries(tmp);
189 }
190
191 return dataset;
192 }
193
194
195 protected TimeSeries[] createTimeSeries() {
196 TimeSeries series1 = new TimeSeries("Series 1");
197 series1.add(new Second(0, 0, 0, 1, 1, 2000), 100);
198 series1.add(new Second(59, 59, 23, 31, 12, 2000), 100);
199
200 series1.add(new Second(0, 0, 0, 1, 1, 2001), 200);
201 series1.add(new Second(59, 59, 23, 31, 12, 2001), 200);
202
203 series1.add(new Second(0, 0, 0, 1, 1, 2002), 150);
204 series1.add(new Second(59, 59, 23, 31, 12, 2002), 150);
205
206 TimeSeries series2 = new TimeSeries("Series 2");
207 series2.add(new Second(0, 0, 0, 1, 1, 2000), 10);
208 series2.add(new Second(59, 59, 23, 31, 12, 2000), 10);
209
210 series2.add(new Second(0, 0, 0, 1, 1, 2001), 20);
211 series2.add(new Second(59, 59, 23, 31, 12, 2001), 20);
212
213 series2.add(new Second(0, 0, 0, 1, 1, 2002), 15);
214 series2.add(new Second(59, 59, 23, 31, 12, 2002), 15);
215
216 return new TimeSeries[] { series1, series2 };
217 }
218 }
219 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org