亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dynamictimeseriescollection.java

?? jfreechart1.0.1 jsp繪制圖表的開發包
?? JAVA
?? 第 1 頁 / 共 3 頁
字號:
/* ===========================================================
 * JFreeChart : a free chart library for the Java(tm) platform
 * ===========================================================
 *
 * (C) Copyright 2000-2005, 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., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, 
 * USA.  
 *
 * [Java is a trademark or registered trademark of Sun Microsystems, Inc. 
 * in the United States and other countries.]
 *
 * --------------------------------
 * DynamicTimeSeriesCollection.java
 * --------------------------------
 * (C) Copyright 2002-2005, by I. H. Thomae and Contributors.
 *
 * Original Author:  I. H. Thomae (ithomae@ists.dartmouth.edu);
 * Contributor(s):   David Gilbert (for Object Refinery Limited);
 *
 * $Id: DynamicTimeSeriesCollection.java,v 1.11.2.1 2005/10/25 21:35:24 mungady Exp $
 *
 * Changes
 * -------
 * 22-Nov-2002 : Initial version completed
 *    Jan 2003 : Optimized advanceTime(), added implemnt'n of RangeInfo intfc
 *               (using cached values for min, max, and range); also added
 *               getOldestIndex() and getNewestIndex() ftns so client classes
 *               can use this class as the master "index authority".
 * 22-Jan-2003 : Made this class stand on its own, rather than extending
 *               class FastTimeSeriesCollection
 * 31-Jan-2003 : Changed TimePeriod --> RegularTimePeriod (DG);
 * 13-Mar-2003 : Moved to com.jrefinery.data.time package (DG);
 * 29-Apr-2003 : Added small change to appendData method, from Irv Thomae (DG);
 * 19-Sep-2003 : Added new appendData method, from Irv Thomae (DG);
 * 05-May-2004 : Now extends AbstractIntervalXYDataset.  This also required a
 *               change to the return type of the getY() method - I'm slightly
 *               unsure of the implications of this, so it might require some
 *               further amendment (DG);
 * 15-Jul-2004 : Switched getX() with getXValue() and getY() with 
 *               getYValue() (DG);
 * 11-Jan-2004 : Removed deprecated code in preparation for the 1.0.0 
 *               release (DG);
 * 
 */

package org.jfree.data.time;

import java.util.Calendar;
import java.util.TimeZone;

import org.jfree.data.DomainInfo;
import org.jfree.data.Range;
import org.jfree.data.RangeInfo;
import org.jfree.data.general.SeriesChangeEvent;
import org.jfree.data.xy.AbstractIntervalXYDataset;
import org.jfree.data.xy.IntervalXYDataset;

/**
 * A dynamic dataset.
 * <p>
 * Like FastTimeSeriesCollection, this class is a functional replacement
 * for JFreeChart's TimeSeriesCollection _and_ TimeSeries classes.
 * FastTimeSeriesCollection is appropriate for a fixed time range; for
 * real-time applications this subclass adds the ability to append new
 * data and discard the oldest.
 * In this class, the arrays used in FastTimeSeriesCollection become FIFO's.
 * NOTE:As presented here, all data is assumed >= 0, an assumption which is
 * embodied only in methods associated with interface RangeInfo.
 *
 * @author Irv Thomae.
 */
