001: /* ===========================================================
002: * JFreeChart : a free chart library for the Java(tm) platform
003: * ===========================================================
004: *
005: * (C) Copyright 2000-2006, 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: * AbstractSeriesDataset.java
029: * --------------------------
030: * (C) Copyright 2001-2006, by Object Refinery Limited.
031: *
032: * Original Author: David Gilbert (for Object Refinery Limited);
033: * Contributor(s): -;
034: *
035: * $Id: AbstractSeriesDataset.java,v 1.4.2.3 2006/08/03 16:07:03 mungady Exp $
036: *
037: * Changes
038: * -------
039: * 17-Nov-2001 : Version 1 (DG);
040: * 28-Mar-2002 : Implemented SeriesChangeListener interface (DG);
041: * 04-Oct-2002 : Fixed errors reported by Checkstyle (DG);
042: * 04-Feb-2003 : Removed redundant methods (DG);
043: * 27-Mar-2003 : Implemented Serializable (DG);
044: *
045: */
046:
047: package org.jfree.data.general;
048:
049: import java.io.Serializable;
050:
051: /**
052: * An abstract implementation of the {@link SeriesDataset} interface,
053: * containing a mechanism for registering change listeners.
054: */
055: public abstract class AbstractSeriesDataset extends AbstractDataset
056: implements SeriesDataset, SeriesChangeListener, Serializable {
057:
058: /** For serialization. */
059: private static final long serialVersionUID = -6074996219705033171L;
060:
061: /**
062: * Creates a new dataset.
063: */
064: protected AbstractSeriesDataset() {
065: super ();
066: }
067:
068: /**
069: * Returns the number of series in the dataset.
070: *
071: * @return The series count.
072: */
073: public abstract int getSeriesCount();
074:
075: /**
076: * Returns the key for a series.
077: * <p>
078: * If <code>series</code> is not within the specified range, the
079: * implementing method should throw an {@link IndexOutOfBoundsException}
080: * (preferred) or an {@link IllegalArgumentException}.
081: *
082: * @param series the series index (in the range <code>0</code> to
083: * <code>getSeriesCount() - 1</code>).
084: *
085: * @return The series key.
086: */
087: public abstract Comparable getSeriesKey(int series);
088:
089: /**
090: * Returns the index of the named series, or -1.
091: *
092: * @param seriesKey the series key (<code>null</code> permitted).
093: *
094: * @return The index.
095: */
096: public int indexOf(Comparable seriesKey) {
097: int seriesCount = getSeriesCount();
098: for (int s = 0; s < seriesCount; s++) {
099: if (getSeriesKey(s).equals(seriesKey)) {
100: return s;
101: }
102: }
103: return -1;
104: }
105:
106: /**
107: * Called when a series belonging to the dataset changes.
108: *
109: * @param event information about the change.
110: */
111: public void seriesChanged(SeriesChangeEvent event) {
112: fireDatasetChanged();
113: }
114:
115: }
|