/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.monitoring.system.api.model;
import java.io.Serializable;
import de.rcenvironment.core.utils.common.StringUtils;
/**
* Immutable holder of an average value of {@link Double} elements, with information about how many elements were merged into the average.
* If that count is zero, the average should be considered undefined; by convention, the average is set to 0.0 in this case.
*
* @author Robert Mischke
*/
public final class AverageOfDoubles implements Serializable {
private static final long serialVersionUID = -2224156137940227667L;
private final int numSamples;
private final double average;
/**
* Creates an instance with no data (numSamples = 0). By convention, the average value is arbitrarily set to 0.0.
*/
public AverageOfDoubles() {
this.numSamples = 0;
this.average = 0.0;
}
public AverageOfDoubles(int numSamples, double average) {
if (numSamples < 1) {
throw new IllegalAccessError("Number of samples must be positive");
}
this.numSamples = numSamples;
this.average = average;
}
@Override
public String toString() {
return StringUtils.format("Avg=%s, N=%d", getAverage(), getNumSamples());
}
public double getAverage() {
return average;
}
public int getNumSamples() {
return numSamples;
}
}