source: josm/trunk/src/org/openstreetmap/josm/io/StreamProgressUpdater.java@ 12167

Last change on this file since 12167 was 11553, checked in by Don-vip, 7 years ago

refactor handling of null values - use Java 8 Optional where possible

  • Property svn:eol-style set to native
File size: 1.6 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.io;
3
4import java.util.Locale;
5import java.util.Optional;
6
7import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
8import org.openstreetmap.josm.gui.progress.ProgressMonitor;
9import org.openstreetmap.josm.tools.Utils;
10
11final class StreamProgressUpdater {
12
13 private final long size;
14 private final ProgressMonitor progressMonitor;
15 private final String taskTitle;
16 private int soFar;
17 private int lastDialogUpdate;
18
19 StreamProgressUpdater(long size, ProgressMonitor progressMonitor, String taskTitle) {
20 this.size = size;
21 this.progressMonitor = Optional.ofNullable(progressMonitor).orElse(NullProgressMonitor.INSTANCE);
22 this.taskTitle = taskTitle;
23 initProgressMonitor();
24 }
25
26 private void initProgressMonitor() {
27 if (size > 0) {
28 progressMonitor.subTask(taskTitle);
29 progressMonitor.setTicksCount((int) size);
30 } else {
31 progressMonitor.indeterminateSubTask(taskTitle);
32 }
33 }
34
35 /**
36 * Increase ticker (progress counter and displayed text) by the given amount.
37 *
38 * @param amount number of ticks
39 */
40 void advanceTicker(int amount) {
41 soFar += amount;
42
43 if (soFar / 1024 != lastDialogUpdate) {
44 lastDialogUpdate++;
45 if (size > 0) {
46 progressMonitor.setTicks(soFar);
47 }
48 progressMonitor.setExtraText(Utils.getSizeString(soFar, Locale.getDefault()));
49 }
50 }
51
52 void finishTask() {
53 progressMonitor.finishTask();
54 }
55}
Note: See TracBrowser for help on using the repository browser.