001: /* ===========================================================
002: * JFreeChart : a free chart library for the Java(tm) platform
003: * ===========================================================
004: *
005: * (C) Copyright 2000-2007, 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: * HistogramBin.java
029: * -----------------
030: * (C) Copyright 2003-2007, by Jelai Wang and Contributors.
031: *
032: * Original Author: Jelai Wang (jelaiw AT mindspring.com);
033: * Contributor(s): David Gilbert (for Object Refinery Limited);
034: *
035: * $Id: HistogramBin.java,v 1.4.2.3 2007/02/02 15:50:24 mungady Exp $
036: *
037: * Changes
038: * -------
039: * 06-Jul-2003 : Version 1, contributed by Jelai Wang (DG);
040: * 07-Jul-2003 : Changed package and added Javadocs (DG);
041: * 01-Mar-2004 : Moved from org.jfree.data --> org.jfree.data.statistics (DG);
042: * ------------- JFREECHART 1.0.x ---------------------------------------------
043: * 02-Feb-2007 : Removed author tags from all over JFreeChart sources (DG);
044: *
045: */
046:
047: package org.jfree.data.statistics;
048:
049: import java.io.Serializable;
050:
051: /**
052: * A bin for the {@link HistogramDataset} class.
053: */
054: public class HistogramBin implements Cloneable, Serializable {
055:
056: /** For serialization. */
057: private static final long serialVersionUID = 7614685080015589931L;
058:
059: /** The number of items in the bin. */
060: private int count;
061:
062: /** The start boundary. */
063: private double startBoundary;
064:
065: /** The end boundary. */
066: private double endBoundary;
067:
068: /**
069: * Creates a new bin.
070: *
071: * @param startBoundary the start boundary.
072: * @param endBoundary the end boundary.
073: */
074: public HistogramBin(double startBoundary, double endBoundary) {
075: if (startBoundary > endBoundary) {
076: throw new IllegalArgumentException(
077: "HistogramBin(): startBoundary > endBoundary.");
078: }
079: this .count = 0;
080: this .startBoundary = startBoundary;
081: this .endBoundary = endBoundary;
082: }
083:
084: /**
085: * Returns the number of items in the bin.
086: *
087: * @return The item count.
088: */
089: public int getCount() {
090: return this .count;
091: }
092:
093: /**
094: * Increments the item count.
095: */
096: public void incrementCount() {
097: this .count++;
098: }
099:
100: /**
101: * Returns the start boundary.
102: *
103: * @return The start boundary.
104: */
105: public double getStartBoundary() {
106: return this .startBoundary;
107: }
108:
109: /**
110: * Returns the end boundary.
111: *
112: * @return The end boundary.
113: */
114: public double getEndBoundary() {
115: return this .endBoundary;
116: }
117:
118: /**
119: * Returns the bin width.
120: *
121: * @return The bin width.
122: */
123: public double getBinWidth() {
124: return this .endBoundary - this .startBoundary;
125: }
126:
127: /**
128: * Tests this object for equality with an arbitrary object.
129: *
130: * @param obj the object to test against.
131: *
132: * @return A boolean.
133: */
134: public boolean equals(Object obj) {
135: if (obj == null) {
136: return false;
137: }
138: if (obj == this ) {
139: return true;
140: }
141: if (obj instanceof HistogramBin) {
142: HistogramBin bin = (HistogramBin) obj;
143: boolean b0 = bin.startBoundary == this .startBoundary;
144: boolean b1 = bin.endBoundary == this .endBoundary;
145: boolean b2 = bin.count == this .count;
146: return b0 && b1 && b2;
147: }
148: return false;
149: }
150:
151: /**
152: * Returns a clone of the bin.
153: *
154: * @return A clone.
155: *
156: * @throws CloneNotSupportedException not thrown by this class.
157: */
158: public Object clone() throws CloneNotSupportedException {
159: return super.clone();
160: }
161:
162: }
|