public class DynamicTimeSeriesCollection extends AbstractIntervalXYDataset
                                         implements IntervalXYDataset,
                                                    DomainInfo,
                                                    RangeInfo {

    /** 
     * Useful constant for controlling the x-value returned for a time 
     * period. 
     */
    public static final int START = 0;

    /** 
     * Useful constant for controlling the x-value returned for a time period. 
     */
    public static final int MIDDLE = 1;

    /** 
     * Useful constant for controlling the x-value returned for a time period. 
     */
    public static final int END = 2;

    /** The maximum number of items for each series (can be overridden). */
    private int maximumItemCount = 2000;  // an arbitrary safe default value

    /** The history count. */
    protected int historyCount;

    /** Storage for the series keys. */
    private Comparable[] seriesKeys;

    /** The time period class - barely used, and could be removed (DG). */
    private Class timePeriodClass = Minute.class;   // default value;

    /** Storage for the x-values. */
    protected RegularTimePeriod[] pointsInTime;

    /** The number of series. */
    private int seriesCount;

    /**
     * A wrapper for a fixed array of float values.
     */
    protected class ValueSequence {

        /** Storage for the float values. */
        float[] dataPoints;

        /**
         * Default constructor:
         */
        public ValueSequence() {
            this(DynamicTimeSeriesCollection.this.maximumItemCount);
        }

        /**
         * Creates a sequence with the specified length.
         *
         * @param length  the length.
         */
        public ValueSequence(int length) {
            this.dataPoints = new float[length];
            for (int i = 0; i < length; i++) {
                this.dataPoints[i] = 0.0f;
            }
        }

        /**
         * Enters data into the storage array.
         *
         * @param index  the index.
         * @param value  the value.
         */
        public void enterData(int index, float value) {
            this.dataPoints[index] = value;
        }

        /**
         * Returns a value from the storage array.
         *
         * @param index  the index.
         *
         * @return The value.
         */
        public float getData(int index) {
            return this.dataPoints[index];
        }
    }

    /** An array for storing the objects that represent each series. */
    protected ValueSequence[] valueHistory;

    /** A working calendar (to recycle) */
    protected Calendar workingCalendar;

    /** 
     * The position within a time period to return as the x-value (START, 
     * MIDDLE or END). 
     */
    private int position;

    /**
     * A flag that indicates that the domain is 'points in time'.  If this flag 
     * is true, only the x-value is used to determine the range of values in 
     * the domain, the start and end x-values are ignored.
     */
    private boolean domainIsPointsInTime;

    /** index for mapping: points to the oldest valid time & data. */
    private int oldestAt;  // as a class variable, initializes == 0

    /** Index of the newest data item. */
    private int newestAt;

    // cached values used for interface DomainInfo:

    /** the # of msec by which time advances. */
    private long deltaTime;

    /** Cached domain start (for use by DomainInfo). */
    private Long domainStart;

    /** Cached domain end (for use by DomainInfo). */
    private Long domainEnd;

    /** Cached domain range (for use by DomainInfo). */
    private Range domainRange;

    // Cached values used for interface RangeInfo: (note minValue pinned at 0)
    //   A single set of extrema covers the entire SeriesCollection

    /** The minimum value. */
    private Float minValue = new Float(0.0f);

    /** The maximum value. */
    private Float maxValue = null;

    /** The value range. */
    private Range valueRange;  // autoinit's to null.

    /**
     * Constructs a dataset with capacity for N series, tied to default 
     * timezone.
     *
     * @param nSeries the number of series to be accommodated.
     * @param nMoments the number of TimePeriods to be spanned.
     */
    public DynamicTimeSeriesCollection(int nSeries, int nMoments) {

        this(nSeries, nMoments, new Millisecond(), TimeZone.getDefault());
        this.newestAt = nMoments - 1;

    }

    /**
     * Constructs an empty dataset, tied to a specific timezone.
     *
     * @param nSeries the number of series to be accommodated
     * @param nMoments the number of TimePeriods to be spanned
     * @param zone the timezone.
     */
    public DynamicTimeSeriesCollection(int nSeries, int nMoments, 
                                       TimeZone zone) {
        this(nSeries, nMoments, new Millisecond(), zone);
        this.newestAt = nMoments - 1;
    }

    /**
     * Creates a new dataset.
     *
     * @param nSeries  the number of series.
     * @param nMoments  the number of items per series.
     * @param timeSample  a time period sample.
     */
    public DynamicTimeSeriesCollection(int nSeries,
                                       int nMoments,
                                       RegularTimePeriod timeSample) {
        this(nSeries, nMoments, timeSample, TimeZone.getDefault());
    }

    /**
     * Creates a new dataset.
     *
     * @param nSeries  the number of series.
     * @param nMoments  the number of items per series.
     * @param timeSample  a time period sample.
     * @param zone  the time zone.
     */
    public DynamicTimeSeriesCollection(int nSeries,
                                       int nMoments,
                                       RegularTimePeriod timeSample,
                                       TimeZone zone) {

        // the first initialization must precede creation of the ValueSet array:
        this.maximumItemCount = nMoments;  // establishes length of each array
        this.historyCount = nMoments;
        this.seriesKeys = new Comparable[nSeries];
        // initialize the members of "seriesNames" array so they won't be null:
        for (int i = 0; i < nSeries; i++) {
            this.seriesKeys[i] = "";
        }
        this.newestAt = nMoments - 1;
        this.valueHistory = new ValueSequence[nSeries];
        this.timePeriodClass = timeSample.getClass();

        /// Expand the following for all defined TimePeriods:
        if (this.timePeriodClass == Second.class) {
            this.pointsInTime = new Second[nMoments];
        }
        else if (this.timePeriodClass == Minute.class) {
            this.pointsInTime = new Minute[nMoments];
        }
        else if (this.timePeriodClass == Hour.class) {
            this.pointsInTime = new Hour[nMoments];
        }
        ///  .. etc....
        this.workingCalendar = Calendar.getInstance(zone);
        this.position = START;
        this.domainIsPointsInTime = true;
    }

    /**
     * Fill the pointsInTime with times using TimePeriod.next():
     * Will silently return if the time array was already populated.
     *
     * Also computes the data cached for later use by
     * methods implementing the DomainInfo interface:
     *
     * @param start  the start.
     *
     * @return ??.
     */
    public synchronized long setTimeBase(RegularTimePeriod start) {

        if (this.pointsInTime[0] == null) {
            this.pointsInTime[0] = start;
            for (int i = 1; i < this.historyCount; i++) {
                this.pointsInTime[i] = this.pointsInTime[i - 1].next();
            }
        }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一级在线观看| 亚洲理论在线观看| 亚洲人成影院在线观看| 综合激情网...| 免费人成在线不卡| 成熟亚洲日本毛茸茸凸凹| 99久久婷婷国产综合精品电影| 欧美日韩国产小视频在线观看| 欧美激情综合在线| 日韩专区一卡二卡| 色悠悠亚洲一区二区| 久久丝袜美腿综合| 男人的j进女人的j一区| 欧美最猛黑人xxxxx猛交| 国产精品欧美一级免费| 精品在线亚洲视频| 欧美午夜片在线看| 国产精品对白交换视频| 亚洲欧美另类小说视频| 久久久国产精华| 日本aⅴ亚洲精品中文乱码| 94色蜜桃网一区二区三区| 欧美精品一区二区不卡| 日本免费新一区视频| 欧美日韩亚洲综合在线| 一区二区三区毛片| 色拍拍在线精品视频8848| 亚洲欧洲国产日韩| 成人精品电影在线观看| 久久蜜桃av一区二区天堂| 日本欧美一区二区三区乱码| 欧美日韩精品一区二区三区蜜桃 | 另类小说色综合网站| 欧美日韩日日夜夜| 午夜精品在线看| 欧美一区二区在线看| 日韩激情视频网站| 欧美福利电影网| 日本欧美久久久久免费播放网| 欧美一区二区三区播放老司机| 日本中文字幕一区二区有限公司| 欧美人与禽zozo性伦| 日韩黄色小视频| 日韩午夜电影av| 精品在线播放免费| 国产性色一区二区| 成人美女视频在线看| 国产精品国产三级国产aⅴ原创| 波多野结衣在线aⅴ中文字幕不卡| 亚洲欧洲成人精品av97| 在线观看一区日韩| 秋霞电影一区二区| 精品精品国产高清a毛片牛牛| 国产一区二区免费在线| 国产精品夫妻自拍| 欧美日韩精品福利| 韩国精品在线观看| 91免费观看国产| 国产精品麻豆99久久久久久| 91久久一区二区| 日韩不卡一区二区| 欧美国产日韩亚洲一区| 色94色欧美sute亚洲线路一久| 亚洲一二三四久久| 久久嫩草精品久久久久| 色一情一乱一乱一91av| 日本欧洲一区二区| 欧美激情中文不卡| 91蜜桃在线观看| 三级欧美韩日大片在线看| 精品国产麻豆免费人成网站| 99在线热播精品免费| 日韩精品一区第一页| 欧美国产精品专区| 欧美一级一级性生活免费录像| 国产 日韩 欧美大片| 午夜久久福利影院| 亚洲欧美另类在线| 欧美mv和日韩mv国产网站| 91色综合久久久久婷婷| 狠狠色狠狠色合久久伊人| 亚洲欧美日韩电影| 欧美成人三级电影在线| 日本国产一区二区| 韩国视频一区二区| 亚洲中国最大av网站| 久久噜噜亚洲综合| 欧美老女人在线| 色综合婷婷久久| 国产精品亚洲成人| 免费一级片91| 午夜精品一区在线观看| 国产精品成人网| 久久伊99综合婷婷久久伊| 欧美日韩国产综合草草| 91网站在线观看视频| 国产馆精品极品| 久久精品国产一区二区| 亚洲欧美日韩一区二区| 国产三级欧美三级| 精品国产在天天线2019| 久久精工是国产品牌吗| 亚洲视频一区在线观看| 国产亚洲精品超碰| 精品国产成人在线影院| 欧美日韩成人激情| 色香蕉久久蜜桃| 99久免费精品视频在线观看| 激情都市一区二区| 捆绑调教美女网站视频一区| 日韩在线卡一卡二| 亚洲伊人色欲综合网| 最新国产成人在线观看| 国产精品无码永久免费888| 久久天天做天天爱综合色| 欧美成人福利视频| 91精品国产综合久久久久久 | 国产婷婷色一区二区三区在线| 欧美日韩在线播放三区四区| 欧美亚洲国产一区二区三区| 91免费视频观看| 欧美在线观看一区| 欧美老女人在线| 欧美一级艳片视频免费观看| 日韩你懂的电影在线观看| 欧美一二三区在线| 久久亚洲私人国产精品va媚药| 久久亚洲二区三区| 国产精品色在线观看| 亚洲日本一区二区三区| 亚洲精品国产无套在线观| 亚洲一区二区三区爽爽爽爽爽| 亚洲mv在线观看| 美国十次综合导航| 国产成人综合精品三级| fc2成人免费人成在线观看播放| 99久久精品免费看国产免费软件| 99riav一区二区三区| 欧美唯美清纯偷拍| 日韩午夜中文字幕| 中文字幕av不卡| 亚洲精品乱码久久久久久日本蜜臀| 亚洲一区二区在线播放相泽| 蜜臀久久久久久久| 国产精品久久久久久久久果冻传媒| 亚洲同性同志一二三专区| 亚洲小说欧美激情另类| 久久国产乱子精品免费女| 国产成人小视频| 在线观看国产日韩| 精品国产一区a| 日韩毛片精品高清免费| 日本伊人色综合网| 成人黄色免费短视频| 欧美色成人综合| 久久久久久久久久久黄色| 亚洲在线一区二区三区| 激情国产一区二区| 在线观看亚洲成人| 26uuu亚洲婷婷狠狠天堂| 亚洲天堂精品在线观看| 男女男精品视频网| 91麻豆.com| 亚洲一卡二卡三卡四卡无卡久久| 激情丁香综合五月| 欧美久久久久久久久中文字幕| 欧美精品一区二区三区很污很色的 | 国产一区二区三区黄视频 | 日韩毛片在线免费观看| 蜜桃久久久久久| 91网页版在线| 久久精品一区二区| 麻豆一区二区99久久久久| 91啪九色porn原创视频在线观看| 日韩欧美www| 成人免费在线播放视频| 国产一区高清在线| 欧美精品丝袜久久久中文字幕| 成人欧美一区二区三区| 国产**成人网毛片九色 | 亚洲国产精品久久久久秋霞影院| 国产一区二区中文字幕| 欧美性色aⅴ视频一区日韩精品| 国产三级精品视频| 国产一区美女在线| 精品国产一区二区三区久久久蜜月| 亚洲成人你懂的| 欧美午夜精品一区二区三区| 日韩美女啊v在线免费观看| 成人午夜视频在线观看| 久久亚洲二区三区| 国产在线不卡视频| 欧美精品一区二区三区视频| 黑人精品欧美一区二区蜜桃| 日韩三级在线免费观看| 日韩和欧美一区二区三区| 欧美日本在线播放| 午夜av一区二区三区| 欧美日韩精品免费| 日韩av高清在线观看|