Skip to content

Commit b54e2e8

Browse files
committed
feat: 코드푸시
1 parent e329905 commit b54e2e8

29 files changed

+942
-37
lines changed
Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,19 @@
1-
package domain.lotteryStore;public class Lotteries {
1+
package domain.lotteryStore;
2+
3+
import java.util.List;
4+
5+
public class Lotteries {
6+
private final List<Lottery> lotteries;
7+
8+
public Lotteries(List<Lottery> lotteries) {
9+
this.lotteries = lotteries;
10+
}
11+
12+
public Lottery get(int index) {
13+
return lotteries.get(index);
14+
}
15+
16+
public List<Lottery> getLotteries() {
17+
return lotteries;
18+
}
219
}
Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,13 @@
1-
package domain.lotteryStore;public class Lottery {
1+
package domain.lotteryStore;
2+
3+
public class Lottery {
4+
private final Numbers numbers;
5+
6+
public Lottery(Numbers numbers) {
7+
this.numbers = numbers;
8+
}
9+
10+
public Numbers getNumbers() {
11+
return numbers;
12+
}
213
}
Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,22 @@
1-
package domain.lotteryStore;public class LotteryStore {
1+
package domain.lotteryStore;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
public class LotteryStore {
7+
private final TargetNumbers targetNumbers = new TargetNumbers();
8+
9+
public Lotteries createLotteries(int count) {
10+
List<Lottery> lotteries = new ArrayList<>();
11+
while (count-- > 0) {
12+
lotteries.add(createLottery());
13+
}
14+
return new Lotteries(lotteries);
15+
}
16+
17+
private Lottery createLottery() {
18+
targetNumbers.shuffle();
19+
Numbers numbers = new Numbers(targetNumbers.getSixNumbersFromTheFront());
20+
return new Lottery(numbers);
21+
}
222
}
Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,30 @@
1-
package domain.lotteryStore;public class Numbers {
1+
package domain.lotteryStore;
2+
3+
import java.util.Collections;
4+
import java.util.List;
5+
6+
import domain.value.WinningNumbers;
7+
8+
public class Numbers {
9+
private final List<Integer> numbers;
10+
11+
public Numbers(List<Integer> numbers) {
12+
Collections.sort(numbers);
13+
this.numbers = numbers;
14+
}
15+
16+
public int countMatchingNumbers(WinningNumbers winningNumbers) {
17+
return (int)winningNumbers.getWinningNumbers()
18+
.stream()
19+
.filter(this::contains)
20+
.count();
21+
}
22+
23+
public boolean contains(int compareToNumber) {
24+
return numbers.contains(compareToNumber);
25+
}
26+
27+
public List<Integer> getNumbers() {
28+
return numbers;
29+
}
230
}
Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,30 @@
1-
package domain.lotteryStore;public class TargetNumbers {
1+
package domain.lotteryStore;
2+
3+
import java.util.ArrayList;
4+
import java.util.Collections;
5+
import java.util.List;
6+
import java.util.stream.Collectors;
7+
8+
public class TargetNumbers {
9+
private final List<Integer> targetNumbers = new ArrayList<>();
10+
11+
public TargetNumbers() {
12+
initiateNumbers();
13+
}
14+
15+
private void initiateNumbers() {
16+
for (int i = 1; i <= 45; i++) {
17+
targetNumbers.add(i);
18+
}
19+
}
20+
21+
public void shuffle() {
22+
Collections.shuffle(targetNumbers);
23+
}
24+
25+
public List<Integer> getSixNumbersFromTheFront() {
26+
return targetNumbers.stream()
27+
.limit(6)
28+
.collect(Collectors.toList());
29+
}
230
}
Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,23 @@
1-
package domain.value;public class BonusNumber {
1+
package domain.value;
2+
3+
import domain.value.validator.BonusNumberValidator;
4+
5+
public class BonusNumber {
6+
private final int bonusNumber;
7+
private final BonusNumberValidator validator;
8+
9+
public BonusNumber(int bonusNumber, WinningNumbers winningNumbers) {
10+
validator = new BonusNumberValidator();
11+
validateBonusNumber(bonusNumber, winningNumbers);
12+
this.bonusNumber = bonusNumber;
13+
}
14+
15+
private void validateBonusNumber(int bonusNumber, WinningNumbers winningNumbers) {
16+
validator.validateRangeOfBonusNumber(bonusNumber);
17+
validator.validateBonusNumber(bonusNumber, winningNumbers);
18+
}
19+
20+
public int getBonusNumber() {
21+
return bonusNumber;
22+
}
223
}
Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,18 @@
1-
package domain.value;public class PurchasePrice {
1+
package domain.value;
2+
3+
import domain.value.validator.PurchasePriceValidator;
4+
5+
public class PurchasePrice {
6+
private final int purchasePrice;
7+
private final PurchasePriceValidator purchasePriceValidator;
8+
9+
public PurchasePrice(int purchasePrice) {
10+
purchasePriceValidator = new PurchasePriceValidator();
11+
purchasePriceValidator.validateSmallerThanPurchasePrice(purchasePrice);
12+
this.purchasePrice = purchasePrice;
13+
}
14+
15+
public int getPurchasePrice() {
16+
return purchasePrice;
17+
}
218
}
Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,47 @@
1-
package domain.value;public class WinningNumbers {
1+
package domain.value;
2+
3+
import java.util.Arrays;
4+
import java.util.List;
5+
import java.util.stream.Collectors;
6+
7+
import domain.value.validator.WinningNumbersValidator;
8+
9+
public class WinningNumbers {
10+
private static final String COMMA = ",";
11+
private static final String BLANK = " ";
12+
private static final String EMPTY_STRING = "";
13+
14+
private final List<Integer> winningNumbers;
15+
private final WinningNumbersValidator validator;
16+
17+
public WinningNumbers(String winningNumbers) {
18+
validator = new WinningNumbersValidator();
19+
this.winningNumbers = splitWinningNumbers(winningNumbers);
20+
}
21+
22+
private List<Integer> splitWinningNumbers(String input) {
23+
validator.validateOtherCharacterSymbols(input);
24+
25+
List<Integer> splitInput = Arrays.stream(input.replaceAll(BLANK, EMPTY_STRING)
26+
.split(COMMA))
27+
.map(Integer::parseInt)
28+
.collect(Collectors.toList());
29+
30+
validateSplitInput(splitInput);
31+
return splitInput;
32+
}
33+
34+
private void validateSplitInput(List<Integer> splitInput) {
35+
validator.validateSizeOfWinningNumbers(splitInput);
36+
validator.validateRangeOfWinningNumbers(splitInput);
37+
validator.validateDuplicateWinningNumbers(splitInput);
38+
}
39+
40+
public boolean contains(int numberToCompare) {
41+
return winningNumbers.contains(numberToCompare);
42+
}
43+
44+
public List<Integer> getWinningNumbers() {
45+
return winningNumbers;
46+
}
247
}
Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,20 @@
1-
package domain.value.validator;public class BonusNumberValidator {
1+
package domain.value.validator;
2+
3+
import domain.value.WinningNumbers;
4+
import ui.message.ExceptionMessage;
5+
6+
public class BonusNumberValidator {
7+
public void validateRangeOfBonusNumber(int bonusNumber) {
8+
if (bonusNumber < WinningNumbersValidator.MINIMUM_WINNING_NUMBER
9+
|| bonusNumber > WinningNumbersValidator.MAXIMUM_WINNING_NUMBER) {
10+
throw new IllegalArgumentException(ExceptionMessage.MUST_INPUT_NUMBERS_IN_VALID_RANGE.getMessage());
11+
}
12+
}
13+
14+
public void validateBonusNumber(int bonusNumber, WinningNumbers winningNumbers) {
15+
if (winningNumbers.contains(bonusNumber)) {
16+
throw new IllegalArgumentException(
17+
ExceptionMessage.BONUS_NUMBER_CANNOT_EQUAL_WINNING_NUMBERS.getMessage());
18+
}
19+
}
220
}
Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,13 @@
1-
package domain.value.validator;public class PurchasePriceValidator {
1+
package domain.value.validator;
2+
3+
import ui.message.ExceptionMessage;
4+
5+
public class PurchasePriceValidator {
6+
private static final int MINIMUM_PURCHASE_PRICE = 1000;
7+
8+
public void validateSmallerThanPurchasePrice(int purchasePrice) {
9+
if (purchasePrice < MINIMUM_PURCHASE_PRICE) {
10+
throw new IllegalArgumentException(ExceptionMessage.MUST_BUY_MORE_THAN_ONE_TICKET.getMessage());
11+
}
12+
}
213
}

0 commit comments

Comments
 (0)