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 }