KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jfree > data > xy > DefaultOHLCDataset


1 /* ===========================================================
2  * JFreeChart : a free chart library for the Java(tm) platform
3  * ===========================================================
4  *
5  * (C) Copyright 2000-2005, by Object Refinery Limited and Contributors.
6  *
7  * Project Info: http://www.jfree.org/jfreechart/index.html
8  *
9  * This library is free software; you can redistribute it and/or modify it
10  * under the terms of the GNU Lesser General Public License as published by
11  * the Free Software Foundation; either version 2.1 of the License, or
12  * (at your option) any later version.
13  *
14  * This library is distributed in the hope that it will be useful, but
15  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16  * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
17  * License for more details.
18  *
19  * You should have received a copy of the GNU Lesser General Public
20  * License along with this library; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
22  * USA.
23  *
24  * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
25  * in the United States and other countries.]
26  *
27  * -----------------------
28  * DefaultOHLCDataset.java
29  * -----------------------
30  * (C) Copyright 2003, 2004, by Object Refinery Limited.
31  *
32  * Original Author: David Gilbert (for Object Refinery Limited);
33  * Contributor(s): -;
34  *
35  * $Id: DefaultOHLCDataset.java,v 1.5.2.1 2005/10/25 21:36:51 mungady Exp $
36  *
37  * Changes
38  * -------
39  * 03-Dec-2003 : Version 1 (DG);
40  * 05-May-2004 : Now extends AbstractXYDataset (DG);
41  * 15-Jul-2004 : Switched getX() with getXValue() and getY() with
42  * getYValue() (DG);
43  * 29-Apr-2005 : Added equals() method (DG);
44  *
45  */

46
47 package org.jfree.data.xy;
48
49 import java.util.Arrays JavaDoc;
50 import java.util.Date JavaDoc;
51
52 /**
53  * A simple implementation of the {@link OHLCDataset} interface. This
54  * implementation supports only one series.
55  */

