-
Notifications
You must be signed in to change notification settings - Fork 737
/
Copy pathOutputView.java
79 lines (63 loc) · 2.13 KB
/
OutputView.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package ladder.view;
import ladder.domain.Line;
import ladder.domain.Result;
import ladder.domain.User;
import java.util.List;
import java.util.stream.Collectors;
public class OutputView {
public static final String BLANK = " ";
public static final int LINE_LENGTH_MAX = 5;
public static final String LADDER_SHAPE = "|";
public static final String LINE = "-";
private OutputView() {
}
public static void printLadder(List<User> userList, List<Line> lines, List<Result> results)
{
System.out.println("사다리 결과");
printUser(userList);
printLine(lines);
printResult(results);
}
private static void printLine(List<Line> lines)
{
lines.forEach(line -> {
System.out.print(BLANK.repeat(3));
printLines(line.getPoints());
System.out.print(LADDER_SHAPE+"\n");
});
}
private static void printLines(List<Boolean> points) {
points.stream()
.forEach(point -> {
System.out.print(LADDER_SHAPE);
System.out.print(getLine(point));
});
}
private static String getLine(boolean isLine) {
if (isLine) {
return LINE.repeat(LINE_LENGTH_MAX);
}
return BLANK.repeat(LINE_LENGTH_MAX);
}
private static void printUser(List<User> userList) {
System.out.println(userList.stream()
.map(User::getName)
.map(OutputView::outputPersonName)
.collect(Collectors.joining(BLANK)));
}
private static void printResult(List<Result> userList) {
System.out.println(userList.stream()
.map(result -> String.format("%4s ", result.getResult()))
.collect(Collectors.joining(BLANK)));
}
private static String outputPersonName(String name) {
if (name.length() < LINE_LENGTH_MAX) {
return String.format("%4s ", name);
}
return name;
}
public static boolean printLadderResult(List<String> ladderResult) {
ladderResult.forEach(System.out::println);
return ladderResult.size() != 1;
}
}