Example usage for org.jfree.data.time SimpleTimePeriod SimpleTimePeriod

List of usage examples for org.jfree.data.time SimpleTimePeriod SimpleTimePeriod

Introduction

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

Prototype

public SimpleTimePeriod(Date start, Date end) 

Source Link

Document

Creates a new time allocation.

Usage

From source file:com.android.ddmuilib.log.event.DisplaySync.java

/**
 * Callback to process a sync event./*from  w  w w . ja va2s.  co  m*/
 */
@Override
void processSyncEvent(EventContainer event, int auth, long startTime, long stopTime, String details,
        boolean newEvent, int syncSource) {
    if (!newEvent) {
        // Details arrived for a previous sync event
        // Remove event before reinserting.
        int lastItem = mDatasetsSync[auth].getItemCount();
        mDatasetsSync[auth].delete(lastItem - 1, lastItem - 1);
        mTooltipsSync[auth].remove(lastItem - 1);
    }
    double height = getHeightFromDetails(details);
    height = height / (stopTime - startTime + 1) * 10000;
    if (height > 30) {
        height = 30;
    }
    mDatasetsSync[auth].add(new SimpleTimePeriod(startTime, stopTime), height);
    mTooltipsSync[auth].add(getTextFromDetails(auth, details, syncSource));
    mTooltipGenerators[auth].addToolTipSeries(mTooltipsSync[auth]);
    if (details.indexOf('x') >= 0 || details.indexOf('X') >= 0) {
        long msec = event.sec * 1000L + (event.nsec / 1000000L);
        mDatasetError.addOrUpdate(new FixedMillisecond(msec), -1);
    }
}

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

/**
 * Some tests for the getMinEndIndex() method.
 *///from  w w w  .ja  va2 s.  co m
public void getMinEndIndex() {
    TimePeriodValues s = new TimePeriodValues("Test");
    assertEquals(-1, s.getMinEndIndex());
    s.add(new SimpleTimePeriod(100L, 200L), 1.0);
    assertEquals(0, s.getMinEndIndex());
    s.add(new SimpleTimePeriod(300L, 400L), 2.0);
    assertEquals(0, s.getMinEndIndex());
    s.add(new SimpleTimePeriod(0L, 50L), 3.0);
    assertEquals(2, s.getMinEndIndex());
}

From source file:ch.ksfx.web.services.chart.ObservationChartGenerator.java

public List<TimePeriodValues> getBollingerBands(TimeSeries asset, Date startDate, Date endDate,
        Integer movingAverageSeconds, Integer bollingerK) {
    List<TimePeriodValues> bollingerBands = new ArrayList<TimePeriodValues>();

    List<Observation> assetPrices = observationDAO.queryObservationsSparse(asset.getId().intValue(), startDate,
            endDate);//from  w  w w  .  ja v a  2  s. c  om

    //Get some earlier prices to calc simple moving average
    List<Observation> movingAveragePrices = observationDAO.queryObservationsSparse(asset.getId().intValue(),
            (startDate.getTime() == 0l) ? startDate
                    : DateUtils.addSeconds(startDate, movingAverageSeconds * -1),
            endDate);

    assetPrices = simplifyAssetPrices(assetPrices);

    TimePeriodValues middleBand = new TimePeriodValues(
            "SMA" + (movingAverageSeconds / 60 / 60 / 24) + "DAYS " + asset.getName());

    TimePeriodValues topBand = new TimePeriodValues("TimeBollinger Top K" + bollingerK + " " + asset.getName());
    TimePeriodValues bottomBand = new TimePeriodValues(
            "TimeBollinger Bottom K" + bollingerK + " " + asset.getName());

    List<Observation> relevantMovingAveragePrices = null;
    Double movingAverage = null;
    Double standardDeviation = null;

    Integer filterSizer = 0;

    for (Observation ap : assetPrices) {

        Date referenceDate = DateUtils.addSeconds(ap.getObservationTime(), movingAverageSeconds * -1);

        if (movingAveragePrices.get(0).getObservationTime().after(referenceDate)) {
            continue;
        }

        for (Integer iI = filterSizer; iI < movingAveragePrices.size(); iI++) {
            if (movingAveragePrices.get(iI + 1).getObservationTime().after(referenceDate)) {
                //We went to far, begin index was the last one
                filterSizer = iI;
                break;
            }
        }

        relevantMovingAveragePrices = movingAveragePrices.subList(filterSizer, movingAveragePrices.indexOf(ap));

        movingAverage = MovingAverageCalculator.calculateMovingAverageObservation(relevantMovingAveragePrices,
                true);

        middleBand.add(new SimpleTimePeriod(ap.getObservationTime(), ap.getObservationTime()), movingAverage);

        if (relevantMovingAveragePrices.size() > 1) {
            standardDeviation = BollingerCalculator
                    .calcStandardDeviationObservation(relevantMovingAveragePrices, true);

            topBand.add(new SimpleTimePeriod(ap.getObservationTime(), ap.getObservationTime()),
                    movingAverage + (standardDeviation * bollingerK));
            bottomBand.add(new SimpleTimePeriod(ap.getObservationTime(), ap.getObservationTime()),
                    movingAverage - (standardDeviation * bollingerK));
        }
    }

    bollingerBands.add(middleBand);

    bollingerBands.add(topBand);
    bollingerBands.add(bottomBand);

    return bollingerBands;
}

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

