|
From: Thies <tg...@us...> - 2007-10-24 19:02:14
|
Update of /cvsroot/tail/Tail/src/java/net/sf/tail/graphics In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv28239/src/java/net/sf/tail/graphics Added Files: FasterDataset.java Log Message: Novo dataset para plotar mais rapido --- NEW FILE: FasterDataset.java --- package net.sf.tail.graphics; import java.util.List; import net.sf.tail.Indicator; import net.sf.tail.TimeSeries; import net.sf.tail.indicator.simple.ClosePriceIndicator; import org.jfree.data.DefaultKeyedValues2D; import org.jfree.data.category.CategoryDataset; import org.jfree.data.general.AbstractDataset; import edu.emory.mathcs.backport.java.util.Collections; @SuppressWarnings("unchecked") public class FasterDataset extends AbstractDataset implements CategoryDataset { private static final long serialVersionUID = -7204964027452086107L; private DefaultKeyedValues2D data; private List<Indicator<? extends Number>> indicators; private TimeSeries series; public FasterDataset(TimeSeries series, List<Indicator<? extends Number>> indicators, int firstIndex, int lastIndex) { this.data = new DefaultKeyedValues2D(); this.indicators = indicators; this.series = series; if(lastIndex - firstIndex > 800) loadValuesFaster(firstIndex, lastIndex); else loadValues(firstIndex, lastIndex); } public FasterDataset(TimeSeries timeSeries, int seriesSize) { this(timeSeries, Collections.nCopies(1, new ClosePriceIndicator(timeSeries)), timeSeries.getBegin(), timeSeries.getBegin() + seriesSize - 1); } private void loadValues(int firstIndex, int lastIndex) { for (Indicator<? extends Number> indicator : indicators) { for (int j = firstIndex; j <= lastIndex; j++) { data.addValue(indicator.getValue(j), indicator.getName() + ": "+ series.getTick(series.getBegin()).getDateName() + " - " + series.getTick(series.getEnd()).getDateName(), series.getTick(j).getDate() .toString("hh:mm d/M/yyyy")); } } } private void loadValuesFaster(int firstIndex, int lastIndex) { double firstValue; double secondValue; double thirdValue; int counter = 0; for (Indicator<? extends Number> indicator : indicators){ for (int j = firstIndex; j <= firstIndex + 2; j++) { data.addValue(indicator.getValue(j), indicator.getName() + ": " + series.getTick(series.getBegin()).getDateName() + " - " + series.getTick(series.getEnd()).getDateName(), series.getTick(j).getDate().toString( "hh:mm d/M/yyyy")); } } for (Indicator<? extends Number> indicator : indicators) { for (int j = firstIndex + 3; j < lastIndex; j++) { firstValue = indicator.getValue(j - 2).doubleValue(); secondValue = indicator.getValue(j - 1).doubleValue(); thirdValue = indicator.getValue(j).doubleValue(); if((firstValue > secondValue && thirdValue > secondValue) || (firstValue < secondValue && thirdValue < secondValue) || counter > 10){ data.addValue(secondValue, indicator.getName() + ": "+ series.getTick(series.getBegin()).getDateName() + " - " + series.getTick(series.getEnd()).getDateName(), series.getTick(j-1).getDate() .toString("hh:mm d/M/yyyy")); counter = 0; } } } for (Indicator<? extends Number> indicator : indicators) { data.addValue(indicator.getValue(lastIndex), indicator.getName() + ": "+ series.getTick(series.getBegin()).getDateName() + " - " + series.getTick(series.getEnd()).getDateName(), series.getTick(lastIndex).getDate() .toString("hh:mm d/M/yyyy")); } } public int getColumnIndex(Comparable key) { return this.data.getColumnIndex(key); } public Comparable getColumnKey(int column) { return this.data.getColumnKey(column); } public List getColumnKeys() { return this.data.getColumnKeys(); } public int getRowIndex(Comparable key) { return this.data.getRowIndex(key); } public Comparable getRowKey(int row) { return this.data.getRowKey(row); } public List getRowKeys() { return this.data.getRowKeys(); } public Number getValue(Comparable rowKey, Comparable columnKey) { return this.data.getValue(rowKey, columnKey); } public int getColumnCount() { return this.data.getColumnCount(); } public int getRowCount() { return this.data.getRowCount(); } public Number getValue(int row, int column) { return this.data.getValue(row, column); } } |