Skip to content

Commit 7bbec29

Browse files
committed
Add unit factor
1 parent 006505a commit 7bbec29

6 files changed

Lines changed: 65 additions & 42 deletions

File tree

src/main/java/fr/rakambda/progressbar/api/bar/IProgressBar.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,22 @@ default boolean isFinished(){
172172
*/
173173
void setUnit(String value);
174174

175+
/**
176+
* Gets the unit factor associated to this bar.
177+
* For example, if the bar has a value of 100 and a unit factor of 20, then 5 will be displayed.
178+
*
179+
* @return The unit factor.
180+
*/
181+
long getUnitFactor();
182+
183+
/**
184+
* Sets the unit factor associated to this bar.
185+
* For example, if the bar has a value of 100 and a unit factor of 20, then 5 will be displayed.
186+
*
187+
* @param value The unit factor.
188+
*/
189+
void setUnitFactor(long value);
190+
175191
/**
176192
* Gets the description associated to this bar.
177193
*

src/main/java/fr/rakambda/progressbar/impl/bar/BaseProgressBar.java

Lines changed: 41 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -6,47 +6,51 @@
66
import lombok.Setter;
77
import org.jetbrains.annotations.NotNull;
88
import org.jetbrains.annotations.Nullable;
9-
109
import java.util.Optional;
1110

1211
/**
1312
* Ease of use class containing all the "metadata" fields of a {@link fr.rakambda.progressbar.api.bar.IProgressBar}.
1413
*/
1514
@Getter
16-
abstract class BaseProgressBar {
17-
@NotNull
18-
private IRenderer renderer;
19-
@Nullable
20-
@Setter
21-
private String name;
22-
@Setter
23-
private boolean hideWhenComplete;
24-
@Setter
25-
private boolean removeWhenComplete;
26-
@Setter
27-
private boolean showPercentage;
28-
@Nullable
29-
@Setter
30-
private String unit;
31-
@Nullable
32-
@Setter
33-
private String description;
34-
35-
public BaseProgressBar(
36-
@Nullable IRenderer renderer,
37-
@Nullable String name,
38-
boolean hideWhenComplete,
39-
boolean removeWhenComplete,
40-
boolean showPercentage,
41-
@Nullable String unit,
42-
@Nullable String description
43-
) {
44-
this.renderer = Optional.ofNullable(renderer).orElse(new DefaultRenderer());
45-
this.name = name;
46-
this.hideWhenComplete = hideWhenComplete;
47-
this.removeWhenComplete = removeWhenComplete;
48-
this.showPercentage = showPercentage;
49-
this.unit = unit;
50-
this.description = description;
51-
}
15+
abstract class BaseProgressBar{
16+
@NotNull
17+
private IRenderer renderer;
18+
@Nullable
19+
@Setter
20+
private String name;
21+
@Setter
22+
private boolean hideWhenComplete;
23+
@Setter
24+
private boolean removeWhenComplete;
25+
@Setter
26+
private boolean showPercentage;
27+
@Nullable
28+
@Setter
29+
private String unit;
30+
@Setter
31+
@Getter
32+
private long unitFactor;
33+
@Nullable
34+
@Setter
35+
private String description;
36+
37+
public BaseProgressBar(
38+
@Nullable IRenderer renderer,
39+
@Nullable String name,
40+
boolean hideWhenComplete,
41+
boolean removeWhenComplete,
42+
boolean showPercentage,
43+
@Nullable String unit,
44+
@Nullable Long unitFactor,
45+
@Nullable String description
46+
){
47+
this.renderer = Optional.ofNullable(renderer).orElse(new DefaultRenderer());
48+
this.name = name;
49+
this.hideWhenComplete = hideWhenComplete;
50+
this.removeWhenComplete = removeWhenComplete;
51+
this.showPercentage = showPercentage;
52+
this.unit = unit;
53+
this.unitFactor = Optional.ofNullable(unitFactor).filter(v -> v != 0L).orElse(1L);
54+
this.description = description;
55+
}
5256
}

src/main/java/fr/rakambda/progressbar/impl/bar/ComposedProgressBar.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,10 @@ private ComposedProgressBar(
3838
boolean removeWhenComplete,
3939
boolean showPercentage,
4040
@Nullable String unit,
41+
@Nullable Long unitFactor,
4142
@Nullable String description
4243
){
43-
super(renderer, name, hideWhenComplete, removeWhenComplete, showPercentage, unit, description);
44+
super(renderer, name, hideWhenComplete, removeWhenComplete, showPercentage, unit, unitFactor, description);
4445

4546
this.children = new ConcurrentLinkedQueue<>();
4647
}

src/main/java/fr/rakambda/progressbar/impl/bar/CumulativeProgressBar.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,10 @@ private CumulativeProgressBar(
3838
boolean removeWhenComplete,
3939
boolean showPercentage,
4040
@Nullable String unit,
41+
@Nullable Long unitFactor,
4142
@Nullable String description
4243
){
43-
super(renderer, name, hideWhenComplete, removeWhenComplete, showPercentage, unit, description);
44+
super(renderer, name, hideWhenComplete, removeWhenComplete, showPercentage, unit, unitFactor, description);
4445

4546
this.children = new ConcurrentLinkedQueue<>();
4647
}

src/main/java/fr/rakambda/progressbar/impl/bar/SimpleProgressBar.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,10 @@ private SimpleProgressBar(
5959
boolean removeWhenComplete,
6060
boolean showPercentage,
6161
@Nullable String unit,
62+
@Nullable Long unitFactor,
6263
@Nullable String description
6364
){
64-
super(renderer, name, hideWhenComplete, removeWhenComplete, showPercentage, unit, description);
65+
super(renderer, name, hideWhenComplete, removeWhenComplete, showPercentage, unit, unitFactor, description);
6566

6667
start = Optional.ofNullable(start).orElse(new AtomicLong());
6768
current = Optional.ofNullable(current).orElse(new AtomicLong());

src/main/java/fr/rakambda/progressbar/impl/render/DefaultRenderer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,9 @@ public String render(int maxLength, @NotNull IProgressBar bar){
5454
}
5555

5656
suffix.append(' ');
57-
suffix.append(elapsed);
57+
suffix.append(elapsed / bar.getUnitFactor());
5858
suffix.append('/');
59-
suffix.append(totalSteps);
59+
suffix.append(totalSteps / bar.getUnitFactor());
6060
if(Objects.nonNull(bar.getUnit())){
6161
suffix.append(bar.getUnit());
6262
}

0 commit comments

Comments
 (0)