/**
 * Some tests for the getMaxEndIndex() method.
 *//*from  ww w .  j a va2s  .  c  o m*/
public void getMaxEndIndex() {
    TimePeriodValues s = new TimePeriodValues("Test");
    assertEquals(-1, s.getMaxEndIndex());
    s.add(new SimpleTimePeriod(100L, 200L), 1.0);
    assertEquals(0, s.getMaxEndIndex());
    s.add(new SimpleTimePeriod(300L, 400L), 2.0);
    assertEquals(1, s.getMaxEndIndex());
    s.add(new SimpleTimePeriod(0L, 50L), 3.0);
    assertEquals(1, s.getMaxEndIndex());
}

From source file:com.prezerak.windmill.gui.AveragesPanel.java

private void createSeries() {

    ButtonModel btnModel = WindMill.mainFrame.getAvgButtonGroup().getSelection();
    long pollInterval = Long.parseLong(btnModel.getActionCommand()) * 1000;
    float conversionFactor = getWindConversionFactor();

    datasetVel = new TimeSeries("Velocity");
    datasetDir = new TimeSeries("Direction");

    Velocity v = null;//w  ww .  j ava2s .  c o  m

    if (conversionFactor == 0)
        v = new BeaufortVelocity(conversionFactor);
    else
        v = new RegularVelocity(conversionFactor);

    rsVelDir = WindMill.database.queryRecordsInTimePeriod(startDate, endDate);
    //In case of no values
    try {
        rsVelDir.beforeFirst();
        if (!rsVelDir.next()) {
            datasetVel.add(new FixedMillisecond(startDate), null);
            datasetDir.add(new FixedMillisecond(startDate), null);
            datasetVel.add(new FixedMillisecond(endDate), null);
            datasetDir.add(new FixedMillisecond(endDate), null);
            maxY = 150;
            rsVelDir.close();

            if (datasetGust != null)
                datasetGust.delete(0, datasetGust.getItemCount() - 1);

            if (datasetHigh != null)
                datasetHigh.delete(0, datasetHigh.getItemCount() - 1);

            if (datasetHigher != null)
                datasetHigher.delete(0, datasetHigher.getItemCount() - 1);

            return;
        }
    } catch (SQLException e) {
        Utilities.printSQLException(e);
    }

    //Graph display with actual values
    if (pollInterval == 0) {
        try {
            rsVelDir.beforeFirst();
            while (rsVelDir.next()) {
                long currentTime = rsVelDir.getLong(rsVelDir.findColumn("timeMills"));
                FixedMillisecond timePeriod = new FixedMillisecond(currentTime);
                v.setValueInMeters(rsVelDir.getFloat(rsVelDir.findColumn("vel")));
                datasetVel.add(timePeriod, v.getValue());
                datasetDir.add(timePeriod, rsVelDir.getFloat(rsVelDir.findColumn("dir")));
            }
        } catch (SQLException e) {
            Utilities.printSQLException(e);
        }
    } else {

        //Obviously pollInterval !=0 so we aim for average
        try {
            rsVelDir.first();
            long startT = startDate + (rsVelDir.getLong(rsVelDir.findColumn("timeMills")) - startDate)
                    / pollInterval * pollInterval;

            rsVelDir.last();
            long endT = startT + pollInterval;
            long endTime = rsVelDir.getLong(rsVelDir.findColumn("timeMills")) / pollInterval * pollInterval
                    + pollInterval;

            float sumVel = 0;
            float sumDir = 0;
            long counter = 0;

            rsVelDir.first();
            while (endT < endTime) {
                long time = 0;//set to UNIX epoch;
                if (!rsVelDir.isAfterLast())
                    time = rsVelDir.getLong(rsVelDir.findColumn("timeMills"));
                if (time >= startT && time < endT) {
                    sumVel += rsVelDir.getFloat(rsVelDir.findColumn("vel"));
                    sumDir += rsVelDir.getFloat(rsVelDir.findColumn("dir"));
                    rsVelDir.next();
                    counter++;
                } else {
                    FixedMillisecond timePeriod = new FixedMillisecond(endT);
                    if (counter != 0)
                        v.setValueInMeters(sumVel / counter);
                    else
                        v.setValueInMeters(0.0f);
                    datasetVel.add(timePeriod, v.getValue());
                    if (counter != 0)
                        datasetDir.add(timePeriod, sumDir / counter);
                    else
                        datasetDir.add(timePeriod, 0.0f);
                    startT = endT;
                    endT += pollInterval;
                    sumVel = 0;
                    sumDir = 0;
                    counter = 0;
                }
            }
            rsVelDir.close();
        } catch (SQLException e) {
            Utilities.printSQLException(e);
        }
    }

    datasetGust = queryAlarm(Gust.getInstance().GUST, "Gust");
    if (Gust.getInstance().isOn() && Gust.getInstance().getStartTime() >= startDate
            && Gust.getInstance().getStartTime() < endDate) {
        long t = 0;
        long currentT = System.currentTimeMillis();
        if (endDate < currentT)
            t = endDate;
        else
            t = currentT;
        SimpleTimePeriod timePeriod = new SimpleTimePeriod(Gust.getInstance().getStartTime(), t);
        TimePeriodValue timePeriodValue = new TimePeriodValue(timePeriod, 1);
        datasetGust.add(timePeriodValue);
    }

    datasetHigh = queryAlarm(High.getInstance().HIGH, "High");
    if (High.getInstance().isOn() && High.getInstance().getStartTime() >= startDate
            && High.getInstance().getStartTime() < endDate) {
        long t = 0;
        long currentT = System.currentTimeMillis();
        if (endDate < currentT)
            t = endDate;
        else
            t = currentT;

        SimpleTimePeriod timePeriod = new SimpleTimePeriod(High.getInstance().getStartTime(), t);
        TimePeriodValue timePeriodValue = new TimePeriodValue(timePeriod, 1);
        datasetHigh.add(timePeriodValue);
    }

    datasetHigher = queryAlarm(Higher.getInstance().HIGHER, "Higher");
    if (Higher.getInstance().isOn() && Higher.getInstance().getStartTime() >= startDate
            && Higher.getInstance().getStartTime() < endDate) {
        long t = 0;
        long currentT = System.currentTimeMillis();
        if (endDate < currentT)
            t = endDate;
        else
            t = currentT;

        SimpleTimePeriod timePeriod = new SimpleTimePeriod(Higher.getInstance().getStartTime(), t);
        TimePeriodValue timePeriodValue = new TimePeriodValue(timePeriod, 1);
        datasetHigher.add(timePeriodValue);
    }
}

From source file:ch.ksfx.web.services.chart.ObservationChartGenerator.java

public List<TimePeriodValues> getBollingerTimeframeBands(TimeSeries asset, Date startDate, Date endDate,
        Integer timeframeSeconds, Integer numberOfTimeframes, Integer bollingerK) {
    List<TimePeriodValues> bollingerBands = new ArrayList<TimePeriodValues>();

    List<Observation> assetPrices = observationDAO.queryObservationsSparse(asset.getId().intValue(), startDate,
            endDate);/* www . j  a  v  a2  s .co  m*/

    //Get some earlier prices to calc simple moving average TODO earlier prices
    List<Observation> movingAveragePrices = AssetPriceSparser.sparseAssetPriceWithoutAveragingObservation(
            observationDAO.queryObservationsSparse(asset.getId().intValue(), startDate, endDate),
            timeframeSeconds);

    assetPrices = simplifyAssetPrices(assetPrices);

    TimePeriodValues middleBand = new TimePeriodValues(
            "SMA" + (numberOfTimeframes / 60 / 60 / 24) + " " + asset.getName());

    TimePeriodValues topBand = new TimePeriodValues("TimeBollinger Top K" + bollingerK + " " + asset.getName());
    TimePeriodValues bottomBand = new TimePeriodValues(
            "TimeBollinger Bottom K" + bollingerK + " " + asset.getName());

    List<Observation> relevantMovingAveragePrices = null;
    Double movingAverage = null;
    Double standardDeviation = null;

    Integer filterSizer = 0;

    for (Observation ap : assetPrices) {

        for (Integer iI = filterSizer; (iI + 1) < movingAveragePrices.size(); iI++) {
            if (movingAveragePrices.get(iI + 1).getObservationTime().after(ap.getObservationTime())) {
                //We went to far, begin index was the last one
                filterSizer = iI;
                break;
            }
        }

        if ((filterSizer - numberOfTimeframes) < 0) {
            continue;
        }

        relevantMovingAveragePrices = movingAveragePrices.subList((filterSizer - numberOfTimeframes),
                filterSizer);

        movingAverage = MovingAverageCalculator.calculateMovingAverageObservation(relevantMovingAveragePrices,
                true);

        middleBand.add(new SimpleTimePeriod(ap.getObservationTime(), ap.getObservationTime()), movingAverage);

        if (relevantMovingAveragePrices.size() > 1) {
            standardDeviation = BollingerCalculator
                    .calcStandardDeviationObservation(relevantMovingAveragePrices, true);

            topBand.add(new SimpleTimePeriod(ap.getObservationTime(), ap.getObservationTime()),
                    movingAverage + (standardDeviation * bollingerK));
            bottomBand.add(new SimpleTimePeriod(ap.getObservationTime(), ap.getObservationTime()),
                    movingAverage - (standardDeviation * bollingerK));
        }
    }

    bollingerBands.add(middleBand);

    bollingerBands.add(topBand);
    bollingerBands.add(bottomBand);

    return bollingerBands;
}

From source file:ch.ksfx.web.services.chart.ObservationChartGenerator.java

public JFreeChart generateChart(TimeSeries timeSeries, Date startDate, Date endDate) {
    List<Observation> observations = observationDAO.queryObservationsSparse(timeSeries.getId().intValue(),
            startDate, endDate);//from  w ww.  j  av  a 2  s.c om

    if (observations == null || observations.size() == 0 || observations.isEmpty()) {
        Observation o = observationDAO.getLastObservationForTimeSeriesId(timeSeries.getId().intValue());
        Long diffInMillis = endDate.getTime() - startDate.getTime();
        startDate = DateUtils.addMilliseconds(o.getObservationTime(), diffInMillis.intValue() * -1);

        System.out.println("[GRAPH] Found 0 Observations trying new query (" + timeSeries.getId() + ") "
                + "Startdate: " + startDate.toString() + " End date: " + endDate.toString());
        observations = observationDAO.queryObservationsSparse(timeSeries.getId().intValue(), startDate,
                DateUtils.addMilliseconds(o.getObservationTime(), 1000));
    }

    System.out
            .println("[GRAPH] Observations size: " + observations.size() + " for (" + timeSeries.getId() + ")");

    //assetPrices = simplifyAssetPrices(assetPrices);

    TimePeriodValues assetPriceTimePeriodValues = new TimePeriodValues(timeSeries.getName());
    TimePeriodValuesCollection dataset = new TimePeriodValuesCollection();

    for (Observation o : observations) {
        assetPriceTimePeriodValues.add(new SimpleTimePeriod(o.getObservationTime(), o.getObservationTime()),
                Double.parseDouble(o.getScalarValue()));
    }

    dataset.addSeries(assetPriceTimePeriodValues);

    JFreeChart jFreeChart = ChartFactory.createXYLineChart("Performance", "Time", "Value", dataset,
            PlotOrientation.VERTICAL, true, false, false);

    setRange(jFreeChart, observations);

    return jFreeChart;
}

