Example usage for org.jfree.data.time TimeSeries getKey

List of usage examples for org.jfree.data.time TimeSeries getKey

Introduction

In this page you can find the example usage for org.jfree.data.time TimeSeries getKey.

Prototype

public Comparable getKey() 

Source Link

Document

Returns the key for the series.

Usage

From source file:org.adempiere.apps.graph.ChartBuilder.java

private void addData(MChartDatasource ds) {

    String value = ds.getValueColumn();
    String category;/*from  w  w  w  .j a v  a  2s.  co  m*/
    String unit = "D";

    if (!chartModel.isTimeSeries())
        category = ds.getCategoryColumn();
    else {
        if (chartModel.getTimeUnit().equals(MChart.TIMEUNIT_Week)) {
            unit = "W";
        } else if (chartModel.getTimeUnit().equals(MChart.TIMEUNIT_Month)) {
            unit = "MM";
        } else if (chartModel.getTimeUnit().equals(MChart.TIMEUNIT_Quarter)) {
            unit = "Q";
        } else if (chartModel.getTimeUnit().equals(MChart.TIMEUNIT_Year)) {
            unit = "Y";
        }

        category = " TRUNC(" + ds.getDateColumn() + ", '" + unit + "') ";
    }

    String series = DB.TO_STRING(ds.getName());
    boolean hasSeries = false;
    if (ds.getSeriesColumn() != null) {
        series = ds.getSeriesColumn();
        hasSeries = true;
    }

    String where = ds.getWhereClause();
    if (!Util.isEmpty(where)) {
        where = Env.parseContext(Env.getCtx(), chartModel.getWindowNo(), where, true);
    }

    boolean hasWhere = false;

    String sql = "SELECT " + value + ", " + category + ", " + series + " FROM " + ds.getFromClause();
    if (!Util.isEmpty(where)) {
        sql += " WHERE " + where;
        hasWhere = true;
    }

    Date currentDate = Env.getContextAsDate(Env.getCtx(), "#Date");
    Date startDate = null;
    Date endDate = null;

    int scope = chartModel.getTimeScope();
    int offset = ds.getTimeOffset();

    if (chartModel.isTimeSeries() && scope != 0) {
        offset += -scope;
        startDate = increment(currentDate, chartModel.getTimeUnit(), offset);
        endDate = increment(startDate, chartModel.getTimeUnit(), scope);
    }

    if (startDate != null && endDate != null) {
        sql += hasWhere ? " AND " : " WHERE ";
        sql += category + ">=TRUNC(" + DB.TO_DATE(new Timestamp(startDate.getTime())) + ", '" + unit
                + "') AND ";
        sql += category + "<=TRUNC(" + DB.TO_DATE(new Timestamp(endDate.getTime())) + ", '" + unit + "') ";
    }

    if (sql.indexOf('@') >= 0) {
        sql = Env.parseContext(Env.getCtx(), 0, sql, false, true);
    }

    MRole role = MRole.getDefault(Env.getCtx(), false);
    sql = role.addAccessSQL(sql, null, true, false);

    if (hasSeries)
        sql += " GROUP BY " + series + ", " + category + " ORDER BY " + series + ", " + category;
    else
        sql += " GROUP BY " + category + " ORDER BY " + category;

    log.log(Level.FINE, sql);

    PreparedStatement pstmt = null;
    ResultSet rs = null;
    TimeSeries tseries = null;
    Dataset dataset = getDataset();

    try {
        pstmt = DB.prepareStatement(sql, null);
        rs = pstmt.executeQuery();
        while (rs.next()) {

            String key = rs.getString(2);
            String seriesName = rs.getString(3);
            if (seriesName == null)
                seriesName = ds.getName();
            String queryWhere = "";
            if (hasWhere)
                queryWhere += where + " AND ";

            queryWhere += series + " = " + DB.TO_STRING(seriesName) + " AND " + category + " = ";

            if (chartModel.isTimeSeries() && dataset instanceof TimeSeriesCollection) {

                if (tseries == null || !tseries.getKey().equals(seriesName)) {
                    if (tseries != null)
                        ((TimeSeriesCollection) dataset).addSeries(tseries);

                    tseries = new TimeSeries(seriesName);
                }

                Date date = rs.getDate(2);
                RegularTimePeriod period = null;

                if (chartModel.getTimeUnit().equals(MChart.TIMEUNIT_Day))
                    period = new Day(date);
                else if (chartModel.getTimeUnit().equals(MChart.TIMEUNIT_Week))
                    period = new Week(date);
                else if (chartModel.getTimeUnit().equals(MChart.TIMEUNIT_Month))
                    period = new Month(date);
                else if (chartModel.getTimeUnit().equals(MChart.TIMEUNIT_Quarter))
                    period = new Quarter(date);
                else if (chartModel.getTimeUnit().equals(MChart.TIMEUNIT_Year))
                    period = new Year(date);

                tseries.add(period, rs.getBigDecimal(1));
                key = period.toString();
                queryWhere += DB.TO_DATE(new Timestamp(date.getTime()));
            } else {
                queryWhere += DB.TO_STRING(key);
            }

            MQuery query = new MQuery(ds.getAD_Table_ID());
            String keyCol = MTable.get(Env.getCtx(), ds.getAD_Table_ID()).getKeyColumns()[0];
            String whereClause = keyCol + " IN (SELECT " + ds.getKeyColumn() + " FROM " + ds.getFromClause()
                    + " WHERE " + queryWhere + " )";
            query.addRestriction(whereClause.toString());
            query.setRecordCount(1);

            HashMap<String, MQuery> map = getQueries();

            if (dataset instanceof DefaultPieDataset) {
                ((DefaultPieDataset) dataset).setValue(key, rs.getBigDecimal(1));
                map.put(key, query);
            } else if (dataset instanceof DefaultCategoryDataset) {
                ((DefaultCategoryDataset) dataset).addValue(rs.getBigDecimal(1), seriesName, key);
                map.put(seriesName + "__" + key, query);
            } else if (dataset instanceof TimeSeriesCollection) {
                map.put(seriesName + "__" + key, query);
            }
        }
    } catch (SQLException e) {
        throw new DBException(e, sql);
    } finally {
        DB.close(rs, pstmt);
        rs = null;
        pstmt = null;
    }

    if (tseries != null)
        ((TimeSeriesCollection) dataset).addSeries(tseries);

}

From source file:org.jfree.data.time.TimeSeriesTest.java

/**
 * Check that cloning works.//from  w  ww .jav  a 2s .c om
 */
@Test
public void testClone() throws CloneNotSupportedException {
    TimeSeries series = new TimeSeries("Test Series");
    RegularTimePeriod jan1st2002 = new Day(1, MonthConstants.JANUARY, 2002);
    series.add(jan1st2002, new Integer(42));

    TimeSeries clone;
    clone = (TimeSeries) series.clone();
    clone.setKey("Clone Series");
    clone.update(jan1st2002, new Integer(10));

    int seriesValue = series.getValue(jan1st2002).intValue();
    int cloneValue = clone.getValue(jan1st2002).intValue();

    assertEquals(42, seriesValue);
    assertEquals(10, cloneValue);
    assertEquals("Test Series", series.getKey());
    assertEquals("Clone Series", clone.getKey());
}

From source file:org.lmn.fc.frameworks.starbase.plugins.observatory.ui.tabs.charts.ChartHelper.java

/***********************************************************************************************
 * Preserve, Truncate or Decimate an XYDataset to try to achieve the requested display limit.
 * Decimation requested overrides all other modes.
 * Transform the dataset in accordance with the ChannelSelection Modes.
 * TRUNCATE is not currently used.//from  w  w w .java2 s .c  o m
 *
 * ChartUpdate      isdecimated     Outcome
 *
 *  PRESERVE            N           Always PRESERVE, don't use displaylimit
 *                      Y           ditto
 *
 *  DECIMATE            N           Do same as PRESERVE
 *                      Y           Skip enough to leave displaylimit
 *
 *  TRUNCATE            N           Use only displaylimit, ignore isdecimated
 *                      Y           ditto
 *
 *
 * @param dataset
 * @param timezone
 * @param chartupdatetype
 * @param displaylimit
 * @param isdecimated
 * @param selectionmodes
 *
 * @return XYDataset
 */

private static XYDataset copyTransformedXYDataset(final XYDataset dataset, final TimeZone timezone,
        final DataUpdateType chartupdatetype, final int displaylimit, final boolean isdecimated,
        final List<ChannelSelectionMode> selectionmodes) {
    final String SOURCE = "ChartHelper.copyTransformedXYDataset() ";
    final DataUpdateType updateTypeToTransform;
    final XYDataset xyResult;

    // If decimation is NOT requested by the user for a DECIMATE chart then just do PRESERVE
    // Otherwise do exactly as the Chart configuration requests
    if ((DataUpdateType.DECIMATE.equals(chartupdatetype)) && (!isdecimated)) {
        updateTypeToTransform = DataUpdateType.PRESERVE;
    } else {
        updateTypeToTransform = chartupdatetype;
    }

    //        System.out.println(SOURCE + "displaylimit=" + displaylimit
    //                           + " isdecimated=" + isdecimated
    //                           + " chartupdatetype=" + chartupdatetype.getName()
    //                           + " updateTypeToTransform=" + updateTypeToTransform.getName());

    //-----------------------------------------------------------------------------------------
    // Use the whole dataset immediately if requested

    if (DataUpdateType.PRESERVE.equals(updateTypeToTransform)) {
        //System.out.println(SOURCE + "Preserve whole dataset");

        xyResult = dataset;

        return (xyResult);
    }

    //-----------------------------------------------------------------------------------------
    // Now do the transformation: TRUNCATE or DECIMATE

    if (dataset instanceof TimeSeriesCollection) {
        xyResult = new TimeSeriesCollection(timezone);

        // Process each Series in turn
        for (int intSeriesIndex = 0; intSeriesIndex < dataset.getSeriesCount(); intSeriesIndex++) {
            final TimeSeries timeSeriesInput;
            final TimeSeries timeSeriesOutput;

            timeSeriesInput = ((TimeSeriesCollection) dataset).getSeries(intSeriesIndex);

            // Make a TimeSeries based on Seconds...
            // whose name is the ChannelName
            timeSeriesOutput = new TimeSeries(timeSeriesInput.getKey(), timeSeriesInput.getTimePeriodClass());
            switch (updateTypeToTransform) {
            case TRUNCATE: {
                final int intStart;

                //System.out.println("truncate time series");
                if (timeSeriesInput.getItemCount() > displaylimit) {
                    intStart = timeSeriesInput.getItemCount() - displaylimit;
                } else {
                    intStart = 0;
                }

                // Modify each Series in exactly the same way!
                //                        timeSeriesOutput = timeSeriesInput.createCopy(intStart, timeSeriesInput.getItemCount()-1);

                for (int item = intStart; item < timeSeriesInput.getItemCount(); item++) {
                    timeSeriesOutput.add(timeSeriesInput.getDataItem(item));
                }

                break;
            }

            case DECIMATE: {
                final int intSkipCount;

                //System.out.println("decimate time series index=" + intSeriesIndex);
                if (timeSeriesInput.getItemCount() > displaylimit) {
                    intSkipCount = (timeSeriesInput.getItemCount() / displaylimit) - 1;
                } else {
                    // Show all of the data items, i.e. insufficient data to decimate
                    intSkipCount = 0;
                }

                for (int item = 0; item < timeSeriesInput.getItemCount(); item = item + intSkipCount + 1) {
                    timeSeriesOutput.add(timeSeriesInput.getDataItem(item));
                }

                break;
            }

            default: {
                LOGGER.error(SOURCE + MSG_UNSUPPORTED_UPDATE_TYPE);
            }
            }

            // Accumulate each Series in the output
            ((TimeSeriesCollection) xyResult).addSeries(timeSeriesOutput);
        }
    } else if (dataset instanceof XYSeriesCollection) {
        xyResult = new XYSeriesCollection();

        //System.out.println(SOURCE + "XYSeriesCollection for " + displaylimit + " samples");

        // Process each Series in turn
        for (int intSeriesIndex = 0; intSeriesIndex < dataset.getSeriesCount(); intSeriesIndex++) {
            final XYSeries xySeriesInput;
            final XYSeries xySeriesOutput;

            xySeriesInput = ((XYSeriesCollection) dataset).getSeries(intSeriesIndex);
            xySeriesOutput = new XYSeries(dataset.getSeriesKey(intSeriesIndex));

            switch (updateTypeToTransform) {
            case TRUNCATE: {
                final int intStart;

                //System.out.println("truncate xy");
                if (xySeriesInput.getItemCount() > displaylimit) {
                    intStart = xySeriesInput.getItemCount() - displaylimit;
                } else {
                    intStart = 0;
                }

                // Modify each Series in exactly the same way!
                //                        xySeriesOutput = xySeriesInput.createCopy(intStart, xySeriesInput.getItemCount()-1);

                for (int item = intStart; item < xySeriesInput.getItemCount(); item++) {
                    xySeriesOutput.add(xySeriesInput.getDataItem(item));
                }

                break;
            }

            case DECIMATE: {
                final int intSkipCount;

                //System.out.println("decimate xy series index=" + intSeriesIndex);
                if (xySeriesInput.getItemCount() > displaylimit) {
                    intSkipCount = (xySeriesInput.getItemCount() / displaylimit) - 1;
                } else {
                    // Show all of the data items, i.e. insufficient data to decimate
                    intSkipCount = 0;
                }

                for (int item = 0; item < xySeriesInput.getItemCount(); item = item + intSkipCount + 1) {
                    xySeriesOutput.add(xySeriesInput.getDataItem(item));
                }
                break;
            }

            default: {
                LOGGER.error(SOURCE + MSG_UNSUPPORTED_UPDATE_TYPE);
            }
            }

            // Accumulate each Series in the output
            ((XYSeriesCollection) xyResult).addSeries(xySeriesOutput);
        }
    } else {
        LOGGER.error(SOURCE + "Unsupported XYDataset type");

        xyResult = new XYSeriesCollection();
    }

    return (xyResult);
}

From source file:org.lmn.fc.frameworks.starbase.plugins.observatory.ui.tabs.charts.ChartHelper.java

/***********************************************************************************************
 * Dump the (partial) contents of each Series in an XYdatset.
 *
 * @param dump//from  w  w  w. j a va 2 s .  co m
 * @param calendar
 * @param dataset
 * @param dumprowcount
 * @param title
 */

public static void dumpXYDataset(final boolean dump, final Calendar calendar, final XYDataset dataset,
        final int dumprowcount, final String title) {
    final String SOURCE = "ChartHelper.dumpXYDataset() ";

    if (dump) {
        LOGGER.log(title);

        if ((dataset != null) && (dataset instanceof XYSeriesCollection)) {
            final XYSeriesCollection seriesCollection;

            seriesCollection = (XYSeriesCollection) dataset;

            LOGGER.log("XYSeriesCollection");
            LOGGER.log("    [series.count=" + seriesCollection.getSeriesCount() + "]");
            LOGGER.log("    [domain.lowerbound.interval.true="
                    + (long) seriesCollection.getDomainLowerBound(true) + "]");
            LOGGER.log("    [domain.lowerbound.interval.false="
                    + (long) seriesCollection.getDomainLowerBound(false) + "]");
            LOGGER.log("    [domain.upperbound.interval.true="
                    + (long) seriesCollection.getDomainUpperBound(true) + "]");
            LOGGER.log("    [domain.upperbound.interval.false="
                    + (long) seriesCollection.getDomainUpperBound(false) + "]");
            LOGGER.log("    [domain.order=" + seriesCollection.getDomainOrder() + "]");

            for (int intSeriesIndex = 0; intSeriesIndex < seriesCollection.getSeriesCount(); intSeriesIndex++) {
                final XYSeries xySeries;

                LOGGER.log("");
                LOGGER.log("    [xyseries.index=" + intSeriesIndex + "]");

                xySeries = seriesCollection.getSeries(intSeriesIndex);
                LOGGER.log("    [xyseries.itemcount=" + xySeries.getItemCount() + "]");
                LOGGER.log("    [xyseries.key=" + xySeries.getKey() + "]");
                LOGGER.log("    [xyseries.xmin=" + xySeries.getMinX() + "]");
                LOGGER.log("    [xyseries.xmax=" + xySeries.getMaxX() + "]");
                LOGGER.log("    [xyseries.ymin=" + xySeries.getMinY() + "]");
                LOGGER.log("    [xyseries.ymax=" + xySeries.getMaxY() + "]");
                LOGGER.log("    [xyseries.description=" + xySeries.getDescription() + "]");
                LOGGER.log("    [xyseries.autosort=" + xySeries.getAutoSort() + "]");
                LOGGER.log("    [xyseries.allowduplicatex=" + xySeries.getAllowDuplicateXValues() + "]");

                // Dump the first chunk
                for (int intItemIndex = 0; intItemIndex < (Math.min(dumprowcount,
                        xySeries.getItemCount())); intItemIndex++) {
                    final XYDataItem item;

                    item = xySeries.getDataItem(intItemIndex);

                    LOGGER.log("        [item.index=" + intItemIndex + "] [item.x=" + item.getXValue()
                            + "] [item.y=" + item.getYValue() + "]");
                }

                LOGGER.log("    ...");

                // Dump the last chunk
                for (int intItemIndex = 0; intItemIndex < (Math.min(dumprowcount,
                        xySeries.getItemCount())); intItemIndex++) {
                    final XYDataItem item;
                    final int intIndex;

                    intIndex = Math.max(0, xySeries.getItemCount() - dumprowcount) + intItemIndex;
                    item = xySeries.getDataItem(intIndex);

                    LOGGER.log("        [item.index=" + intIndex + "] [item.x=" + item.getXValue()
                            + "] [item.y=" + item.getYValue() + "]");
                }
            }
        } else if ((dataset != null) && (dataset instanceof TimeSeriesCollection)) {
            final TimeSeriesCollection seriesCollection;

            seriesCollection = (TimeSeriesCollection) dataset;

            LOGGER.log("TimeSeriesCollection");
            LOGGER.log("    [series.count=" + seriesCollection.getSeriesCount() + "]");
            LOGGER.log("    [domain.lowerbound.interval.true="
                    + (long) seriesCollection.getDomainLowerBound(true) + "]");
            LOGGER.log("    [domain.lowerbound.interval.false="
                    + (long) seriesCollection.getDomainLowerBound(false) + "]");
            LOGGER.log("    [domain.upperbound.interval.true="
                    + (long) seriesCollection.getDomainUpperBound(true) + "]");
            LOGGER.log("    [domain.upperbound.interval.false="
                    + (long) seriesCollection.getDomainUpperBound(false) + "]");
            LOGGER.log("    [domain.order=" + seriesCollection.getDomainOrder() + "]");

            for (int intSeriesIndex = 0; intSeriesIndex < seriesCollection.getSeriesCount(); intSeriesIndex++) {
                final TimeSeries timeSeries;

                LOGGER.log("");
                LOGGER.log("    [timeseries.index=" + intSeriesIndex + "]");

                timeSeries = seriesCollection.getSeries(intSeriesIndex);
                LOGGER.log("    [timeseries.itemcount=" + timeSeries.getItemCount() + "]");
                LOGGER.log("    [timeseries.key=" + timeSeries.getKey() + "]");
                LOGGER.log("    [timeseries.ymin=" + timeSeries.getMinY() + "]");
                LOGGER.log("    [timeseries.ymax=" + timeSeries.getMaxY() + "]");
                LOGGER.log("    [timeseries.domain=" + timeSeries.getDomainDescription() + "]");
                LOGGER.log("    [timeseries.range=" + timeSeries.getRangeDescription() + "]");
                LOGGER.log(
                        "    [timeseries.timeperiodclass=" + timeSeries.getTimePeriodClass().getName() + "]");

                for (int intItemIndex = 0; intItemIndex < (Math.min(dumprowcount,
                        timeSeries.getItemCount())); intItemIndex++) {
                    final TimeSeriesDataItem item;

                    item = timeSeries.getDataItem(intItemIndex);

                    LOGGER.log("        [item.index=" + intItemIndex + "] [item.period.serialindex="
                            + item.getPeriod().getSerialIndex() + "] [item.period.firstmillis="
                            + item.getPeriod().getFirstMillisecond(calendar) + "] [item.value="
                            + item.getValue() + "]");
                }

                LOGGER.log("    ...");

                for (int intItemIndex = 0; intItemIndex < (Math.min(dumprowcount,
                        timeSeries.getItemCount())); intItemIndex++) {
                    final TimeSeriesDataItem item;
                    final int intIndex;

                    intIndex = Math.max(0, timeSeries.getItemCount() - dumprowcount) + intItemIndex;
                    item = timeSeries.getDataItem(intIndex);

                    LOGGER.log("        [item.index=" + intIndex + "] [item.period.serialindex="
                            + item.getPeriod().getSerialIndex() + "] [item.period.firstmillis="
                            + item.getPeriod().getFirstMillisecond(calendar) + "] [item.value="
                            + item.getValue() + "]");
                }
            }
        } else {
            LOGGER.error(SOURCE + "Unsupported XYDataset type");
        }
    }
}

