package hudson.plugins.performance.reports; import org.kohsuke.stapler.Stapler; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; import java.util.Locale; /** * Abstract class for classes with samplesCount, error, mean, average, 90 line, min and max attributes */ public abstract class AbstractReport { protected final ThreadLocal<DecimalFormat> percentFormat; protected final ThreadLocal<DecimalFormat> dataFormat; // three decimals abstract public int countErrors(); abstract public double errorPercent(); public AbstractReport() { final Locale useThisLocale = (Stapler.getCurrentRequest() != null) ? Stapler.getCurrentRequest().getLocale() : Locale.getDefault(); percentFormat = new ThreadLocal<DecimalFormat>() { @Override protected DecimalFormat initialValue() { return new DecimalFormat("0.0", DecimalFormatSymbols.getInstance(useThisLocale)); } }; dataFormat = new ThreadLocal<DecimalFormat>() { @Override protected DecimalFormat initialValue() { return new DecimalFormat("#,###", DecimalFormatSymbols.getInstance(useThisLocale)); } }; } public String errorPercentFormated() { Stapler.getCurrentRequest().getLocale(); return percentFormat.get().format(errorPercent()); } abstract public long getAverage(); public String getAverageFormated() { return dataFormat.get().format(getAverage()); } abstract public long getMedian(); public String getMeanFormated() { return dataFormat.get().format(getMedian()); } abstract public long get90Line(); public String get90LineFormated() { return dataFormat.get().format(get90Line()); } abstract public long getMax(); public String getMaxFormated() { return dataFormat.get().format(getMax()); } abstract public long getMin(); abstract public int samplesCount(); abstract public String getHttpCode(); abstract public long getAverageDiff(); abstract public long getMedianDiff(); abstract public double getErrorPercentDiff(); abstract public String getLastBuildHttpCodeIfChanged(); abstract public int getSamplesCountDiff(); }