From source file:org.jfree.data.gantt.TaskSeriesCollectionTest.java

/**
 * A test for bug report 697153.//from   w w w .  jav  a2  s  . c  o m
 */
@Test
public void test697153() {

    TaskSeries s1 = new TaskSeries("S1");
    s1.add(new Task("Task 1", new SimpleTimePeriod(new Date(), new Date())));
    s1.add(new Task("Task 2", new SimpleTimePeriod(new Date(), new Date())));
    s1.add(new Task("Task 3", new SimpleTimePeriod(new Date(), new Date())));

    TaskSeries s2 = new TaskSeries("S2");
    s2.add(new Task("Task 2", new SimpleTimePeriod(new Date(), new Date())));
    s2.add(new Task("Task 3", new SimpleTimePeriod(new Date(), new Date())));
    s2.add(new Task("Task 4", new SimpleTimePeriod(new Date(), new Date())));

    TaskSeriesCollection tsc = new TaskSeriesCollection();
    tsc.add(s1);
    tsc.add(s2);

    s1.removeAll();

    int taskCount = tsc.getColumnCount();

    assertEquals(3, taskCount);

}

From source file:org.jfree.data.gantt.TaskSeriesCollectionTest.java

/**
 * A test for bug report 800324.//  ww w  .j a  v a2  s.c o m
 */
@Test
public void test800324() {
    TaskSeries s1 = new TaskSeries("S1");
    s1.add(new Task("Task 1", new SimpleTimePeriod(new Date(), new Date())));
    s1.add(new Task("Task 2", new SimpleTimePeriod(new Date(), new Date())));
    s1.add(new Task("Task 3", new SimpleTimePeriod(new Date(), new Date())));

    TaskSeriesCollection tsc = new TaskSeriesCollection();
    tsc.add(s1);

    // these methods should throw an IndexOutOfBoundsException since the
    // column is too high...
    try {
        /* Number start = */ tsc.getStartValue(0, 3);
        assertTrue(false);
    } catch (IndexOutOfBoundsException e) {
        // expected
    }
    try {
        /* Number end = */ tsc.getEndValue(0, 3);
        assertTrue(false);
    } catch (IndexOutOfBoundsException e) {
        // expected
    }
    try {
        /* int count = */ tsc.getSubIntervalCount(0, 3);
        assertTrue(false);
    } catch (IndexOutOfBoundsException e) {
        // expected
    }
}

From source file:com.prezerak.windmill.gui.AveragesPanel.java

private TimePeriodValues queryAlarm(short alarmcode, String title) {
    alarmSet = WindMill.database.queryAlarm(alarmcode, startDate, endDate);
    TimePeriodValues dataset = new TimePeriodValues(title);
    try {/*  w ww . ja  v a 2 s  . com*/
        alarmSet.beforeFirst();
        while (alarmSet.next()) {
            SimpleTimePeriod timePeriod = new SimpleTimePeriod(
                    alarmSet.getLong(alarmSet.findColumn("startTime")),
                    alarmSet.getLong(alarmSet.findColumn("endTime")));
            TimePeriodValue timePeriodValue = new TimePeriodValue(timePeriod, 1);
            dataset.add(timePeriodValue);
        }

    } catch (SQLException e) {
        com.prezerak.windmill.util.Utilities.printSQLException(e);
    } finally {
        if (alarmSet != null) {
            try {
                alarmSet.close();
            } catch (SQLException e) {
                Utilities.printSQLException(e);
            }
        }
        alarmSet = null;
    }
    return dataset;
}