commit d556ea83e67f9cad3e3965d343e744421675509b
parent 4f2c871d004e2598e7f6c29c10a5de6bb273a4a8
Author: Matthias Jaros <jaros@mailbox.org>
Date: Mon, 16 Feb 2026 17:56:44 +0100
Fixed missing 100% on progressbar
Diffstat:
1 file changed, 23 insertions(+), 10 deletions(-)
diff --git a/src/main/java/com/it_jaros/networkScanner/ProgressBar.java b/src/main/java/com/it_jaros/networkScanner/ProgressBar.java
@@ -8,30 +8,37 @@ import java.util.concurrent.TimeUnit;
public class ProgressBar {
private ScheduledExecutorService ui = Executors.newSingleThreadScheduledExecutor();
+ private List<Progress> hosts;
public void start(List<Progress> hosts) {
- final int lines = hosts.size();
+ this.hosts = hosts;
+ // move cursor down depending on how many hosts have to be scanned
hosts.forEach((h) -> System.out.print("\n"));
ui.scheduleAtFixedRate(() -> {
- // clear bars by moving cursor up
- System.out.print("\u001b[" + lines + "A");
-
- // paint a bar per host
- for (Progress progress : hosts) {
- drawBar(progress);
- }
+ drawProgress();
}, 1, 200, TimeUnit.MILLISECONDS);
}
+ private void drawProgress() {
+ // clear bars by moving cursor up
+ final int lines = hosts.size();
+ System.out.print("\u001b[" + lines + "A");
+
+ // paint a bar per host
+ for (Progress progress : hosts) {
+ drawBar(progress);
+ }
+ }
+
private void drawBar(Progress progress) {
System.out.print("\u001b[2K\r");
- System.out.println(bar(
+ System.out.println(createBar(
progress.host() + " open=" + progress.open().get(),
progress.done().get(),
progress.total()));
}
- public String bar(String label, int done, int total) {
+ public String createBar(String label, int done, int total) {
int width = 30;
double pct = total == 0 ? 1.0 : (done / (double) total);
int filled = (int) (pct * width);
@@ -44,6 +51,12 @@ public class ProgressBar {
public void stop() {
ui.shutdown();
+ try {
+ ui.awaitTermination(10, TimeUnit.SECONDS);
+ // we need to draw one last time for the 100% to appear
+ drawProgress();
+ } catch (InterruptedException ignored) {
+ }
}
void onPortFinished(Progress p) {