⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timeseries.java

📁 这是一个segy数据显示程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* =========================================================== * JFreeChart : a free chart library for the Java(tm) platform * =========================================================== * * (C) Copyright 2000-2004, by Object Refinery Limited and Contributors. * * Project Info:  http://www.jfree.org/jfreechart/index.html * * This library is free software; you can redistribute it and/or modify it under the terms * of the GNU Lesser General Public License as published by the Free Software Foundation; * either version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License along with this * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, * Boston, MA 02111-1307, USA. * * [Java is a trademark or registered trademark of Sun Microsystems, Inc.  * in the United States and other countries.] * * --------------- * TimeSeries.java * --------------- * (C) Copyright 2001-2003, by Object Refinery Limited. * * Original Author:  David Gilbert (for Object Refinery Limited); * Contributor(s):   Bryan Scott; * * $Id: TimeSeries.java,v 1.25 2004/05/21 10:52:58 mungady Exp $ * * Changes * ------- * 11-Oct-2001 : Version 1 (DG); * 14-Nov-2001 : Added listener mechanism (DG); * 15-Nov-2001 : Updated argument checking and exceptions in add(...) method (DG); * 29-Nov-2001 : Added properties to describe the domain and range (DG); * 07-Dec-2001 : Renamed TimeSeries --> BasicTimeSeries (DG); * 01-Mar-2002 : Updated import statements (DG); * 28-Mar-2002 : Added a method add(TimePeriod, double) (DG); * 27-Aug-2002 : Changed return type of delete method to void (DG); * 04-Oct-2002 : Added itemCount and historyCount attributes, fixed errors reported by *               Checkstyle (DG); * 29-Oct-2002 : Added series change notification to addOrUpdate(...) method (DG); * 28-Jan-2003 : Changed name back to TimeSeries (DG); * 13-Mar-2003 : Moved to com.jrefinery.data.time package and implemented Serializable (DG); * 01-May-2003 : Updated equals(...) method (see bug report 727575) (DG); * 14-Aug-2003 : Added ageHistoryCountItems method (copied existing code for contents) made *               a method and added to addOrUpdate.  Made a public method to enable ageing *               against a specified time (eg now) as opposed to lastest time in series (BS); * 15-Oct-2003 : Added fix for setItemCount method - see bug report 804425.  Modified exception *               message in add(...) method to be more informative (DG); * 13-Apr-2004 : Added clear() method (DG); * 21-May-2004 : Added an extra addOrUpdate() method (DG); *  */package org.jfree.data.time;import java.io.Serializable;import java.util.Collection;import java.util.Collections;import java.util.List;import org.jfree.data.Series;import org.jfree.data.SeriesException;/** * Represents a sequence of zero or more data items in the form (period, value). */public class TimeSeries extends Series implements Cloneable, Serializable {    /** Default value for the domain description. */    protected static final String DEFAULT_DOMAIN_DESCRIPTION = "Time";    /** Default value for the range description. */    protected static final String DEFAULT_RANGE_DESCRIPTION = "Value";    /** A description of the domain. */    private String domain;    /** A description of the range. */    private String range;    /** The type of period for the data. */    protected Class timePeriodClass;    /** The list of data items in the series. */    protected List data;    /** The maximum number of items for the series. */    private int maximumItemCount;    /** The history count. */    private int historyCount;        /**     * Creates a new (empty) time series.  By default, a daily time series is created.       * Use one of the other constructors if you require a different time period.     *     * @param name  the series name (<code>null</code> not permitted).     */    public TimeSeries(final String name) {        this(name, DEFAULT_DOMAIN_DESCRIPTION, DEFAULT_RANGE_DESCRIPTION, Day.class);    }    /**     * Creates a new  (empty) time series.     *     * @param name  the series name (<code>null</code> not permitted).     * @param timePeriodClass  the type of time period (<code>null</code> not permitted).     */    public TimeSeries(final String name, final Class timePeriodClass) {        this(name, DEFAULT_DOMAIN_DESCRIPTION, DEFAULT_RANGE_DESCRIPTION, timePeriodClass);    }    /**     * Creates a new time series that contains no data.     * <P>     * Descriptions can be specified for the domain and range.  One situation     * where this is helpful is when generating a chart for the time series -     * axis labels can be taken from the domain and range description.     *     * @param name  the name of the series (<code>null</code> not permitted).     * @param domain  the domain description (<code>null</code> permitted).     * @param range  the range description (<code>null</code> permitted).     * @param timePeriodClass  the type of time period (<code>null</code> not permitted).     */    public TimeSeries(final String name, final String domain, final String range,                       final Class timePeriodClass) {        super(name);        this.domain = domain;        this.range = range;        this.timePeriodClass = timePeriodClass;        this.data = new java.util.ArrayList();        this.maximumItemCount = Integer.MAX_VALUE;        this.historyCount = 0;    }    /**     * Returns the domain description.     *     * @return The domain description (possibly <code>null</code>).     */    public String getDomainDescription() {        return this.domain;    }    /**     * Sets the domain description.     * <P>     * A property change event is fired, and an undoable edit is posted.     *     * @param description  the description (<code>null</code> permitted).     */    public void setDomainDescription(final String description) {        final String old = this.domain;        this.domain = description;        firePropertyChange("Domain", old, description);    }    /**     * Returns the range description.     *     * @return The range description (possibly <code>null</code>).     */    public String getRangeDescription() {        return this.range;    }    /**     * Sets the range description and fires a property change event for the 'Range'      * property.     *     * @param description  the description (<code>null</code> permitted).     */    public void setRangeDescription(final String description) {        final String old = this.range;        this.range = description;        firePropertyChange("Range", old, description);    }    /**     * Returns the number of items in the series.     *     * @return The item count.     */    public int getItemCount() {        return this.data.size();    }    /**     * Returns the list of data items for the series (the list contains {@link TimeSeriesDataItem}     * objects and is unmodifiable).     *     * @return The list of data items.     */    public List getItems() {        return Collections.unmodifiableList(this.data);    }    /**     * 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() {        return this.maximumItemCount;    }    /**     * 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 automatically removed,     * ensuring that the maximum item count is not exceeded.     *     * @param maximum  the maximum.     */    public void setMaximumItemCount(final 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 items more than 30 days older than the latest     * value are automatically dropped from the series.     *     * @param periods  the number of time periods.     */    public void setHistoryCount(final int periods) {        this.historyCount = periods;    }    /**     * Returns the time period class for this series.     * <p>     * Only one time period class can be used within a single series (enforced).     * If you add a data item with a {@link Year} for the time period, then all     * subsequent data items must also have a {@link Year} for the time period.     *     * @return The time period class (never <code>null</code>).     */    public Class getTimePeriodClass() {        return this.timePeriodClass;    }    /**     * Returns a data item for the series.     *     * @param index  the item index (zero-based).     *     * @return The data item.     */    public TimeSeriesDataItem getDataItem(final int index) {        return (TimeSeriesDataItem) this.data.get(index);    }    /**     * Returns the data item for a specific period.     *     * @param period  the period of interest (<code>null</code> not allowed).     *     * @return The data item matching the specified period (or <code>null</code> if there is     *         no match).     *     */    public TimeSeriesDataItem getDataItem(final RegularTimePeriod period) {        // check arguments...        if (period == null) {            throw new IllegalArgumentException("Null 'period' argument");        }        // fetch the value...        final TimeSeriesDataItem dummy = new TimeSeriesDataItem(period, new Integer(0));        final int index = Collections.binarySearch(this.data, dummy);        if (index >= 0) {            return (TimeSeriesDataItem) this.data.get(index);        }        else {            return null;        }    }    /**     * Returns the time period at the specified index.     *     * @param index  the index of the data item.     *     * @return The time period.     */    public RegularTimePeriod getTimePeriod(final int index) {        return getDataItem(index).getPeriod();    }    /**     * Returns a time period that would be the next in sequence on the end of     * the time series.     *     * @return The next time period.     */    public RegularTimePeriod getNextTimePeriod() {        final RegularTimePeriod last = getTimePeriod(getItemCount() - 1);        return last.next();    }    /**     * Returns a collection of all the time periods in the time series.     *     * @return A collection of all the time periods.     */    public Collection getTimePeriods() {        final Collection result = new java.util.ArrayList();        for (int i = 0; i < getItemCount(); i++) {            result.add(getTimePeriod(i));        }        return result;    }    /**     * Returns a collection of time periods in the specified series, but not in     * this series, and therefore unique to the specified series.     *     * @param series  the series to check against this one.     *     * @return The unique time periods.     */    public Collection getTimePeriodsUniqueToOtherSeries(final TimeSeries series) {        final Collection result = new java.util.ArrayList();        for (int i = 0; i < series.getItemCount(); i++) {            final RegularTimePeriod period = series.getTimePeriod(i);            final int index = getIndex(period);            if (index < 0) {                result.add(period);            }        }        return result;    }    /**     * Returns the index for the item (if any) that corresponds to a time period.     *     * @param period  the time period (<code>null</code> not permitted).     *     * @return The index.     */    public int getIndex(final RegularTimePeriod period) {        // check argument...        if (period == null) {            throw new IllegalArgumentException("Null 'period' argument.");        }                // fetch the value...        final TimeSeriesDataItem dummy = new TimeSeriesDataItem(period, new Integer(0));        final int index = Collections.binarySearch(this.data, dummy);        return index;    }    /**     * Returns the value at the specified index.     *     * @param index  index of a value.     *     * @return The value (possibly <code>null</code>).     */    public Number getValue(final int index) {        return getDataItem(index).getValue();    }    /**     * Returns the value for a time period.  If there is no data item with the specified period,     * this method will return <code>null</code>.     *     * @param period  time period (<code>null</code> not permitted).     *     * @return The value (possibly <code>null</code>).     */    public Number getValue(final RegularTimePeriod period) {        final int index = getIndex(period);        if (index >= 0) {            return getValue(index);        }        else {            return null;        }    }    /**     * Adds a data item to the series and sends a {@link org.jfree.data.SeriesChangeEvent} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -