Skip to content

Commit 0fbf1e0

Browse files
committed
update
1 parent 3a90158 commit 0fbf1e0

File tree

2 files changed

+144
-20
lines changed

2 files changed

+144
-20
lines changed

src/main/java/com/osiris/betterthread/BetterThreadDisplayer.java

Lines changed: 92 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,13 @@ public class BetterThreadDisplayer extends Thread {
3030
private BetterThreadManager manager;
3131
private String label = "[MyAppName]";
3232
private String threadType = "[PROCESS]";
33-
private DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("HH:mm:ss");
3433
private LocalDateTime now;
3534
private boolean showWarnings;
3635
private boolean showDetailedWarnings;
3736
private int refreshInterval;
37+
private DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("HH:mm:ss");
38+
private List<BetterWarning> allWarnings = new ArrayList<>();
39+
private boolean finished;
3840

3941
private static byte anim;
4042

@@ -73,7 +75,6 @@ public BetterThreadDisplayer(BetterThreadManager manager, String label, String t
7375

7476
// Check if Jansi console was already started
7577
AnsiConsole.systemInstall();
76-
this.start();
7778
}
7879

7980
@Override
@@ -208,7 +209,18 @@ else if(process.isSkipped()){
208209
}
209210
}
210211
if (!isPendingStart){
212+
213+
// Go through every process and add their warnings to the allBetterWarnings list
214+
for (BetterThread process :
215+
manager.getAll()) {
216+
List<BetterWarning> betterWarnings = process.getWarnings();
217+
if (!betterWarnings.isEmpty()){
218+
allWarnings.addAll(betterWarnings);
219+
}
220+
}
221+
211222
formatWarnings();
223+
finished = true;
212224
return false;
213225
}
214226
}
@@ -225,17 +237,6 @@ private long getPercentage(long now, long max){
225237
* This is will be shown when all processes finished.
226238
*/
227239
private void formatWarnings(){
228-
List<BetterWarning> allBetterWarnings = new ArrayList();
229-
230-
// Go through every process and add their warnings to the allBetterWarnings list
231-
for (BetterThread process :
232-
manager.getAll()) {
233-
List<BetterWarning> betterWarnings = process.getWarnings();
234-
if (!betterWarnings.isEmpty()){
235-
allBetterWarnings.addAll(betterWarnings);
236-
}
237-
}
238-
239240

240241
Ansi ansiDate = ansi()
241242
.bg(WHITE)
@@ -244,20 +245,20 @@ private void formatWarnings(){
244245
.fg(BLACK).a("[SUMMARY]")
245246
.reset();
246247

247-
if (allBetterWarnings.isEmpty()){
248+
if (allWarnings.isEmpty()){
248249
System.out.print(ansi()
249250
.fg(GREEN).a(" Executed all tasks successfully!")
250251
.reset());
251252
}
252253
else if (showWarnings) {
253254
System.out.print(ansi()
254-
.fg(YELLOW).a(" There are " + allBetterWarnings.size() + " warnings:")
255+
.fg(YELLOW).a(" There are " + allWarnings.size() + " warnings:")
255256
.reset());
256257

257258
if (showDetailedWarnings) {
258259
BetterWarning betterWarning;
259-
for (int i = 0; i < allBetterWarnings.size(); i++) {
260-
betterWarning = allBetterWarnings.get(i);
260+
for (int i = 0; i < allWarnings.size(); i++) {
261+
betterWarning = allWarnings.get(i);
261262
StringBuilder builder = new StringBuilder();
262263
builder.append(ansiDate);
263264
builder.append(ansi()
@@ -273,8 +274,8 @@ else if (showWarnings) {
273274
}
274275
else {
275276
BetterWarning betterWarning;
276-
for (int i = 0; i < allBetterWarnings.size(); i++) {
277-
betterWarning = allBetterWarnings.get(i);
277+
for (int i = 0; i < allWarnings.size(); i++) {
278+
betterWarning = allWarnings.get(i);
278279
StringBuilder builder = new StringBuilder();
279280
builder.append(ansiDate);
280281
builder.append(ansi()
@@ -288,9 +289,80 @@ else if (showWarnings) {
288289
}
289290
else{
290291
System.out.print(ansi()
291-
.fg(YELLOW).a(" There are "+ allBetterWarnings.size()+" warnings! Enable 'show-warnings' in the to view them, or check your debug log for further details!")
292+
.fg(YELLOW).a(" There are "+ allWarnings.size()+" warnings! Enable 'show-warnings' in the to view them, or check your debug log for further details!")
292293
.reset());
293294
}
294295
}
295296

297+
public BetterThreadManager getManager() {
298+
return manager;
299+
}
300+
301+
public void setManager(BetterThreadManager manager) {
302+
this.manager = manager;
303+
}
304+
305+
public String getLabel() {
306+
return label;
307+
}
308+
309+
public void setLabel(String label) {
310+
this.label = label;
311+
}
312+
313+
public String getThreadType() {
314+
return threadType;
315+
}
316+
317+
public void setThreadType(String threadType) {
318+
this.threadType = threadType;
319+
}
320+
321+
public boolean isShowWarnings() {
322+
return showWarnings;
323+
}
324+
325+
public void setShowWarnings(boolean showWarnings) {
326+
this.showWarnings = showWarnings;
327+
}
328+
329+
public boolean isShowDetailedWarnings() {
330+
return showDetailedWarnings;
331+
}
332+
333+
public void setShowDetailedWarnings(boolean showDetailedWarnings) {
334+
this.showDetailedWarnings = showDetailedWarnings;
335+
}
336+
337+
public int getRefreshInterval() {
338+
return refreshInterval;
339+
}
340+
341+
public void setRefreshInterval(int refreshInterval) {
342+
this.refreshInterval = refreshInterval;
343+
}
344+
345+
public DateTimeFormatter getDateFormatter() {
346+
return dateFormatter;
347+
}
348+
349+
public void setDateFormatter(DateTimeFormatter dateFormatter) {
350+
this.dateFormatter = dateFormatter;
351+
}
352+
353+
public boolean isFinished() {
354+
return finished;
355+
}
356+
357+
public void setFinished(boolean finished) {
358+
this.finished = finished;
359+
}
360+
361+
public List<BetterWarning> getAllWarnings() {
362+
return allWarnings;
363+
}
364+
365+
public void setAllWarnings(List<BetterWarning> allWarnings) {
366+
this.allWarnings = allWarnings;
367+
}
296368
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package com.osiris.betterthread;
2+
3+
import org.junit.jupiter.api.Test;
4+
5+
import static org.junit.jupiter.api.Assertions.*;
6+
7+
class BetterThreadDisplayerTest {
8+
9+
@Test
10+
void test() {
11+
BetterThreadManager manager = new BetterThreadManager();
12+
BetterThread test1 = new BetterThread(manager);
13+
test1.start();
14+
BetterThread test2 = new BetterThread(manager);
15+
test2.start();
16+
BetterThread test3 = new BetterThread(manager);
17+
test3.start();
18+
BetterThreadDisplayer displayer = new BetterThreadDisplayer(manager);
19+
displayer.start();
20+
21+
// Its normal to get values over 100% because of this loop
22+
Thread thread = new Thread(()->{
23+
try {
24+
while (!displayer.isFinished())
25+
for (BetterThread t :
26+
manager.getAll()) {
27+
t.step();
28+
Thread.sleep(10);
29+
}
30+
} catch (InterruptedException e) {
31+
e.printStackTrace();
32+
}
33+
});
34+
thread.start();
35+
36+
try{
37+
while (!displayer.isFinished())
38+
Thread.sleep(1000);
39+
boolean isWarning = false;
40+
for (BetterThread t :
41+
manager.getAll()) {
42+
if (!t.getBetterWarnings().isEmpty())
43+
isWarning = true;
44+
}
45+
assertTrue(!isWarning);
46+
} catch (Exception e) {
47+
e.printStackTrace();
48+
}
49+
50+
51+
}
52+
}

0 commit comments

Comments
 (0)