package de.laures.cewolf.dp;
import java.io.Serializable;
import java.util.Date;
import java.util.Map;
import org.jfree.data.general.Dataset;
import org.jfree.data.time.MovingAverage;
import org.jfree.data.xy.XYDataset;
import de.laures.cewolf.DatasetProduceException;
import de.laures.cewolf.DatasetProducer;
/**
* @author guido
*/
public class MovingAverageDatasetProducer implements DatasetProducer, Serializable {
static final long serialVersionUID = -240013835826772031L;
/**
* @see de.laures.cewolf.DatasetProducer#produceDataset(Map)
*/
public Object produceDataset (Map params) throws DatasetProduceException {
DatasetProducer datasetProducer = (DatasetProducer) params.get("producer");
Dataset dataset = (Dataset) datasetProducer.produceDataset(params);
String suffix = (String) params.get("suffix");
int period = Integer.parseInt((String) params.get("period"));
int skip = Integer.parseInt((String) params.get("skip"));
if (dataset instanceof XYDataset){
return MovingAverage.createMovingAverage((XYDataset)dataset, suffix, period, skip);
} else {
throw new DatasetProduceException("moving average only supported for XYDatasets");
}
}
/**
* @see de.laures.cewolf.DatasetProducer#hasExpired(Map, Date)
*/
public boolean hasExpired (Map params, Date since) {
return true;
}
/**
* @see de.laures.cewolf.DatasetProducer#getProducerId()
*/
public String getProducerId() {
return getClass().getName();
}
}