package org.jactr.eclipse.runtime.probe2; /* * default logging */ import org.apache.commons.collections.primitives.ArrayDoubleList; import org.apache.commons.collections.primitives.DoubleList; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class ProbeData { /** * Logger definition */ static private final transient Log LOGGER = LogFactory .getLog(ProbeData.class); private final String _probeName; private ArrayDoubleList _data; private int _maximumCapacity; private int _shiftCapacity; public ProbeData(String probeName, int normalCapacity, int maxCapacity, int fillTo) { if (LOGGER.isDebugEnabled()) LOGGER.debug(String.format("new PD %s, %d, %d, %d", probeName, normalCapacity, maxCapacity, fillTo)); _probeName = probeName; _maximumCapacity = maxCapacity; _shiftCapacity = normalCapacity; _data = new ArrayDoubleList(maxCapacity); for (int i = 0; i < fillTo; i++) _data.add(Double.NaN); } public String getName() { return _probeName; } synchronized public void append(double value) { _data.add(value); } synchronized public void shift() { DoubleList view = _data.subList(0, _maximumCapacity - _shiftCapacity); view.clear(); } synchronized public double[] getData(double[] container) { if (container == null) container = new double[_data.size()]; return _data.toArray(container); } }