    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    }