KickJava   Java API By Example, From Geeks To Geeks.

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


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  * MatrixSeriesCollection.java
29  * ---------------------------
30  * (C) Copyright 2003-2005, by Barak Naveh and Contributors.
31  *
32  * Original Author: Barak Naveh;;
33  * Contributor(s): David Gilbert (for Object Refinery Limited);
34  *
35  * $Id: MatrixSeriesCollection.java,v 1.7.2.1 2005/10/25 21:36:51 mungady Exp $
36  *
37  * Changes
38  * -------
39  * 10-Jul-2003 : Version 1 contributed by Barak Naveh (DG);
40  * 05-May-2004 : Now extends AbstractXYZDataset (DG);
41  * 15-Jul-2004 : Switched getZ() and getZValue() methods (DG);
42  *
43  */

44  
45 package org.jfree.data.xy;
46
47 import java.io.Serializable JavaDoc;
48 import java.util.List JavaDoc;
49
50 import org.jfree.util.ObjectUtilities;
51
52 /**
53  * Represents a collection of {@link MatrixSeries} that can be used as a
54  * dataset.
55  *
56  * @author Barak Naveh
57  *
58  * @see org.jfree.data.xy.MatrixSeries
59  */

60 public class MatrixSeriesCollection extends AbstractXYZDataset
61                                     implements XYZDataset, Serializable JavaDoc {
62     
63     /** For serialization. */
64     private static final long serialVersionUID = -3197705779242543945L;
65     
66     /** The series that are included in the collection. */
67     private List JavaDoc seriesList;
68
69     /**
70      * Constructs an empty dataset.
71      */

72     public MatrixSeriesCollection() {
73         this(null);
74     }
75
76
77     /**
78      * Constructs a dataset and populates it with a single matrix series.
79      *
80      * @param series the time series.
81      */

82     public MatrixSeriesCollection(MatrixSeries series) {
83         this.seriesList = new java.util.ArrayList JavaDoc();
84
85         if (series != null) {
86             this.seriesList.add(series);
87             series.addChangeListener(this);
88         }
89     }
90
91     /**
92      * Returns the number of items in the specified series.
93      *
94      * @param seriesIndex zero-based series index.
95      *
96      * @return The number of items in the specified series.
97      */

98     public int getItemCount(int seriesIndex) {
99         return getSeries(seriesIndex).getItemCount();
100     }
101
102
103     /**
104      * Returns the series having the specified index.
105      *
106      * @param seriesIndex zero-based series index.
107      *
108      * @return The series.
109      *
110      * @throws IllegalArgumentException
111      */

112     public MatrixSeries getSeries(int seriesIndex) {
113         if ((seriesIndex < 0) || (seriesIndex > getSeriesCount())) {
114             throw new IllegalArgumentException JavaDoc("Index outside valid range.");
115         }
116
117         MatrixSeries series = (MatrixSeries) this.seriesList.get(seriesIndex);
118
119         return series;
120     }
121
122
123     /**
124      * Returns the number of series in the collection.
125      *
126      * @return The number of series in the collection.
127      */

128     public int getSeriesCount() {
129         return this.seriesList.size();
130     }
131
132
133     /**
134      * Returns the key for a series.
135      *
136      * @param seriesIndex zero-based series index.
137      *
138      * @return The key for a series.
139      */

140     public Comparable JavaDoc getSeriesKey(int seriesIndex) {
141         return getSeries(seriesIndex).getKey();
142     }
143
144
145     /**
146      * Returns the j index value of the specified Mij matrix item in the
147      * specified matrix series.
148      *
149      * @param seriesIndex zero-based series index.
150      * @param itemIndex zero-based item index.
151      *
152      * @return The j index value for the specified matrix item.
153      *
154      * @see org.jfree.data.xy.XYDataset#getXValue(int, int)
155      */

156     public Number JavaDoc getX(int seriesIndex, int itemIndex) {
157         MatrixSeries series = (MatrixSeries) this.seriesList.get(seriesIndex);
158         int x = series.getItemColumn(itemIndex);
159
160         return new Integer JavaDoc(x); // I know it's bad to create object. better idea?
161
}
162
163
164     /**
165      * Returns the i index value of the specified Mij matrix item in the
166      * specified matrix series.
167      *
168      * @param seriesIndex zero-based series index.
169      * @param itemIndex zero-based item index.
170      *
171      * @return The i index value for the specified matrix item.
172      *
173      * @see org.jfree.data.xy.XYDataset#getYValue(int, int)
174      */

175     public Number JavaDoc getY(int seriesIndex, int itemIndex) {
176         MatrixSeries series = (MatrixSeries) this.seriesList.get(seriesIndex);
177         int y = series.getItemRow(itemIndex);
178
179         return new Integer JavaDoc(y); // I know it's bad to create object. better idea?
180
}
181
182
183     /**
184      * Returns the Mij item value of the specified Mij matrix item in the
185      * specified matrix series.
186      *
187      * @param seriesIndex the series (zero-based index).
188      * @param itemIndex zero-based item index.
189      *
190      * @return The Mij item value for the specified matrix item.
191      *
192      * @see org.jfree.data.xy.XYZDataset#getZValue(int, int)
193      */

194     public Number JavaDoc getZ(int seriesIndex, int itemIndex) {
195         MatrixSeries series = (MatrixSeries) this.seriesList.get(seriesIndex);
196         Number JavaDoc z = series.getItem(itemIndex);
197         return z;
198     }
199
200
201     /**
202      * Adds a series to the collection.
203      * <P>
204      * Notifies all registered listeners that the dataset has changed.
205      * </p>
206      *
207      * @param series the series.
208      *
209      * @throws IllegalArgumentException
210      */

211     public void addSeries(MatrixSeries series) {
212         // check arguments...
213
if (series == null) {
214             throw new IllegalArgumentException JavaDoc("Cannot add null series.");
215         }
216
217         // add the series...
218
this.seriesList.add(series);
219         series.addChangeListener(this);
220         fireDatasetChanged();
221     }
222
223
224     /**
225      * Tests this collection for equality with an arbitrary object.
226      *
227      * @param obj the object.
228      *
229      * @return A boolean.
230      */

231     public boolean equals(Object JavaDoc obj) {
232         if (obj == null) {
233             return false;
234         }
235
236         if (obj == this) {
237             return true;
238         }
239
240         if (obj instanceof MatrixSeriesCollection) {
241             MatrixSeriesCollection c = (MatrixSeriesCollection) obj;
242
243             return ObjectUtilities.equal(this.seriesList, c.seriesList);
244         }
245
246         return false;
247     }
248
249     /**
250      * Returns a hash code.
251      *
252      * @return A hash code.
253      */

254     public int hashCode() {
255         return (this.seriesList != null ? this.seriesList.hashCode() : 0);
256     }
257
258     /**
259      * Removes all the series from the collection.
260      * <P>
261      * Notifies all registered listeners that the dataset has changed.
262      * </p>
263      */

264     public void removeAllSeries() {
265         // Unregister the collection as a change listener to each series in
266
// the collection.
267
for (int i = 0; i < this.seriesList.size(); i++) {
268             MatrixSeries series = (MatrixSeries) this.seriesList.get(i);
269             series.removeChangeListener(this);
270         }
271
272         // Remove all the series from the collection and notify listeners.
273
this.seriesList.clear();
274         fireDatasetChanged();
275     }
276
277
278     /**
279      * Removes a series from the collection.
280      * <P>
281      * Notifies all registered listeners that the dataset has changed.
282      * </p>
283      *
284      * @param series the series.
285      *
286      * @throws IllegalArgumentException
287      */

288     public void removeSeries(MatrixSeries series) {
289         // check arguments...
290
if (series == null) {
291             throw new IllegalArgumentException JavaDoc("Cannot remove null series.");
292         }
293
294         // remove the series...
295
if (this.seriesList.contains(series)) {
296             series.removeChangeListener(this);
297             this.seriesList.remove(series);
298             fireDatasetChanged();
299         }
300     }
301
302
303     /**
304      * Removes a series from the collection.
305      * <P>
306      * Notifies all registered listeners that the dataset has changed.
307      *
308      * @param seriesIndex the series (zero based index).
309      *
310      * @throws IllegalArgumentException
311      */

312     public void removeSeries(int seriesIndex) {
313         // check arguments...
314
if ((seriesIndex < 0) || (seriesIndex > getSeriesCount())) {
315             throw new IllegalArgumentException JavaDoc("Index outside valid range.");
316         }
317
318         // fetch the series, remove the change listener, then remove the series.
319
MatrixSeries series = (MatrixSeries) this.seriesList.get(seriesIndex);
320         series.removeChangeListener(this);
321         this.seriesList.remove(seriesIndex);
322         fireDatasetChanged();
323     }
324     
325 }
326
Popular Tags