From source file:com.jtstand.swing.StatsPanel.java

public JFreeChart getChartTime() {
    TreeMap<String, List<TestStepInstance>> s = getGroupedSteps(getFilteringIterator());
    if (s == null || s.size() == 0) {
        return null;
    }/*from   w w  w .  j a v a  2s  . c  o m*/
    TimeSeriesCollection dataset = new TimeSeriesCollection();
    for (Iterator<String> en = s.keySet().iterator(); en.hasNext();) {
        String groupName = en.next();
        List<TestStepInstance> stps = s.get(groupName);
        //            TimeSeries pop = new TimeSeries(groupName, Millisecond.class);
        TimeSeries pop = new TimeSeries(groupName);
        for (Iterator<TestStepInstance> it = stps.iterator(); it.hasNext();) {
            TestStepInstance step = it.next();
            Number num = getNumber(step);
            if (num != null) {
                switch (chartMode) {
                case STEP_TIME:
                    pop.addOrUpdate(RegularTimePeriod.createInstance(Millisecond.class,
                            new Date(step.getStartTime()), TimeZone.getDefault()), num);
                    break;
                case SEQUENCE_TIME:
                    //                            pop.addOrUpdate(RegularTimePeriod.createInstance(Millisecond.class, new Date(step.getTestSequenceInstance().getStartTime()), RegularTimePeriod.DEFAULT_TIME_ZONE), num);
                    pop.addOrUpdate(RegularTimePeriod.createInstance(Millisecond.class,
                            new Date(step.getTestSequenceInstance().getCreateTime()), TimeZone.getDefault()),
                            num);
                    break;
                }
            }
        }
        dataset.addSeries(pop);
    }
    JFreeChart chart = null;
    switch (chartMode) {
    case STEP_TIME:
        chart = ChartFactory.createTimeSeriesChart(null, "Step Started Time", getValueString(), dataset,
                isGrouping(), true, false);
        break;
    case SEQUENCE_TIME:
        chart = ChartFactory.createTimeSeriesChart(null, "Sequence Started Time", getValueString(), dataset,
                isGrouping(), true, false);
        break;
    }
    chart.setBackgroundPaint((Paint) UIManager.get("Panel.background"));

    XYPlot plot = chart.getXYPlot();
    plot.setBackgroundPaint(Color.white);
    XYLineAndShapeRenderer renderer5 = new XYLineAndShapeRenderer();
    renderer5.setBaseSeriesVisibleInLegend(false);
    plot.setRenderer(renderer5);
    plot.setDomainGridlinesVisible(true);
    plot.setRangeGridlinesVisible(true);
    plot.setRangeCrosshairVisible(true);
    plot.setDomainCrosshairVisible(true);
    //        chart.setTitle(valueName);
    placeLimitMarkers(plot, true);

    //renderer.setBaseToolTipGenerator(new StandardXYToolTipGenerator());
    renderer5.setBaseToolTipGenerator(StandardXYToolTipGenerator.getTimeSeriesInstance());

    /* coloring */
    if (isCategorization()) {
        //            TreeMap<String, Color> cmap = new TreeMap<String, Color>();
        int i = 0;
        for (Iterator<String> it = catstats.keySet().iterator(); it.hasNext(); i++) {
            String groupName = it.next();
            Color c = ChartCategories.getColor(i);
            for (int j = 0; j < dataset.getSeriesCount(); j++) {
                TimeSeries ts = dataset.getSeries(j);
                if (ts.getKey().equals(groupName)) {
                    renderer5.setSeriesPaint(j, c);
                }
            }
        }
    } else {
        renderer5.setSeriesPaint(0, ChartCategories.getColor(0));
    }

    //        chart.addProgressListener(new ChartProgressListener() {
    //
    //            public void chartProgress(final ChartProgressEvent progress) {
    //                SwingUtilities.invokeLater(
    //                        new Runnable() {
    //
    //                            @Override
    //                            public void run() {
    //
    //                                System.out.println("progress:" + progress + " " + progress.getType());
    //                                if (progress.getType() == ChartProgressEvent.DRAWING_FINISHED) {
    //                                    if (plot != null) {
    //                                        if (plot.isDomainCrosshairVisible() && plot.isDomainCrosshairLockedOnData()) {
    ////                            System.out.println("getDomainCrosshairValue:" + plot.getDomainCrosshairValue());
    //                                            double xx = plot.getDomainCrosshairValue();
    //                                            if (xx != 0.0) {
    //                                                long x = (long) xx;
    //                                                System.out.println(new Date(x));
    //                                                for (TestStepInstance step : testStepInstances.getSteps()) {
    //                                                    if (step.getStartTime() != null && step.getStartTime().equals(x)) {
    //                                                        testStepInstances.selectStep(step);
    //                                                    }
    //                                                }
    //                                                System.out.println(new Date(x));
    //                                            }
    //                                        }
    ////                        if (plot.isRangeCrosshairVisible()) {
    ////                            System.out.println("getRangeCrosshairValue:" + plot.getRangeCrosshairValue());
    ////                        }
    //                                    }
    //                                }
    //                            }
    //                        });
    //            }
    //        });

    //        chart.addChangeListener(new ChartChangeListener() {
    //
    //            public void chartChanged(ChartChangeEvent event) {
    //                System.out.println("event:" + event);
    //                if (event != null) {
    ////                    JFreeChart chart = event.getChart();
    ////                    System.out.println("chart:" + chart);
    ////                    if (chart != null) {
    ////                        System.out.println("title:" + event.getChart().getTitle());
    ////                    }
    //                    System.out.println("type:" + event.getType());
    //                    if (plot != null) {
    //                        if (plot.isDomainCrosshairVisible()) {
    //                            System.out.println("getDomainCrosshairValue:" + plot.getDomainCrosshairValue());
    //                            long x = (long) plot.getDomainCrosshairValue();
    //                            for (TestStepInstance step : testStepInstances.getSteps()) {
    //                                if (step.getStartTime() != null && step.getStartTime().equals(x)) {
    //                                    testStepInstances.selectStep(step);
    //                                }
    //                            }
    //                            System.out.println(new Date(x));
    //                        }
    //                        if (plot.isRangeCrosshairVisible()) {
    //                            System.out.println("getRangeCrosshairValue:" + plot.getRangeCrosshairValue());
    //                        }
    //                    }
    //                }
    //            }
    //        });
    chart.setTextAntiAlias(false);
    return chart;
}

