List of usage examples for org.jfree.data.time SimpleTimePeriod SimpleTimePeriod
public SimpleTimePeriod(Date start, Date end)
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; }