56 public class DefaultOHLCDataset extends AbstractXYDataset
57                                 implements OHLCDataset {
58
59     /** The series key. */
60     private Comparable JavaDoc key;
61     
62     /** Storage for the data items. */
63     private OHLCDataItem[] data;
64     
65     /**
66      * Creates a new dataset.
67      *
68      * @param key the series key.
69      * @param data the data items.
70      */

71     public DefaultOHLCDataset(Comparable JavaDoc key, OHLCDataItem[] data) {
72         this.key = key;
73         this.data = data;
74     }
75     
76     /**
77      * Returns the series key.
78      *
79      * @param series the series index (ignored).
80      *
81      * @return The series key.
82      */

83     public Comparable JavaDoc getSeriesKey(int series) {
84         return this.key;
85     }
86
87     /**
88      * Returns the x-value for a data item.
89      *
90      * @param series the series index (ignored).
91      * @param item the item index (zero-based).
92      *
93      * @return The x-value.
94      */

95     public Number JavaDoc getX(int series, int item) {
96         return new Long JavaDoc(this.data[item].getDate().getTime());
97     }
98
99     /**
100      * Returns the x-value for a data item as a date.
101      *
102      * @param series the series index (ignored).
103      * @param item the item index (zero-based).
104      *
105      * @return The x-value as a date.
106      */

107     public Date JavaDoc getXDate(int series, int item) {
108         return this.data[item].getDate();
109     }
110
111     /**
112      * Returns the y-value.
113      *
114      * @param series the series index (ignored).
115      * @param item the item index (zero-based).
116      *
117      * @return The y value.
118      */

119     public Number JavaDoc getY(int series, int item) {
120         return getClose(series, item);
121     }
122
123     /**
124      * Returns the high value.
125      *
126      * @param series the series index (ignored).
127      * @param item the item index (zero-based).
128      *
129      * @return The high value.
130      */

131     public Number JavaDoc getHigh(int series, int item) {
132         return this.data[item].getHigh();
133     }
134     
135     /**
136      * Returns the high-value (as a double primitive) for an item within a
137      * series.
138      *
139      * @param series the series (zero-based index).
140      * @param item the item (zero-based index).
141      *
142      * @return The high-value.
143      */

144     public double getHighValue(int series, int item) {
145         double result = Double.NaN;
146         Number JavaDoc high = getHigh(series, item);
147         if (high != null) {
148             result = high.doubleValue();
149         }
150         return result;
151     }
152
153     /**
154      * Returns the low value.
155      *
156      * @param series the series index (ignored).
157      * @param item the item index (zero-based).
158      *
159      * @return The low value.
160      */

161     public Number JavaDoc getLow(int series, int item) {
162         return this.data[item].getLow();
163     }
164
165     /**
166      * Returns the low-value (as a double primitive) for an item within a
167      * series.
168      *
169      * @param series the series (zero-based index).
170      * @param item the item (zero-based index).
171      *
172      * @return The low-value.
173      */

174     public double getLowValue(int series, int item) {
175         double result = Double.NaN;
176         Number JavaDoc low = getLow(series, item);
177         if (low != null) {
178             result = low.doubleValue();
179         }
180         return result;
181     }
182
183     /**
184      * Returns the open value.
185      *
186      * @param series the series index (ignored).
187      * @param item the item index (zero-based).
188      *
189      * @return The open value.
190      */

191     public Number JavaDoc getOpen(int series, int item) {
192         return this.data[item].getOpen();
193     }
194
195     /**
196      * Returns the open-value (as a double primitive) for an item within a
197      * series.
198      *
199      * @param series the series (zero-based index).
200      * @param item the item (zero-based index).
201      *
202      * @return The open-value.
203      */

204     public double getOpenValue(int series, int item) {
205         double result = Double.NaN;
206         Number JavaDoc open = getOpen(series, item);
207         if (open != null) {
208             result = open.doubleValue();
209         }
210         return result;
211     }
212
213     /**
214      * Returns the close value.
215      *
216      * @param series the series index (ignored).
217      * @param item the item index (zero-based).
218      *
219      * @return The close value.
220      */

221     public Number JavaDoc getClose(int series, int item) {
222         return this.data[item].getClose();
223     }
224
225     /**
226      * Returns the close-value (as a double primitive) for an item within a
227      * series.
228      *
229      * @param series the series (zero-based index).
230      * @param item the item (zero-based index).
231      *
232      * @return The close-value.
233      */

234     public double getCloseValue(int series, int item) {
235         double result = Double.NaN;
236         Number JavaDoc close = getClose(series, item);
237         if (close != null) {
238             result = close.doubleValue();
239         }
240         return result;
241     }
242
243     /**
244      * Returns the trading volume.
245      *
246      * @param series the series index (ignored).
247      * @param item the item index (zero-based).
248      *
249      * @return The trading volume.
250      */

251     public Number JavaDoc getVolume(int series, int item) {
252         return this.data[item].getVolume();
253     }
254
255     /**
256      * Returns the volume-value (as a double primitive) for an item within a
257      * series.
258      *
259      * @param series the series (zero-based index).
260      * @param item the item (zero-based index).
261      *
262      * @return The volume-value.
263      */

264     public double getVolumeValue(int series, int item) {
265         double result = Double.NaN;
266         Number JavaDoc volume = getVolume(series, item);
267         if (volume != null) {
268             result = volume.doubleValue();
269         }
270         return result;
271     }
272
273     /**
274      * Returns the series count.
275      *
276      * @return 1.
277      */

278     public int getSeriesCount() {
279         return 1;
280     }
281
282     /**
283      * Returns the item count for the specified series.
284      *
285      * @param series the series index (ignored).
286      *
287      * @return The item count.
288      */

289     public int getItemCount(int series) {
290         return this.data.length;
291     }
292    
293     /**
294      * Sorts the data into ascending order by date.
295      */

296     public void sortDataByDate() {
297         Arrays.sort(this.data);
298     }
299     
300     /**
301      * Tests this instance for equality with an arbitrary object.
302      *
303      * @param obj the object (<code>null</code> permitted).
304      *
305      * @return A boolean.
306      */

307     public boolean equals(Object JavaDoc obj) {
308         if (this == obj) {
309             return true;
310         }
311         if (!(obj instanceof DefaultOHLCDataset)) {
312             return false;
313         }
314         DefaultOHLCDataset that = (DefaultOHLCDataset) obj;
315         if (!this.key.equals(that.key)) {
316             return false;
317         }
318         if (!Arrays.equals(this.data, that.data)) {
319             return false;
320         }
321         return true;
322     }
323
324 }
325
Popular Tags