package org.radargun.stats.representation;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
/**
* Abstract generic representation that contains time-framed series of representations.
*
* @author Radim Vansa <rvansa@redhat.com>
*/
public abstract class AbstractSeries<T> {
private static final Map<Class<? extends AbstractSeries>, Class<?>> representations = new ConcurrentHashMap<>();
public final long startTime;
public final long period;
public final T[] samples;
protected AbstractSeries(long startTime, long period, T[] samples) {
this.startTime = startTime;
this.period = period;
this.samples = samples;
}
static <U> void register(Class<? extends AbstractSeries<U>> seriesClass, Class<? extends U> representationClass) {
representations.put(seriesClass, representationClass);
}
public static <U> Class<U> representation(Class<? extends AbstractSeries<U>> seriesClass) {
return (Class<U>) representations.get(seriesClass);
}
}