~brian-thomason/+junk/jasperreports3.7

« back to all changes in this revision

Viewing changes to src/net/sf/jasperreports/engine/convert/ConvertChartContext.java

  • Committer: Brian Thomason
  • Date: 2011-12-20 17:51:16 UTC
  • Revision ID: brian.thomason@canonical.com-20111220175116-apwo6unuaedvgzo3
Initial import

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * JasperReports - Free Java Reporting Library.
 
3
 * Copyright (C) 2001 - 2009 Jaspersoft Corporation. All rights reserved.
 
4
 * http://www.jaspersoft.com
 
5
 *
 
6
 * Unless you have purchased a commercial license agreement from Jaspersoft,
 
7
 * the following license terms apply:
 
8
 *
 
9
 * This program is part of JasperReports.
 
10
 *
 
11
 * JasperReports is free software: you can redistribute it and/or modify
 
12
 * it under the terms of the GNU Lesser General Public License as published by
 
13
 * the Free Software Foundation, either version 3 of the License, or
 
14
 * (at your option) any later version.
 
15
 *
 
16
 * JasperReports is distributed in the hope that it will be useful,
 
17
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
18
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 
19
 * GNU Lesser General Public License for more details.
 
20
 * 
 
21
 * You should have received a copy of the GNU Lesser General Public License
 
22
 * along with JasperReports. If not, see <http://www.gnu.org/licenses/>.
 
23
 */
 
24
 
 
25
/*
 
26
 * Contributors:
 
27
 * Eugene D - eugenedruy@users.sourceforge.net 
 
28
 * Adrian Jackson - iapetus@users.sourceforge.net
 
29
 * David Taylor - exodussystems@users.sourceforge.net
 
30
 * Lars Kristensen - llk@users.sourceforge.net
 
31
 */
 
32
package net.sf.jasperreports.engine.convert;
 
33
 
 
34
import java.util.Calendar;
 
35
import java.util.Date;
 
36
import java.util.Locale;
 
37
import java.util.TimeZone;
 
38
 
 
39
import net.sf.jasperreports.charts.ChartContext;
 
40
import net.sf.jasperreports.engine.JRChart;
 
41
import net.sf.jasperreports.engine.JRChartDataset;
 
42
import net.sf.jasperreports.engine.JRException;
 
43
import net.sf.jasperreports.engine.JRExpression;
 
44
 
 
45
import org.jfree.data.category.CategoryDataset;
 
46
import org.jfree.data.category.DefaultCategoryDataset;
 
47
import org.jfree.data.category.IntervalCategoryDataset;
 
48
import org.jfree.data.gantt.Task;
 
49
import org.jfree.data.gantt.TaskSeries;
 
50
import org.jfree.data.gantt.TaskSeriesCollection;
 
51
import org.jfree.data.general.Dataset;
 
52
import org.jfree.data.general.DefaultPieDataset;
 
53
import org.jfree.data.general.DefaultValueDataset;
 
54
import org.jfree.data.general.PieDataset;
 
55
import org.jfree.data.time.Day;
 
56
import org.jfree.data.time.Hour;
 
57
import org.jfree.data.time.Minute;
 
58
import org.jfree.data.time.SimpleTimePeriod;
 
59
import org.jfree.data.time.TimePeriodValues;
 
60
import org.jfree.data.time.TimePeriodValuesCollection;
 
61
import org.jfree.data.time.TimeSeries;
 
62
import org.jfree.data.time.TimeSeriesCollection;
 
63
import org.jfree.data.time.Year;
 
64
import org.jfree.data.xy.DefaultHighLowDataset;
 
65
import org.jfree.data.xy.DefaultXYZDataset;
 
66
import org.jfree.data.xy.OHLCDataset;
 
67
import org.jfree.data.xy.XYDataset;
 
68
import org.jfree.data.xy.XYSeries;
 
69
import org.jfree.data.xy.XYSeriesCollection;
 
70
import org.jfree.data.xy.XYZDataset;
 
71
import org.jfree.date.DateUtilities;
 
72
 
 
73
 
 
74
/**
 
75
 * @author Teodor Danciu (teodord@users.sourceforge.net)
 
76
 * @version $Id: ConvertChartContext.java 3690 2010-04-06 12:23:17Z shertage $
 
77
 */
 
78
public class ConvertChartContext implements ChartContext
 
