001 /* ===========================================================
002 * JFreeChart : a free chart library for the Java(tm) platform
003 * ===========================================================
004 *
005 * (C) Copyright 2000-2005, by Object Refinery Limited and Contributors.
006 *
007 * Project Info: http://www.jfree.org/jfreechart/index.html
008 *
009 * This library is free software; you can redistribute it and/or modify it
010 * under the terms of the GNU Lesser General Public License as published by
011 * the Free Software Foundation; either version 2.1 of the License, or
012 * (at your option) any later version.
013 *
014 * This library is distributed in the hope that it will be useful, but
015 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
016 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
017 * License for more details.
018 *
019 * You should have received a copy of the GNU Lesser General Public
020 * License along with this library; if not, write to the Free Software
021 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
022 * USA.
023 *
024 * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
025 * in the United States and other countries.]
026 *
027 * -----------------------
028 * CategoryItemEntity.java
029 * -----------------------
030 * (C) Copyright 2002-2005, by Object Refinery Limited and Contributors.
031 *
032 * Original Author: David Gilbert (for Object Refinery Limited);
033 * Contributor(s): Richard Atkinson;
034 * Christian W. Zuckschwerdt;
035 *
036 * $Id: CategoryItemEntity.java,v 1.5.2.1 2005/10/25 20:41:59 mungady Exp $
037 *
038 * Changes:
039 * --------
040 * 23-May-2002 : Version 1 (DG);
041 * 12-Jun-2002 : Added Javadoc comments (DG);
042 * 26-Jun-2002 : Added getImageMapAreaTag() method (DG);
043 * 05-Aug-2002 : Added new constructor to populate URLText
044 * Moved getImageMapAreaTag() to ChartEntity (superclass) (RA);
045 * 03-Oct-2002 : Fixed errors reported by Checkstyle (DG);
046 * 30-Jul-2003 : Added CategoryDataset reference (CZ);
047 * 20-May-2004 : Added equals() and clone() methods, and implemented
048 * Serializable (DG);
049 * 11-Jan-2005 : Removed deprecated code in preparation for 1.0.0 release (DG);
050 *
051 */
052
053 package org.jfree.chart.entity;
054
055 import java.awt.Shape;
056 import java.io.Serializable;
057
058 import org.jfree.data.category.CategoryDataset;
059 import org.jfree.util.ObjectUtilities;
060
061 /**
062 * A chart entity that represents one item within a category plot.
063 */
064 public class CategoryItemEntity extends ChartEntity
065 implements Cloneable, Serializable {
066
067 /** For serialization. */
068 private static final long serialVersionUID = -8657249457902337349L;
069
070 /** The dataset. */
071 private transient CategoryDataset dataset;
072
073 /** The series (zero-based index). */
074 private int series;
075
076 /** The category. */
077 private Object category;
078
079 /** The category index. */
080 private int categoryIndex;
081
082 /**
083 * Creates a new category item entity.
084 *
085 * @param area the area.
086 * @param toolTipText the tool tip text.
087 * @param urlText the URL text for HTML image maps.
088 * @param dataset the dataset.
089 * @param series the series (zero-based index).
090 * @param category the category.
091 * @param categoryIndex the category index.
092 */
093 public CategoryItemEntity(Shape area, String toolTipText, String urlText,
094 CategoryDataset dataset,
095 int series, Object category, int categoryIndex) {
096
097 super(area, toolTipText, urlText);
098 this.dataset = dataset;
099 this.series = series;
100 this.category = category;
101 this.categoryIndex = categoryIndex;
102
103 }
104
105 /**
106 * Returns the datset this entity refers to.
107 *
108 * @return The dataset (possibly <code>null</code>).
109 */
110 public CategoryDataset getDataset() {
111 return this.dataset;
112 }
113
114 /**
115 * Sets the datset this entity refers to.
116 *
117 * @param dataset the dataset (<code>null</code> permited).
118 */
119 public void setDataset(CategoryDataset dataset) {
120 this.dataset = dataset;
121 }
122
123 /**
124 * Returns the series index.
125 *
126 * @return The series index.
127 */
128 public int getSeries() {
129 return this.series;
130 }
131
132 /**
133 * Sets the series index.
134 *
135 * @param series the series index (zero-based).
136 */
137 public void setSeries(int series) {
138 this.series = series;
139 }
140
141 /**
142 * Returns the category.
143 *
144 * @return The category (possibly <code>null</code>).
145 */
146 public Object getCategory() {
147 return this.category;
148 }
149
150 /**
151 * Sets the category.
152 *
153 * @param category the category (<code>null</code> permitted).
154 */
155 public void setCategory(Object category) {
156 this.category = category;
157 }
158
159 /**
160 * Returns the category index.
161 *
162 * @return The index.
163 */
164 public int getCategoryIndex() {
165 return this.categoryIndex;
166 }
167
168 /**
169 * Sets the category index.
170 *
171 * @param index the category index.
172 */
173 public void setCategoryIndex(int index) {
174 this.categoryIndex = index;
175 }
176
177 /**
178 * Returns a string representing this object (useful for debugging
179 * purposes).
180 *
181 * @return A string.
182 */
183 public String toString() {
184 return "Category Item: series=" + this.series
185 + ", category=" + this.category.toString();
186 }
187
188 /**
189 * Tests the entity for equality with an arbitrary object.
190 *
191 * @param obj the object (<code>null</code> permitted).
192 *
193 * @return A boolean.
194 */
195 public boolean equals(Object obj) {
196 if (obj == this) {
197 return true;
198 }
199 if (obj instanceof CategoryItemEntity && super.equals(obj)) {
200 CategoryItemEntity cie = (CategoryItemEntity) obj;
201 if (this.categoryIndex != cie.categoryIndex) {
202 return false;
203 }
204 if (this.series != cie.series) {
205 return false;
206 }
207 if (!ObjectUtilities.equal(this.category, cie.category)) {
208 return false;
209 }
210 return true;
211 }
212 return false;
213 }
214
215 }