-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathRandomLadderFactory.java
More file actions
51 lines (40 loc) · 1.3 KB
/
RandomLadderFactory.java
File metadata and controls
51 lines (40 loc) · 1.3 KB
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
package domain.ladder.ladderFactory;
import domain.ladder.Ladder;
import domain.ladder.Pillar;
import dto.UserInputDto;
import java.util.ArrayList;
import java.util.List;
public class RandomLadderFactory implements LadderFactory {
private List<String> names;
private int height;
public RandomLadderFactory(UserInputDto inputDto) {
this.names = inputDto.getNames();
this.height = inputDto.getHeight();
}
@Override
public List<Pillar> createPillars() {
List<Pillar> pillars = new ArrayList<>();
addFirst(pillars);
addMid(pillars);
addLast(pillars);
return pillars;
}
private void addFirst(List<Pillar> pillars) {
pillars.add(Pillar.createFirst(names.get(0), height));
}
private void addMid(List<Pillar> pillars) {
for (int i = 1; i < names.size() - 1; i++) {
Pillar pillar = Pillar.createMiddle(names.get(i), pillars.get(i - 1));
pillars.add(pillar);
}
}
private void addLast(List<Pillar> pillars) {
pillars.add(Pillar.createLast(names.get(getLastIndex()), pillars.get(getLastIndex() - 1)));
}
private int getLastIndex() {
return names.size() - 1;
}
public Ladder createLadder() {
return new Ladder(createPillars(), height);
}
}