package de.laures.cewolf.example;
import java.io.Serializable;
import java.util.Date;
import java.util.Map;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.TimeZone;
import java.util.Random;
import java.lang.Math;
import org.jfree.data.xy.DefaultXYDataset;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.time.Minute;
import org.jfree.data.time.TimeSeries;
import de.laures.cewolf.DatasetProducer;
import de.laures.cewolf.DatasetProduceException;
import de.laures.cewolf.tooltips.CategoryToolTipGenerator;
import de.laures.cewolf.links.CategoryItemLinkGenerator;
/**
* @author AKAPUSTA
*/
public class ProduceMathDataExample implements DatasetProducer, Serializable {
private double minX = Double.POSITIVE_INFINITY;
private double maxX = Double.NEGATIVE_INFINITY;
private double minY = Double.POSITIVE_INFINITY;
private double maxY = Double.NEGATIVE_INFINITY;
private final int NUM_DATA_POINTS = 50;
private String[] points = {"Cosine", "Sine"};
private double[][] data1 = new double[2][NUM_DATA_POINTS];
private double[][] data2 = new double[2][NUM_DATA_POINTS];
public ProduceMathDataExample() {
for (int i=0; i<NUM_DATA_POINTS; i++){
data1[0][i] = -2.0 * Math.PI + i * 4.0 * Math.PI / NUM_DATA_POINTS;
if (data1[0][i] < minX)
minX = data1[0][i];
if (data1[0][i] > maxX)
maxX = data1[0][i];
data1[1][i] = Math.cos(data1[0][i]);
if (data1[1][i] < minY)
minY = data1[1][i];
if (data1[1][i] > maxY)
maxY = data1[1][i];
data2[0][i] = data1[0][i];
data2[1][i] = Math.sin(data1[0][i]);
if (data2[1][i] < minY)
minY = data2[1][i];
if (data2[1][i] > maxY)
maxY = data2[1][i];
}
}
public Object produceDataset(Map arg1) throws DatasetProduceException {
DefaultXYDataset dset = new DefaultXYDataset();
dset.addSeries(points[0], data1);
dset.addSeries(points[1], data2);
return dset;
}
public boolean hasExpired(Map map1, Date date1){
return true;
}
public String getProducerId(){
return "chart data";
}
public String[] getPoints(){
return points;
}
public void setPoints(String[] newPoints){
this.points = newPoints;
}
public double getMinX() { return minX; }
public double getMaxX() { return maxX; }
public double getMinY() { return minY; }
public double getMaxY() { return maxY; }
}