22
33import cleancode .studycafe .tobe .model .StudyCafeLockerPass ;
44import cleancode .studycafe .tobe .model .StudyCafePass ;
5- import cleancode .studycafe .tobe .model .StudyCafePassType ;
65
76import java .io .IOException ;
87import java .nio .file .Files ;
98import java .nio .file .Paths ;
10- import java .util .ArrayList ;
119import java .util .List ;
1210
1311public class StudyCafeFileHandler {
@@ -16,23 +14,12 @@ public List<StudyCafePass> readStudyCafePasses() {
1614 List <StudyCafeLockerPass > lockerPasses = readLockerPasses ();
1715 try {
1816 List <String > lines = Files .readAllLines (Paths .get ("src/main/resources/cleancode/studycafe/pass-list.csv" ));
19- List <StudyCafePass > studyCafePasses = new ArrayList <>();
20- for (String line : lines ) {
21- String [] values = line .split ("," );
22- StudyCafePassType studyCafePassType = StudyCafePassType .valueOf (values [0 ]);
23- int duration = Integer .parseInt (values [1 ]);
24- int price = Integer .parseInt (values [2 ]);
25- double discountRate = Double .parseDouble (values [3 ]);
26- var pass = switch (studyCafePassType ) {
27- case HOURLY -> StudyCafePass .hourlyOf (duration , price , discountRate );
28- case WEEKLY -> StudyCafePass .weeklyOf (duration , price , discountRate );
29- case FIXED ->
30- StudyCafePass .fixedOf (duration , price , discountRate , lockerPasses .stream ().filter ((lockerPass -> lockerPass .isCompatible (duration ))).findFirst ().orElse (null ));
31- };
32- studyCafePasses .add (pass );
33- }
34-
35- return studyCafePasses ;
17+ return lines .stream ().map (line -> line .split ("," ))
18+ .map (values -> {
19+ int duration = Integer .parseInt (values [1 ]);
20+ StudyCafeLockerPass locker = lockerPasses .stream ().filter ((lockerPass -> lockerPass .isCompatible (duration ))).findFirst ().orElse (null );
21+ return StudyCafePass .of (values , locker );
22+ }).toList ();
3623 } catch (IOException e ) {
3724 throw new RuntimeException ("파일을 읽는데 실패했습니다." , e );
3825 }
@@ -41,17 +28,8 @@ public List<StudyCafePass> readStudyCafePasses() {
4128 private List <StudyCafeLockerPass > readLockerPasses () {
4229 try {
4330 List <String > lines = Files .readAllLines (Paths .get ("src/main/resources/cleancode/studycafe/locker.csv" ));
44- List <StudyCafeLockerPass > lockerPasses = new ArrayList <>();
45- for (String line : lines ) {
46- String [] values = line .split ("," );
47- int duration = Integer .parseInt (values [1 ]);
48- int price = Integer .parseInt (values [2 ]);
49-
50- StudyCafeLockerPass lockerPass = StudyCafeLockerPass .of (duration , price );
51- lockerPasses .add (lockerPass );
52- }
53-
54- return lockerPasses ;
31+ return lines .stream ().map (line -> line .split ("," ))
32+ .map (StudyCafeLockerPass ::fromValues ).toList ();
5533 } catch (IOException e ) {
5634 throw new RuntimeException ("파일을 읽는데 실패했습니다." , e );
5735 }
0 commit comments