KickJava   Java API By Example, From Geeks To Geeks.

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


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  * MatrixSeries.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  * Zhitao Wang;
35  *
36  * $Id: MatrixSeries.java,v 1.5.2.1 2005/10/25 21:36:51 mungady Exp $
37  *
38  * Changes
39  * -------
40  * 10-Jul-2003 : Version 1 contributed by Barak Naveh (DG);
41  * 10-Feb-2004 : Fixed Checkstyle complaints (DG);
42  * 21-May-2004 : Fixed bug 940188 - problem in getItemColumn() and
43  * getItemRow() (DG);
44  *
45  */

46
47 package org.jfree.data.xy;
48
49 import java.io.Serializable JavaDoc;
50
51 import org.jfree.data.general.Series;
52
53 /**
54  * Represents a dense matrix M[i,j] where each Mij item of the matrix has a
55  * value (default is 0).
56  *
57  * @author Barak Naveh
58  */

59 public class MatrixSeries extends Series implements Serializable JavaDoc {
60     
61     /** For serialization. */
62     private static final long serialVersionUID = 7934188527308315704L;
63     
64     /** Series matrix values */
65     protected double[][] data;
66
67     /**
68      * Constructs a new matrix series.
69      * <p>
70      * By default, all matrix items are initialzed to 0.
71      * </p>
72      *
73      * @param name series name (<code>null</code> not permitted).
74      * @param rows the number of rows.
75      * @param columns the number of columns.
76      */

77     public MatrixSeries(String JavaDoc name, int rows, int columns) {
78         super(name);
79         this.data = new double[rows][columns];
80         zeroAll();
81     }
82
83     /**
84      * Returns the number of columns in this matrix series.
85      *
86      * @return The number of columns in this matrix series.
87      */

88     public int getColumnsCount() {
89         return this.data[0].length;
90     }
91
92
93     /**
94      * Return the matrix item at the specified index.
95      *
96      * @param itemIndex item index.
97      *
98      * @return The matrix item at the specified index.
99      */

100     public Number JavaDoc getItem(int itemIndex) {
101         int i = getItemRow(itemIndex);
102         int j = getItemColumn(itemIndex);
103
104         Number JavaDoc n = new Double JavaDoc(get(i, j));
105
106         return n;
107     }
108
109
110     /**
111      * Returns the column of the specified item.
112      *
113      * @param itemIndex the index of the item.
114      *
115      * @return The column of the specified item.
116      */

117     public int getItemColumn(int itemIndex) {
118         //assert itemIndex >= 0 && itemIndex < getItemCount();
119
return itemIndex % getColumnsCount();
120     }
121
122
123     /**
124      * Returns the number of items in the series.
125      *
126      * @return The item count.
127      */

128     public int getItemCount() {
129         return getRowCount() * getColumnsCount();
130     }
131
132
133     /**
134      * Returns the row of the specified item.
135      *
136      * @param itemIndex the index of the item.
137      *
138      * @return The row of the specified item.
139      */

140     public int getItemRow(int itemIndex) {
141         //assert itemIndex >= 0 && itemIndex < getItemCount();
142
return itemIndex / getColumnsCount();
143     }
144
145
146     /**
147      * Returns the number of rows in this matrix series.
148      *
149      * @return The number of rows in this matrix series.
150      */

151     public int getRowCount() {
152         return this.data.length;
153     }
154
155
156     /**
157      * Returns the value of the specified item in this matrix series.
158      *
159      * @param i the row of the item.
160      * @param j the column of the item.
161      *
162      * @return The value of the specified item in this matrix series.
163      */

164     public double get(int i, int j) {
165         return this.data[i][j];
166     }
167
168
169     /**
170      * Updates the value of the specified item in this matrix series.
171      *
172      * @param i the row of the item.
173      * @param j the column of the item.
174      * @param mij the new value for the item.
175      */

176     public void update(int i, int j, double mij) {
177         this.data[i][j] = mij;
178         fireSeriesChanged();
179     }
180
181
182     /**
183      * Sets all matrix values to zero and sends a
184      * {@link org.jfree.data.general.SeriesChangeEvent} to all registered
185      * listeners.
186      */

187     public void zeroAll() {
188         int rows = getRowCount();
189         int columns = getColumnsCount();
190
191         for (int row = 0; row < rows; row++) {
192             for (int column = 0; column < columns; column++) {
193                 this.data[row][column] = 0.0;
194             }
195         }
196         fireSeriesChanged();
197     }
198     
199     /**
200      * Tests this object instance for equality with an arbitrary object.
201      *
202      * @param obj the object (<code>null</code> permitted).
203      *
204      * @return A boolean.
205      */

206     public boolean equals(Object JavaDoc obj) {
207         if (obj == this) {
208             return true;
209         }
210         if (obj instanceof MatrixSeries && super.equals(obj)) {
211             MatrixSeries m = (MatrixSeries) obj;
212             if (!(getRowCount() == m.getRowCount())) {
213                 return false;
214             }
215             if (!(getColumnsCount() == m.getColumnsCount())) {
216                 return false;
217             }
218             return true;
219         }
220         return false;
221     }
222     
223 }
224
Popular Tags