package jas.hist.test;
import jas.hist.ScatterEnumeration;
import jas.hist.ScatterPlotSource;
import jas.hist.Statistics;
import java.util.Date;
import java.util.Observable;
class TimeScatterPlotSource extends TestScatterPlotSource
{
TimeScatterPlotSource()
{
super();
end = new Date().getTime()/1000;
start = end - 60;
for (int i=0; i<x.length; i++) x[i] = start + (x[i]+3)/6*(end-start);
}
public double getXMin()
{
return start;
}
public double getXMax()
{
return end;
}
public int getXAxisType()
{
return DATE;
}
private double start;
private double end;
}
public class TestScatterPlotSource extends Observable implements ScatterPlotSource
{
public TestScatterPlotSource(int delay)
{
this();
this.delay = delay;
}
public TestScatterPlotSource()
{
x = new double[10000];
y = new double[10000];
for (int i=0; i<10000; i++)
{
x[i] = random.nextGaussian();
y[i] = random.nextGaussian()*2;
}
}
public ScatterEnumeration startEnumeration()
{
return new TestEnumeration();
}
public ScatterEnumeration startEnumeration(double a,double b,double c,double d)
{
return new TestEnumeration(a,b,c,d);
}
public String getTitle()
{
return "Scatter Plot";
}
public double getXMin()
{
return -3;
}
public double getXMax()
{
return +3;
}
public double getYMin()
{
return -6;
}
public double getYMax()
{
return +6;
}
public int getXAxisType()
{
return DOUBLE;
}
public int getYAxisType()
{
return DOUBLE;
}
public Statistics getStatistics()
{
return null;
}
public void clearChanges()
{
}
private class TestEnumeration implements ScatterEnumeration
{
TestEnumeration()
{
limits = false;
}
TestEnumeration(double xmin, double xmax, double ymin, double ymax)
{
this.xmin = xmin;
this.xmax = xmax;
this.ymin = ymin;
this.ymax = ymax;
limits = true;
}
public boolean getNextPoint(double[] d)
{
// simulate slow network connection
if (delay > 0)
{
try
{
Thread.sleep(delay);
}
catch (InterruptedException e) {}
}
if (limits)
{
while (n<10000)
{
if (x[n]>=xmin && x[n]<xmax &&
y[n]>=ymin && y[n]<ymax)
{
d[0] = x[n];
d[1] = y[n];
n++;
return true;
}
n++;
}
return false;
}
else
{
if (n==10000) return false;
d[0] = x[n];
d[1] = y[n];
n++;
return true;
}
}
public void resetEndPoint()
{
// ??
}
public void restart()
{
n = 0;
}
private int n = 0;
private boolean limits;
private double ymin, ymax, xmin, xmax;
}
private int delay = 0;
protected double[] x;
protected double[] y;
private java.util.Random random = new java.util.Random();
}