com.instaclustr.operations.OperationProgressTracker Maven / Gradle / Ivy
package com.instaclustr.operations;
public class OperationProgressTracker {
private final Operation operation;
private final int eventsToComplete;
private int eventsCompleted = 0;
private float partialUpdate = 0.0f;
public OperationProgressTracker(final Operation operation,
final int eventsToComplete) {
if (eventsToComplete <= 0) {
throw new IllegalArgumentException("Events to complete has to be greater than 0.");
}
this.operation = operation;
this.eventsToComplete = eventsToComplete;
}
public synchronized void update() {
this.operation.progress = (float) ++eventsCompleted / (float) eventsToComplete;
}
public void complete() {
this.operation.progress = 1.0f;
}
}