From: David G. <mu...@us...> - 2005-11-17 12:07:57
|
Update of /cvsroot/jfreechart/jfreechart/source/org/jfree/data/time In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12502/source/org/jfree/data/time Modified Files: Tag: STABLE_1-0-0 TimeSeries.java Log Message: 2005-11-17 David Gilbert <dav...@ob...> * source/org/jfree/data/time/TimeSeries.java (historyCount): Renamed maximumItemAge, (TimeSeries(String, String, String, Class)): Update for renamed field, (getMaximumItemCount): API doc update, (setMaximumItemCount): Added argument check, and remove surplus items in a way that fires a SeriesChangeEvent, (getHistoryCount): Renamed getMaximumItemAge(), (setHistoryCount): Renamed setMaxumumItemAge() and reimplemented, (add(TimeSeriesDataItem)): Update for refactored method, (addOrUpdate(RegularTimePeriod, Number)): Likewise, (ageHistoryCountItems): Renamed removeAgedItems and amended to generate change notification if requested, (ageHistoryCountItems(long)): Likewise, (equals): Updates for renamed method, (hashCode): Likewise. * source/org/jfree/data/time/junit/TimeSeriesTests.java (testEquals): Updated for renamed field. Index: TimeSeries.java =================================================================== RCS file: /cvsroot/jfreechart/jfreechart/source/org/jfree/data/time/TimeSeries.java,v retrieving revision 1.10.2.1 retrieving revision 1.10.2.2 diff -C2 -d -r1.10.2.1 -r1.10.2.2 *** TimeSeries.java 25 Oct 2005 21:35:24 -0000 1.10.2.1 --- TimeSeries.java 17 Nov 2005 12:07:45 -0000 1.10.2.2 *************** *** 63,66 **** --- 63,67 ---- * 15-Jun-2004 : Fixed NullPointerException in equals() method (DG); * 29-Nov-2004 : Fixed bug 1075255 (DG); + * 17-Nov-2005 : Renamed historyCount --> maximumItemAge (DG); * */ *************** *** 74,77 **** --- 75,79 ---- import org.jfree.data.general.Series; + import org.jfree.data.general.SeriesChangeEvent; import org.jfree.data.general.SeriesException; import org.jfree.util.ObjectUtilities; *************** *** 106,111 **** private int maximumItemCount; ! /** The history count. */ ! private int historyCount; /** --- 108,113 ---- private int maximumItemCount; ! /** The maximum age of items for the series. */ ! private int maximumItemAge; /** *************** *** 159,164 **** this.data = new java.util.ArrayList(); this.maximumItemCount = Integer.MAX_VALUE; ! this.historyCount = 0; ! } --- 161,166 ---- this.data = new java.util.ArrayList(); this.maximumItemCount = Integer.MAX_VALUE; ! this.maximumItemAge = Integer.MAX_VALUE; ! } *************** *** 227,234 **** /** * Returns the maximum number of items that will be retained in the series. ! * <P> ! * The default value is <code>Integer.MAX_VALUE</code>). * * @return The maximum item count. */ public int getMaximumItemCount() { --- 229,237 ---- /** * Returns the maximum number of items that will be retained in the series. ! * The default value is <code>Integer.MAX_VALUE</code>. * * @return The maximum item count. + * + * @see #setMaximumItemCount(int) */ public int getMaximumItemCount() { *************** *** 237,242 **** /** ! * Sets the maximum number of items that will be retained in the series. ! * <P> * If you add a new item to the series such that the number of items will * exceed the maximum item count, then the FIRST element in the series is --- 240,244 ---- /** ! * Sets the maximum number of items that will be retained in the series. * If you add a new item to the series such that the number of items will * exceed the maximum item count, then the FIRST element in the series is *************** *** 244,269 **** * exceeded. * ! * @param maximum the maximum. */ public void setMaximumItemCount(int maximum) { this.maximumItemCount = maximum; ! while (this.data.size() > this.maximumItemCount) { ! this.data.remove(0); } } /** ! * Returns the history count for the series. * ! * @return The history count. */ ! public int getHistoryCount() { ! return this.historyCount; } /** ! * Sets the number of time units in the 'history' for the series. ! * <P> ! * This provides one mechanism for automatically dropping old data from the * time series. For example, if a series contains daily data, you might set * the history count to 30. Then, when you add a new data item, all data --- 246,278 ---- * exceeded. * ! * @param maximum the maximum (requires >= 0). ! * ! * @see #getMaximumItemCount() */ public void setMaximumItemCount(int maximum) { + if (maximum < 0) { + throw new IllegalArgumentException("Negative 'maximum' argument."); + } this.maximumItemCount = maximum; ! int count = this.data.size(); ! if (count > maximum) { ! delete(0, count - maximum - 1); } } /** ! * Returns the maximum item age (in time periods) for the series. * ! * @return The maximum item age. ! * ! * @see #setMaximumItemAge(int) */ ! public int getMaximumItemAge() { ! return this.maximumItemAge; } /** ! * Sets the number of time units in the 'history' for the series. This ! * provides one mechanism for automatically dropping old data from the * time series. For example, if a series contains daily data, you might set * the history count to 30. Then, when you add a new data item, all data *************** *** 272,278 **** * * @param periods the number of time periods. */ ! public void setHistoryCount(int periods) { ! this.historyCount = periods; } --- 281,293 ---- * * @param periods the number of time periods. + * + * @see #getMaximumItemAge() */ ! public void setMaximumItemAge(int periods) { ! if (periods < 0) { ! throw new IllegalArgumentException("Negative 'periods' argument."); ! } ! this.maximumItemAge = periods; ! removeAgedItems(true); // remove old items and notify if necessary } *************** *** 506,512 **** } ! // check if there are any values earlier than specified by the ! // history count... ! ageHistoryCountItems(); fireSeriesChanged(); } --- 521,527 ---- } ! removeAgedItems(false); // remove old items if necessary, but ! // don't notify anyone, because that ! // happens next anyway... fireSeriesChanged(); } *************** *** 645,649 **** overwritten = (TimeSeriesDataItem) existing.clone(); existing.setValue(value); ! ageHistoryCountItems(); fireSeriesChanged(); } --- 660,666 ---- overwritten = (TimeSeriesDataItem) existing.clone(); existing.setValue(value); ! removeAgedItems(false); // remove old items if necessary, but ! // don't notify anyone, because that ! // happens next anyway... fireSeriesChanged(); } *************** *** 656,660 **** } ! ageHistoryCountItems(); fireSeriesChanged(); } --- 673,679 ---- } ! removeAgedItems(false); // remove old items if necessary, but ! // don't notify anyone, because that ! // happens next anyway... fireSeriesChanged(); } *************** *** 665,679 **** /** * Age items in the series. Ensure that the timespan from the youngest to ! * the oldest record in the series does not exceed history count. oldest ! * items will be removed if required. */ ! public void ageHistoryCountItems() { // check if there are any values earlier than specified by the history // count... ! if ((getItemCount() > 1) && (this.historyCount > 0)) { long latest = getTimePeriod(getItemCount() - 1).getSerialIndex(); while ((latest - getTimePeriod(0).getSerialIndex()) ! >= this.historyCount) { this.data.remove(0); } } --- 684,706 ---- /** * Age items in the series. Ensure that the timespan from the youngest to ! * the oldest record in the series does not exceed maximumItemAge time ! * periods. Oldest items will be removed if required. ! * ! * @param notify controls whether or not a {@link SeriesChangeEvent} is ! * sent to registered listeners IF any items are removed. */ ! public void removeAgedItems(boolean notify) { // check if there are any values earlier than specified by the history // count... ! if (getItemCount() > 1) { long latest = getTimePeriod(getItemCount() - 1).getSerialIndex(); + boolean removed = false; while ((latest - getTimePeriod(0).getSerialIndex()) ! >= this.maximumItemAge) { this.data.remove(0); + removed = true; + } + if (removed && notify) { + fireSeriesChanged(); } } *************** *** 686,696 **** * * @param latest the time to be compared against when aging data. */ ! public void ageHistoryCountItems(long latest) { // check if there are any values earlier than specified by the history // count... ! if ((getItemCount() > 1) && (this.historyCount > 0)) { while ((latest - getTimePeriod(0).getSerialIndex()) ! >= this.historyCount) { this.data.remove(0); } --- 713,725 ---- * * @param latest the time to be compared against when aging data. + * @param notify controls whether or not a {@link SeriesChangeEvent} is + * sent to registered listeners IF any items are removed. */ ! public void removeAgedItems(long latest, boolean notify) { // check if there are any values earlier than specified by the history // count... ! if (getItemCount() > 1) { while ((latest - getTimePeriod(0).getSerialIndex()) ! >= this.maximumItemAge) { this.data.remove(0); } *************** *** 855,859 **** } ! if (getHistoryCount() != s.getHistoryCount()) { return false; } --- 884,888 ---- } ! if (getMaximumItemAge() != s.getMaximumItemAge()) { return false; } *************** *** 888,892 **** result = 29 * result + this.data.hashCode(); result = 29 * result + this.maximumItemCount; ! result = 29 * result + this.historyCount; return result; } --- 917,921 ---- result = 29 * result + this.data.hashCode(); result = 29 * result + this.maximumItemCount; ! result = 29 * result + this.maximumItemAge; return result; } |