From source file:org.jfree.data.time.junit.TimeSeriesTest.java

/**
 * Check that cloning works./*from w ww  . j a  va2s  .  c o  m*/
 */
public void testClone() {

    TimeSeries series = new TimeSeries("Test Series");

    RegularTimePeriod jan1st2002 = new Day(1, MonthConstants.JANUARY, 2002);
    try {
        series.add(jan1st2002, new Integer(42));
    } catch (SeriesException e) {
        System.err.println("Problem adding to series.");
    }

    TimeSeries clone = null;
    try {
        clone = (TimeSeries) series.clone();
        clone.setKey("Clone Series");
        try {
            clone.update(jan1st2002, new Integer(10));
        } catch (SeriesException e) {
            e.printStackTrace();
        }
    } catch (CloneNotSupportedException e) {
        assertTrue(false);
    }

    int seriesValue = series.getValue(jan1st2002).intValue();
    int cloneValue = Integer.MAX_VALUE;
    if (clone != null) {
        cloneValue = clone.getValue(jan1st2002).intValue();
    }

    assertEquals(42, seriesValue);
    assertEquals(10, cloneValue);
    assertEquals("Test Series", series.getKey());
    if (clone != null) {
        assertEquals("Clone Series", clone.getKey());
    } else {
        assertTrue(false);
    }

}