@Override public void processing(T item) { this.item = item; callback.processing(this); }
public DefaultProgressTracker(ProgressCallback<T> callback) { this.callback = callback; this.pulsePct = callback.getProgressPulsePct(); if(pulsePct > 100) { throw new IllegalArgumentException("The argument was not expected to be bigger than 100 but was " + pulsePct); } setMinPulseMs(callback.getMinPulseIntervalMs()); setMaxPulseMs(callback.getMaxPulseIntervalMs()); }
callback.processed(this); if (++processedSincePulse >= pulseAtVolume) { do { processedSincePulse -= pulseAtVolume; if (minPulseInterval <= 0) { callback.pulse(this); } else { final long curTime = System.nanoTime(); if (curTime - lastPulseNano >= minPulseInterval) { lastPulseInterval = curTime - lastPulseNano; callback.pulse(this); lastPulseNano = curTime; if (curTime - lastPulseNano >= maxPulseInterval) { lastPulseInterval = curTime - lastPulseNano; callback.pulse(this); lastPulseNano = curTime; processedSincePulse = 0;
@Override public void starting(long totalVolume) { this.totalVolume = totalVolume; if(totalVolume >= 0 && pulsePct > 0) { final double pulseAtVolume = (double) pulsePct * totalVolume / 100; this.pulseAtVolume = (int) pulseAtVolume; if (pulseAtVolume != this.pulseAtVolume) { ++this.pulseAtVolume; pulsePct = Math.round(((double) 100 / totalVolume) * this.pulseAtVolume); } } else { pulseAtVolume = pulsePct < 0 ? pulsePct : 1; } processedSincePulse = 0; processedVolume = 0; callback.starting(this); lastPulseInterval = -1; lastPulseNano = System.nanoTime(); }