79
{
 
80
        private final JRChart chart;
 
81
        
 
82
        protected ConvertChartContext(JRChart chart)
 
83
        {
 
84
                this.chart = chart;
 
85
        }
 
86
        
 
87
        public Object evaluateExpression(JRExpression expression) throws JRException {
 
88
                if (expression != null)
 
89
                {
 
90
                        if (String.class.getName().equals(expression.getValueClassName()))
 
91
                        {
 
92
                                return expression.getText();
 
93
                        }
 
94
                }
 
95
                return null;
 
96
        }
 
97
 
 
98
        public JRChart getChart() {
 
99
                return chart;
 
100
        }
 
101
 
 
102
        public Dataset getDataset()
 
103
        {//FIXMETHEME make different datasets
 
104
                Dataset dataset = null;
 
105
                switch (chart.getDataset().getDatasetType()){
 
106
                case JRChartDataset.CATEGORY_DATASET:
 
107
                        dataset = createCategoryDataset();
 
108
                        break;
 
109
                case JRChartDataset.GANTT_DATASET:
 
110
                        dataset = createGanttDataset();
 
111
                        break;
 
112
                case JRChartDataset.HIGHLOW_DATASET:
 
113
                        dataset = createHighLowDataset();
 
114
                        break;
 
115
                case JRChartDataset.PIE_DATASET:
 
116
                        dataset = createPieDataset();
 
117
                        break;
 
118
                case JRChartDataset.TIMEPERIOD_DATASET:
 
119
                        dataset = createTimePeriodDataset();
 
120
                        break;
 
121
                case JRChartDataset.TIMESERIES_DATASET:
 
122
                        dataset = createTimeSeriesDataset();
 
123
                        break;
 
124
                case JRChartDataset.VALUE_DATASET:
 
125
                        dataset = new DefaultValueDataset(50);
 
126
                        break;
 
127
                case JRChartDataset.XY_DATASET:
 
128
                        dataset = createXyDataset();
 
129
                        break;
 
130
                case JRChartDataset.XYZ_DATASET:
 
131
                        dataset = createXyzDataset();
 
132
                        break;
 
133
                }
 
134
                return dataset;
 
135
        }
 
136
 
 
137
        public Object getLabelGenerator() {
 
138
                return null;
 
139
        }
 
140
 
 
141
        public Locale getLocale() {
 
142
                return null;//FIXMETHEME
 
143
        }
 
144
 
 
145
        public TimeZone getTimeZone() {
 
146
                return null;
 
147
        }
 
148
        
 
149
        private static DefaultCategoryDataset sampleCategoryDataset = null;
 
150
        
 
151
        private CategoryDataset createCategoryDataset()
 
152
        {
 
153
                if (sampleCategoryDataset == null)
 
154
                {
 
155
                        DefaultCategoryDataset dataset = new DefaultCategoryDataset();
 
156
                        dataset.addValue(1.0, "First", "One");
 
157
                        dataset.addValue(4.0, "First", "Two");
 
158
                        dataset.addValue(3.0, "First", "Three");
 
159
                        dataset.addValue(5.0, "First", "Four");
 
160
                        dataset.addValue(5.0, "First", "Five");
 
161
                        dataset.addValue(7.0, "First", "Six");
 
162
                        dataset.addValue(7.0, "First", "Seven");
 
163
                        dataset.addValue(8.0, "First", "Eight");
 
164
                        dataset.addValue(5.0, "Second", "One");
 
165
                        dataset.addValue(7.0, "Second", "Two");
 
166
                        dataset.addValue(6.0, "Second", "Three");
 
167
                        dataset.addValue(8.0, "Second", "Four");
 
168
                        dataset.addValue(4.0, "Second", "Five");
 
169
                        dataset.addValue(4.0, "Second", "Six");
 
170
                        dataset.addValue(2.0, "Second", "Seven");
 
171
                        dataset.addValue(1.0, "Second", "Eight");
 
172
                        dataset.addValue(4.0, "Third", "One");
 
173
                        dataset.addValue(3.0, "Third", "Two");
 
174
                        dataset.addValue(2.0, "Third", "Three");
 
175
                        dataset.addValue(3.0, "Third", "Four");
 
176
                        dataset.addValue(6.0, "Third", "Five");
 
177
                        dataset.addValue(3.0, "Third", "Six");
 
178
                        dataset.addValue(4.0, "Third", "Seven");
 
179
                        dataset.addValue(3.0, "Third", "Eight");
 
180
                        
 
181
                        sampleCategoryDataset = dataset;
 
182
                }
 
183
                
 
184
                return sampleCategoryDataset;
 
185
        }
 
186
        
 
187
        private static PieDataset samplePieDataset = null;
 
188
        
 
189
        private PieDataset createPieDataset()
 
190
        {
 
191
                if (samplePieDataset == null)
 
192
                {
 
193
                        DefaultPieDataset dataset = new DefaultPieDataset();
 
194
                        dataset.setValue("First", new Double(45));
 
195
                        dataset.setValue("Second", new Double(10));
 
196
                        dataset.setValue("Third", new Double(15));
 
197
                        dataset.setValue("Fourth", new Double(25));
 
198
                        dataset.setValue("Fifth", new Double(5));
 
199
                        
 
200
                        samplePieDataset = dataset;
 
201
                }
 
202
                
 
203
                return samplePieDataset;
 
204
        }
 
205
        
 
206
        private static XYSeriesCollection sampleXyDataset = null;
 
207
        
 
208
        private XYDataset createXyDataset()
 
209
        {
 
210
                if (sampleXyDataset == null)
 
211
                {
 
212
                        XYSeriesCollection dataset = new XYSeriesCollection();
 
213
 
 
214
                        XYSeries series = new XYSeries("First");
 
215
                        series.add(1.0, 500.2);
 
216
                        series.add(5.0, 694.1);
 
217
                        series.add(4.0, 100.0);
 
218
                        series.add(12.5, 734.4);
 
219
                        series.add(17.3, 453.2);
 
220
                        series.add(21.2, 500.2);
 
221
                        series.add(21.9, null);
 
222
                        series.add(25.6, 734.4);
 
223
                        series.add(30.0, 453.2);
 
224
                        dataset.addSeries(series);
 
225
 
 
226
                        series = new XYSeries("Second");
 
227
                        series.add(2.0, 400.2);
 
228
                        series.add(6.0, 594.1);
 
229
                        series.add(5.0, 90.0);
 
230
                        series.add(13.5, 634.4);
 
231
                        series.add(18.3, 353.2);
 
232
                        series.add(22.2, 400.2);
 
233
                        series.add(22.9, null);
 
234
                        series.add(26.6, 634.4);
 
235
                        series.add(31.0, 353.2);
 
236
                        dataset.addSeries(series);
 
237
 
 
238
                        series = new XYSeries("Third");
 
239
                        series.add(0.0, 600.2);
 
240
                        series.add(4.0, 794.1);
 
241
                        series.add(3.0, 200.0);
 
242
                        series.add(11.5, 834.4);
 
243
                        series.add(16.3, 553.2);
 
244
                        series.add(20.2, 600.2);
 
245
                        series.add(20.9, null);
 
246
                        series.add(24.6, 834.4);
 
247
                        series.add(29.0, 553.2);
 
248
                        dataset.addSeries(series);
 
249
                        
 
250
                        sampleXyDataset = dataset;
 
251
                }
 
252
 
 
253
                return sampleXyDataset;
 
254
        }
 
255
        
 
256
        private static TimeSeriesCollection sampleTimeSeriesDataset = null;
 
257
        
 
258
        private TimeSeriesCollection createTimeSeriesDataset()
 
259
        {
 
260
//              TimeSeries series1 = new TimeSeries("Series 1", Day.class);
 
261
//              series1.add(new Day(1, 1, 2003), 54.3);
 
262
//              series1.add(new Day(2, 1, 2003), 20.3);
 
263
//              series1.add(new Day(3, 1, 2003), 43.4);
 
264
//              series1.add(new Day(4, 1, 2003), -12.0);
 
265
//              
 
266
//              TimeSeries series2 = new TimeSeries("Series 2", Day.class);
 
267
//              series2.add(new Day(1, 1, 2003), 8.0);
 
268
//              series2.add(new Day(2, 1, 2003), 16.0);
 
269
//              series2.add(new Day(3, 1, 2003), 21.0);
 
270
//              series2.add(new Day(4, 1, 2003), 5.0);
 
271
//              
 
272
//              TimeSeriesCollection dataset = new TimeSeriesCollection();
 
273
//              dataset.addSeries(series1);
 
274
//              dataset.addSeries(series2);
 
275
//              return dataset;
 
276
                
 
277
                if (sampleTimeSeriesDataset == null)
 
278
                {
 
279
                        TimeSeriesCollection dataset = new TimeSeriesCollection();
 
280
                        
 
281
                        TimeSeries series = new TimeSeries("First", "Year", "Count", Year.class);
 
282
                        try 
 
283
                        {
 
284
                                series.add(new Year(1976), Integer.valueOf(0));
 
285
                                series.add(new Year(1977), Integer.valueOf(1));
 
286
                                series.add(new Year(1978), Integer.valueOf(0));
 
287
                                series.add(new Year(1979), Integer.valueOf(2));
 
288
                                series.add(new Year(1980), Integer.valueOf(0));
 
289
                                series.add(new Year(1981), Integer.valueOf(1));
 
290
                                series.add(new Year(1982), Integer.valueOf(2));
 
291
                                series.add(new Year(1983), Integer.valueOf(5));
 
292
                                series.add(new Year(1984), Integer.valueOf(21));
 
293
                                series.add(new Year(1985), Integer.valueOf(18));
 
294
                                series.add(new Year(1986), Integer.valueOf(18));
 
295
                                series.add(new Year(1987), Integer.valueOf(25));
 
296
                                series.add(new Year(1988), Integer.valueOf(11));
 
297
                                series.add(new Year(1989), Integer.valueOf(16));
 
298
                                series.add(new Year(1990), Integer.valueOf(23));
 
299
                                series.add(new Year(1991), Integer.valueOf(14));
 
300
                                series.add(new Year(1992), Integer.valueOf(31));
 
301
                                series.add(new Year(1993), Integer.valueOf(38));
 
302
                                series.add(new Year(1994), Integer.valueOf(31));
 
303
                                series.add(new Year(1995), Integer.valueOf(56));
 
304
                                series.add(new Year(1996), Integer.valueOf(45));
 
305
                                series.add(new Year(1997), Integer.valueOf(74));
 
306
                                series.add(new Year(1998), Integer.valueOf(68));
 
307
                                series.add(new Year(1999), Integer.valueOf(98));
 
308
                                series.add(new Year(2000), Integer.valueOf(85));
 
309
                                series.add(new Year(2001), Integer.valueOf(66));
 
310
                                series.add(new Year(2002), Integer.valueOf(71));
 
311
                                series.add(new Year(2003), Integer.valueOf(65));
 
312
                                series.add(new Year(2004), Integer.valueOf(59));
 
313
                                series.add(new Year(2005), Integer.valueOf(60));
 
314
                        }
 
315
                        catch (Exception e) 
 
316
                        {
 
317
                                System.err.println(e.getMessage());
 
318
                        }
 
319
                        
 
320
                        dataset.addSeries(series);
 
321
                        
 
322
                        sampleTimeSeriesDataset = dataset;
 
323
                }
 
324
                
 
325
                return sampleTimeSeriesDataset;
 
326
        }
 
327
        
 
328
        private static DefaultXYZDataset sampleXyzDataset = null;
 
329
        
 
330
        private XYZDataset createXyzDataset()
 
331
        {
 
332
                if (sampleXyzDataset == null)
 
333
                {
 
334
                        DefaultXYZDataset dataset = new DefaultXYZDataset(); 
 
335
                        
 
336
                        dataset.addSeries(
 
337
                                "First", 
 
338
                                new double[][]{ 
 
339
                                        {2.1, 2.3, 2.3, 2.2, 2.2, 1.8, 1.8, 1.9, 2.3, 3.8}, 
 
340
                                        {14.1, 11.1, 10.0, 8.8, 8.7, 8.4, 5.4, 4.1, 4.1, 25}, 
 
341
                                        {2.4, 2.7, 2.7, 2.2, 2.2, 2.2, 2.1, 2.2, 1.6, 4}
 
342
                                        }
 
343
                                );
 
344
                        
 
345
                        sampleXyzDataset = dataset;
 
346
                }
 
347
                
 
348
                return sampleXyzDataset;
 
349
        }
 
350
 
 
351
        private static TaskSeriesCollection sampleGanttDataset = null;
 
352
        
 
353
        private IntervalCategoryDataset createGanttDataset() 
 
354
        {
 
355
                if (sampleGanttDataset == null)
 
356
                {
 
357
                        TaskSeriesCollection dataset = new TaskSeriesCollection();
 
358
 
 
359
                        TaskSeries series = new TaskSeries("Scheduled");
 
360
                        series.add(new Task("First", new SimpleTimePeriod(date(1, Calendar.APRIL, 2008), date(5, Calendar.APRIL, 2008))));
 
361
                        series.add(new Task("Second", new SimpleTimePeriod(date(9, Calendar.APRIL, 2008), date(9, Calendar.APRIL, 2008))));
 
362
                        series.add(new Task("Third", new SimpleTimePeriod(date(10, Calendar.APRIL, 2008), date(5, Calendar.MAY, 2008))));
 
363
                        series.add(new Task("Fourth", new SimpleTimePeriod(date(6, Calendar.MAY, 2008), date(30, Calendar.MAY, 2008))));
 
364
                        series.add(new Task("Fifth", new SimpleTimePeriod(date(2, Calendar.JUNE, 2008), date(2, Calendar.JUNE, 2008))));
 
365
                        dataset.add(series);
 
366
                        
 
367
                        series = new TaskSeries("Actual");
 
368
                        series.add(new Task("First", new SimpleTimePeriod(date(1, Calendar.APRIL, 2008), date(5, Calendar.APRIL, 2008))));
 
369
                        series.add(new Task("Second", new SimpleTimePeriod(date(9, Calendar.APRIL, 2008), date(9, Calendar.APRIL, 2008))));
 
370
                        series.add(new Task("Third", new SimpleTimePeriod(date(10, Calendar.APRIL, 2008), date(15, Calendar.MAY, 2008))));
 
371
                        series.add(new Task("Fourth", new SimpleTimePeriod(date(15, Calendar.MAY, 2008), date(17, Calendar.JUNE, 2008))));
 
372
                        series.add(new Task("Fifth", new SimpleTimePeriod(date(30, Calendar.JUNE, 2008), date(30, Calendar.JUNE, 2008))));
 
373
                        dataset.add(series);
 
374
 
 
375
                        sampleGanttDataset = dataset;
 
376
                }
 
377
                
 
378
                return sampleGanttDataset;
 
379
        }
 
380
        
 
381
        private static Date date(int day, int month, int year)
 
382
        {
 
383
                Calendar calendar = Calendar.getInstance();
 
384
                calendar.set(year, month, day);
 
385
                return calendar.getTime();
 
386
        }
 
387
 
 
388
        private static DefaultHighLowDataset sampleHighLowDataset = null;
 
389
        
 
390
        private OHLCDataset createHighLowDataset() 
 
391
        {
 
392
                if (sampleHighLowDataset == null)
 
393
                {
 
394
                        Date[] date = new Date[47];
 
395
                        double[] high = new double[47];
 
396
                        double[] low = new double[47];
 
397
                        double[] open = new double[47];
 
398
                        double[] close = new double[47];
 
399
                        double[] volume = new double[47];
 
400
                        
 
401
                        int jan = 1;
 
402
                        int feb = 2;
 
403
                        
 
404
                        date[0]  = DateUtilities.createDate(2001, jan, 4, 12, 0);
 
405
                        high[0]  = 47.0;
 
406
                        low[0]   = 33.0;
 
407
                        open[0]  = 35.0;
 
408
                        close[0] = 33.0;
 
409
                        volume[0] = 100.0;
 
410
                        
 
411
                        date[1]  = DateUtilities.createDate(2001, jan, 5, 12, 0);
 
412
                        high[1]  = 47.0;
 
413
                        low[1]   = 32.0;
 
414
                        open[1]  = 41.0;
 
415
                        close[1] = 37.0;
 
416
                        volume[1] = 150.0;
 
417
                        
 
418
                        date[2]  = DateUtilities.createDate(2001, jan, 6, 12, 0);
 
419
                        high[2]  = 49.0;
 
420
                        low[2]   = 43.0;
 
421
                        open[2]  = 46.0;
 
422
                        close[2] = 48.0;
 
423
                        volume[2] = 70.0;
 
424
                        
 
425
                        date[3]  = DateUtilities.createDate(2001, jan, 7, 12, 0);
 
426
                        high[3]  = 51.0;
 
427
                        low[3]   = 39.0;
 
428
                        open[3]  = 40.0;
 
429
                        close[3] = 47.0;
 
430
                        volume[3] = 200.0;
 
431
                        
 
432
                        date[4]  = DateUtilities.createDate(2001, jan, 8, 12, 0);
 
433
                        high[4]  = 60.0;
 
434
                        low[4]   = 40.0;
 
435
                        open[4]  = 46.0;
 
436
                        close[4] = 53.0;
 
437
                        volume[4] = 120.0;
 
438
                        
 
439
                        date[5]  = DateUtilities.createDate(2001, jan, 9, 12, 0);
 
440
                        high[5]  = 62.0;
 
441
                        low[5]   = 55.0;
 
442
                        open[5]  = 57.0;
 
443
                        close[5] = 61.0;
 
444
                        volume[5] = 110.0;
 
445
                        
 
446
                        date[6]  = DateUtilities.createDate(2001, jan, 10, 12, 0);
 
447
                        high[6]  = 65.0;
 
448
                        low[6]   = 56.0;
 
449
                        open[6]  = 62.0;
 
450
                        close[6] = 59.0;
 
451
                        volume[6] = 70.0;
 
452
                        
 
453
                        date[7]  = DateUtilities.createDate(2001, jan, 11, 12, 0);
 
454
                        high[7]  = 55.0;
 
455
                        low[7]   = 43.0;
 
456
                        open[7]  = 45.0;
 
457
                        close[7] = 47.0;
 
458
                        volume[7] = 20.0;
 
459
                        
 
460
                        date[8]  = DateUtilities.createDate(2001, jan, 12, 12, 0);
 
461
                        high[8]  = 54.0;
 
462
                        low[8]   = 33.0;
 
463
                        open[8]  = 40.0;
 
464
                        close[8] = 51.0;
 
465
                        volume[8] = 30.0;
 
466
                        
 
467
                        date[9]  = DateUtilities.createDate(2001, jan, 13, 12, 0);
 
468
                        high[9]  = 47.0;
 
469
                        low[9]   = 33.0;
 
470
                        open[9]  = 35.0;
 
471
                        close[9] = 33.0;
 
472
                        volume[9] = 100.0;
 
473
                        
 
474
                        date[10]  = DateUtilities.createDate(2001, jan, 14, 12, 0);
 
475
                        high[10]  = 54.0;
 
476
                        low[10]   = 38.0;
 
477
                        open[10]  = 43.0;
 
478
                        close[10] = 52.0;
 
479
                        volume[10] = 50.0;
 
480
                        
 
481
                        date[11]  = DateUtilities.createDate(2001, jan, 15, 12, 0);
 
482
                        high[11]  = 48.0;
 
483
                        low[11]   = 41.0;
 
484
                        open[11]  = 44.0;
 
485
                        close[11] = 41.0;
 
486
                        volume[11] = 80.0;
 
487
                        
 
488
                        date[12]  = DateUtilities.createDate(2001, jan, 17, 12, 0);
 
489
                        high[12]  = 60.0;
 
490
                        low[12]   = 30.0;
 
491
                        open[12]  = 34.0;
 
492
                        close[12] = 44.0;
 
493
                        volume[12] = 90.0;
 
494
                        
 
495
                        date[13]  = DateUtilities.createDate(2001, jan, 18, 12, 0);
 
496
                        high[13]  = 58.0;
 
497
                        low[13]   = 44.0;
 
498
                        open[13]  = 54.0;
 
499
                        close[13] = 56.0;
 
500
                        volume[13] = 20.0;
 
501
                        
 
502
                        date[14]  = DateUtilities.createDate(2001, jan, 19, 12, 0);
 
503
                        high[14]  = 54.0;
 
504
                        low[14]   = 32.0;
 
505
                        open[14]  = 42.0;
 
506
                        close[14] = 53.0;
 
507
                        volume[14] = 70.0;
 
508
                        
 
509
                        date[15]  = DateUtilities.createDate(2001, jan, 20, 12, 0);
 
510
                        high[15]  = 53.0;
 
511
                        low[15]   = 39.0;
 
512
                        open[15]  = 50.0;
 
513
                        close[15] = 49.0;
 
514
                        volume[15] = 60.0;
 
515
                        
 
516
                        date[16]  = DateUtilities.createDate(2001, jan, 21, 12, 0);
 
517
                        high[16]  = 47.0;
 
518
                        low[16]   = 33.0;
 
519
                        open[16]  = 41.0;
 
520
                        close[16] = 40.0;
 
521
                        volume[16] = 30.0;
 
522
                        
 
523
                        date[17]  = DateUtilities.createDate(2001, jan, 22, 12, 0);
 
524
                        high[17]  = 55.0;
 
525
                        low[17]   = 37.0;
 
526
                        open[17]  = 43.0;
 
527
                        close[17] = 45.0;
 
528
                        volume[17] = 90.0;
 
529
                        
 
530
                        date[18]  = DateUtilities.createDate(2001, jan, 23, 12, 0);
 
531
                        high[18]  = 54.0;
 
532
                        low[18]   = 42.0;
 
533
                        open[18]  = 50.0;
 
534
                        close[18] = 42.0;
 
535
                        volume[18] = 150.0;
 
536
                        
 
537
                        date[19]  = DateUtilities.createDate(2001, jan, 24, 12, 0);
 
538
                        high[19]  = 48.0;
 
539
                        low[19]   = 37.0;
 
540
                        open[19]  = 37.0;
 
541
                        close[19] = 47.0;
 
542
                        volume[19] = 120.0;
 
543
                        
 
544
                        date[20]  = DateUtilities.createDate(2001, jan, 25, 12, 0);
 
545
                        high[20]  = 58.0;
 
546
                        low[20]   = 33.0;
 
547
                        open[20]  = 39.0;
 
548
                        close[20] = 41.0;
 
549
                        volume[20] = 80.0;
 
550
                        
 
551
                        date[21]  = DateUtilities.createDate(2001, jan, 26, 12, 0);
 
552
                        high[21]  = 47.0;
 
553
                        low[21]   = 31.0;
 
554
                        open[21]  = 36.0;
 
555
                        close[21] = 41.0;
 
556
                        volume[21] = 40.0;
 
557
                        
 
558
                        date[22]  = DateUtilities.createDate(2001, jan, 27, 12, 0);
 
559
                        high[22]  = 58.0;
 
560
                        low[22]   = 44.0;
 
561
                        open[22]  = 49.0;
 
562
                        close[22] = 44.0;
 
563
                        volume[22] = 20.0;
 
564
                        
 
565
                        date[23]  = DateUtilities.createDate(2001, jan, 28, 12, 0);
 
566
                        high[23]  = 46.0;
 
567
                        low[23]   = 41.0;
 
568
                        open[23]  = 43.0;
 
569
                        close[23] = 44.0;
 
570
                        volume[23] = 60.0;
 
571
                        
 
572
                        date[24]  = DateUtilities.createDate(2001, jan, 29, 12, 0);
 
573
                        high[24]  = 56.0;
 
574
                        low[24]   = 39.0;
 
575
                        open[24]  = 39.0;
 
576
                        close[24] = 51.0;
 
577
                        volume[24] = 40.0;
 
578
                        
 
579
                        date[25]  = DateUtilities.createDate(2001, jan, 30, 12, 0);
 
580
                        high[25]  = 56.0;
 
581
                        low[25]   = 39.0;
 
582
                        open[25]  = 47.0;
 
583
                        close[25] = 49.0;
 
584
                        volume[25] = 70.0;
 
585
                        
 
586
                        date[26]  = DateUtilities.createDate(2001, jan, 31, 12, 0);
 
587
                        high[26]  = 53.0;
 
588
                        low[26]   = 39.0;
 
589
                        open[26]  = 52.0;
 
590
                        close[26] = 47.0;
 
591
                        volume[26] = 60.0;
 
592
                        
 
593
                        date[27]  = DateUtilities.createDate(2001, feb, 1, 12, 0);
 
594
                        high[27]  = 51.0;
 
595
                        low[27]   = 30.0;
 
596
                        open[27]  = 45.0;
 
597
                        close[27] = 47.0;
 
598
                        volume[27] = 90.0;
 
599
                        
 
600
                        date[28]  = DateUtilities.createDate(2001, feb, 2, 12, 0);
 
601
                        high[28]  = 47.0;
 
602
                        low[28]   = 30.0;
 
603
                        open[28]  = 34.0;
 
604
                        close[28] = 46.0;
 
605
                        volume[28] = 100.0;
 
606
                        
 
607
                        date[29]  = DateUtilities.createDate(2001, feb, 3, 12, 0);
 
608
                        high[29]  = 57.0;
 
609
                        low[29]   = 37.0;
 
610
                        open[29]  = 44.0;
 
611
                        close[29] = 56.0;
 
612
                        volume[29] = 20.0;
 
613
                        
 
614
                        date[30]  = DateUtilities.createDate(2001, feb, 4, 12, 0);
 
615
                        high[30]  = 49.0;
 
616
                        low[30]   = 40.0;
 
617
                        open[30]  = 47.0;
 
618
                        close[30] = 44.0;
 
619
                        volume[30] = 50.0;
 
620
                        
 
621
                        date[31]  = DateUtilities.createDate(2001, feb, 5, 12, 0);
 
622
                        high[31]  = 46.0;
 
623
                        low[31]   = 38.0;
 
624
                        open[31]  = 43.0;
 
625
                        close[31] = 40.0;
 
626
                        volume[31] = 70.0;
 
627
                        
 
628
                        date[32]  = DateUtilities.createDate(2001, feb, 6, 12, 0);
 
629
                        high[32]  = 55.0;
 
630
                        low[32]   = 38.0;
 
631
                        open[32]  = 39.0;
 
632
                        close[32] = 53.0;
 
633
                        volume[32] = 120.0;
 
634
                        
 
635
                        date[33]  = DateUtilities.createDate(2001, feb, 7, 12, 0);
 
636
                        high[33]  = 50.0;
 
637
                        low[33]   = 33.0;
 
638
                        open[33]  = 37.0;
 
639
                        close[33] = 37.0;
 
640
                        volume[33] = 140.0;
 
641
                        
 
642
                        date[34]  = DateUtilities.createDate(2001, feb, 8, 12, 0);
 
643
                        high[34]  = 59.0;
 
644
                        low[34]   = 34.0;
 
645
                        open[34]  = 57.0;
 
646
                        close[34] = 43.0;
 
647
                        volume[34] = 70.0;
 
648
                        
 
649
                        date[35]  = DateUtilities.createDate(2001, feb, 9, 12, 0);
 
650
                        high[35]  = 48.0;
 
651
                        low[35]   = 39.0;
 
652
                        open[35]  = 46.0;
 
653
                        close[35] = 47.0;
 
654
                        volume[35] = 70.0;
 
655
                        
 
656
                        date[36]  = DateUtilities.createDate(2001, feb, 10, 12, 0);
 
657
                        high[36]  = 55.0;
 
658
                        low[36]   = 30.0;
 
659
                        open[36]  = 37.0;
 
660
                        close[36] = 30.0;
 
661
                        volume[36] = 30.0;
 
662
                        
 
663
                        date[37]  = DateUtilities.createDate(2001, feb, 11, 12, 0);
 
664
                        high[37]  = 60.0;
 
665
                        low[37]   = 32.0;
 
666
                        open[37]  = 56.0;
 
667
                        close[37] = 36.0;
 
668
                        volume[37] = 70.0;
 
669
                        
 
670
                        date[38]  = DateUtilities.createDate(2001, feb, 12, 12, 0);
 
671
                        high[38]  = 56.0;
 
672
                        low[38]   = 42.0;
 
673
                        open[38]  = 53.0;
 
674
                        close[38] = 54.0;
 
675
                        volume[38] = 40.0;
 
676
                        
 
677
                        date[39]  = DateUtilities.createDate(2001, feb, 13, 12, 0);
 
678
                        high[39]  = 49.0;
 
679
                        low[39]   = 42.0;
 
680
                        open[39]  = 45.0;
 
681
                        close[39] = 42.0;
 
682
                        volume[39] = 90.0;
 
683
                        
 
684
                        date[40]  = DateUtilities.createDate(2001, feb, 14, 12, 0);
 
685
                        high[40]  = 55.0;
 
686
                        low[40]   = 42.0;
 
687
                        open[40]  = 47.0;
 
688
                        close[40] = 54.0;
 
689
                        volume[40] = 70.0;
 
690
                        
 
691
                        date[41]  = DateUtilities.createDate(2001, feb, 15, 12, 0);
 
692
                        high[41]  = 49.0;
 
693
                        low[41]   = 35.0;
 
694
                        open[41]  = 38.0;
 
695
                        close[41] = 35.0;
 
696
                        volume[41] = 20.0;
 
697
                        
 
698
                        date[42]  = DateUtilities.createDate(2001, feb, 16, 12, 0);
 
699
                        high[42]  = 47.0;
 
700
                        low[42]   = 38.0;
 
701
                        open[42]  = 43.0;
 
702
                        close[42] = 42.0;
 
703
                        volume[42] = 10.0;
 
704
                        
 
705
                        date[43]  = DateUtilities.createDate(2001, feb, 17, 12, 0);
 
706
                        high[43]  = 53.0;
 
707
                        low[43]   = 42.0;
 
708
                        open[43]  = 47.0;
 
709
                        close[43] = 48.0;
 
710
                        volume[43] = 20.0;
 
711
                        
 
712
                        date[44]  = DateUtilities.createDate(2001, feb, 18, 12, 0);
 
713
                        high[44]  = 47.0;
 
714
                        low[44]   = 44.0;
 
715
                        open[44]  = 46.0;
 
716
                        close[44] = 44.0;
 
717
                        volume[44] = 30.0;
 
718
                        
 
719
                        date[45]  = DateUtilities.createDate(2001, feb, 19, 12, 0);
 
720
                        high[45]  = 46.0;
 
721
                        low[45]   = 40.0;
 
722
                        open[45]  = 43.0;
 
723
                        close[45] = 44.0;
 
724
                        volume[45] = 50.0;
 
725
                        
 
726
                        date[46]  = DateUtilities.createDate(2001, feb, 20, 12, 0);
 
727
                        high[46]  = 48.0;
 
728
                        low[46]   = 41.0;
 
729
                        open[46]  = 46.0;
 
730
                        close[46] = 41.0;
 
731
                        volume[46] = 100.0;
 
732
                        
 
733
                        sampleHighLowDataset = new DefaultHighLowDataset("First", date, high, low, open, close, volume);
 
734
                }
 
735
                
 
736
                return sampleHighLowDataset;
 
737
        }
 
738
        
 
739
        private static TimePeriodValuesCollection sampleTimePeriodDataset = null;
 
740
        
 
741
        private XYDataset createTimePeriodDataset()
 
742
        {
 
743
                if (sampleTimePeriodDataset == null)
 
744
                {
 
745
                        TimePeriodValuesCollection dataset = new TimePeriodValuesCollection();
 
746
 
 
747
                        Day today = new Day();
 
748
                        TimePeriodValues series1 = new TimePeriodValues("First");
 
749
                        TimePeriodValues series2 = new TimePeriodValues("Second");
 
750
                        
 
751
                        for (int i = 0; i < 24; i++) 
 
752
                        {
 
753
                                Minute m0 = new Minute(0, new Hour(i, today));
 
754
                                Minute m1 = new Minute(15, new Hour(i, today));
 
755
                                Minute m2 = new Minute(30, new Hour(i, today));
 
756
                                Minute m3 = new Minute(45, new Hour(i, today));
 
757
                                Minute m4 = new Minute(0, new Hour(i + 1, today));
 
758
                                series1.add(new SimpleTimePeriod(m0.getStart(), m1.getStart()), Math.random());
 
759
                                series2.add(new SimpleTimePeriod(m1.getStart(), m2.getStart()), Math.random());
 
760
                                series1.add(new SimpleTimePeriod(m2.getStart(), m3.getStart()), Math.random());
 
761
                                series2.add(new SimpleTimePeriod(m3.getStart(), m4.getStart()), Math.random());
 
762
                        }
 
763
 
 
764
                        dataset.addSeries(series1);
 
765
                        dataset.addSeries(series2);
 
766
                        
 
767
                        sampleTimePeriodDataset = dataset;
 
768
                }
 
769
 
 
770
                return sampleTimePeriodDataset;
 
771
        }
 
772
}