KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jfree > data > general > DefaultKeyedValueDataset


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  * DefaultKeyedValueDataset.java
29  * -----------------------------
30  * (C) Copyright 2003-2005, by Object Refinery Limited.
31  *
32  * Original Author: David Gilbert (for Object Refinery Limited);
33  * Contributor(s): -;
34  *
35  * $Id $
36  *
37  * Changes
38  * -------
39  * 27-Mar-2003 : Version 1 (DG);
40  * 18-Aug-2003 : Implemented Cloneable (DG);
41  *
42  */

43
44 package org.jfree.data.general;
45
46 import java.io.Serializable JavaDoc;
47
48 import org.jfree.data.DefaultKeyedValue;
49 import org.jfree.data.KeyedValue;
50 import org.jfree.util.ObjectUtilities;
51
52 /**
53  * A default implementation of the {@link KeyedValueDataset} interface.
54  */

55 public class DefaultKeyedValueDataset extends AbstractDataset
56                                       implements KeyedValueDataset,
57                                                  Serializable JavaDoc {
58
59     /** For serialization. */
60     private static final long serialVersionUID = -8149484339560406750L;
61     
62     /** Storage for the data. */
63     private KeyedValue data;
64
65     /**
66      * Constructs a new dataset, initially empty.
67      */

68     public DefaultKeyedValueDataset() {
69         this(null);
70     }
71
72     /**
73      * Creates a new dataset with the specified initial value.
74      *
75      * @param key the key.
76      * @param value the value (<code>null</code> permitted).
77      */

78     public DefaultKeyedValueDataset(Comparable JavaDoc key, Number JavaDoc value) {
79         this(new DefaultKeyedValue(key, value));
80     }
81
82     /**
83      * Creates a new dataset that uses the data from a {@link KeyedValue}
84      * instance.
85      *
86      * @param data the data (<code>null</code> permitted).
87      */

88     public DefaultKeyedValueDataset(KeyedValue data) {
89         this.data = data;
90     }
91
92     /**
93      * Returns the key associated with the value, or <code>null</code> if the
94      * dataset has no data item.
95      *
96      * @return The key.
97      */

98     public Comparable JavaDoc getKey() {
99         Comparable JavaDoc result = null;
100         if (this.data != null) {
101             result = this.data.getKey();
102         }
103         return result;
104     }
105
106     /**
107      * Returns the value.
108      *
109      * @return The value (possibly <code>null</code>).
110      */

111     public Number JavaDoc getValue() {
112         Number JavaDoc result = null;
113         if (this.data != null) {
114             result = this.data.getValue();
115         }
116         return result;
117     }
118
119     /**
120      * Updates the value.
121      *
122      * @param value the new value (<code>null</code> permitted).
123      */

124     public void updateValue(Number JavaDoc value) {
125         if (this.data == null) {
126             throw new RuntimeException JavaDoc("updateValue: can't update null.");
127         }
128         setValue(this.data.getKey(), value);
129     }
130
131     /**
132      * Sets the value for the dataset and sends a {@link DatasetChangeEvent} to
133      * all registered listeners.
134      *
135      * @param key the key.
136      * @param value the value (<code>null</code> permitted).
137      */

138     public void setValue(Comparable JavaDoc key, Number JavaDoc value) {
139         this.data = new DefaultKeyedValue(key, value);
140         notifyListeners(new DatasetChangeEvent(this, this));
141     }
142
143     /**
144      * Tests this dataset for equality with an arbitrary object.
145      *
146      * @param obj the object.
147      *
148      * @return A boolean.
149      */

150     public boolean equals(Object JavaDoc obj) {
151
152         if (obj == this) {
153             return true;
154         }
155         if (!(obj instanceof KeyedValueDataset)) {
156             return false;
157         }
158         KeyedValueDataset that = (KeyedValueDataset) obj;
159         if (this.data == null) {
160             if (that.getKey() != null || that.getValue() != null) {
161                 return false;
162             }
163             return true;
164         }
165         if (!ObjectUtilities.equal(this.data.getKey(), that.getKey())) {
166             return false;
167         }
168         if (!ObjectUtilities.equal(this.data.getValue(), that.getValue())) {
169             return false;
170         }
171         return true;
172     }
173
174     /**
175      * Returns a hash code.
176      *
177      * @return A hash code.
178      */

179     public int hashCode() {
180         return (this.data != null ? this.data.hashCode() : 0);
181     }
182
183     /**
184      * Creates a clone of the dataset.
185      *
186      * @return A clone.
187      *
188      * @throws CloneNotSupportedException This class will not throw this
189      * exception, but subclasses (if any) might.
190      */

191     public Object JavaDoc clone() throws CloneNotSupportedException JavaDoc {
192         DefaultKeyedValueDataset clone
193             = (DefaultKeyedValueDataset) super.clone();
194         return clone;
195     }
196     
197 }
198
Popular Tags