55import com .amigoscode .user .User ;
66
77import java .time .LocalDateTime ;
8+ import java .util .ArrayList ;
9+ import java .util .Collections ;
10+ import java .util .List ;
811import java .util .UUID ;
912
1013public class CarBookingService {
@@ -18,9 +21,9 @@ public CarBookingService(CarBookingDao carBookingDao, CarService carService) {
1821 }
1922
2023 public UUID bookCar (User user , String regNumber ) {
21- Car [] availableCars = getAvailableCars ();
24+ List < Car > availableCars = getAvailableCars ();
2225
23- if (availableCars .length == 0 ) {
26+ if (availableCars .isEmpty () ) {
2427 throw new IllegalStateException ("No car available for renting" );
2528 }
2629
@@ -39,74 +42,43 @@ public UUID bookCar(User user, String regNumber) {
3942 throw new IllegalStateException ("Already booked. car with regNumber " + regNumber );
4043 }
4144
42- public Car [] getUserBookedCars (UUID userId ) {
43- CarBooking [] carBookings = carBookingDao .getCarBookings ();
45+ public List <Car > getUserBookedCars (UUID userId ) {
46+ List <CarBooking > carBookings = carBookingDao .getCarBookings ();
47+ List <Car > userCars = new ArrayList <>();
4448
45- int numberOfBookingsForUser = 0 ;
46-
47- for (CarBooking cb : carBookings ) {
48- if (cb != null && cb .getUser ().getId ().equals (userId )) {
49- ++numberOfBookingsForUser ;
50- }
51- }
52-
53- if (numberOfBookingsForUser == 0 ) {
54- return new Car [0 ];
55- }
56-
57- Car [] userCars = new Car [numberOfBookingsForUser ];
58-
59- int index = 0 ;
6049 for (CarBooking carBooking : carBookings ) {
6150 if (carBooking != null && carBooking .getUser ().getId ().equals (userId )) {
62- userCars [ index ++] = carBooking .getCar ();
51+ userCars . add ( carBooking .getCar () );
6352 }
6453 }
6554 return userCars ;
6655 }
6756
6857
69- public Car [] getAvailableCars () {
58+ public List < Car > getAvailableCars () {
7059 return getCars (carService .getAllCars ());
7160 }
7261
73- public Car [] getAvailableElectricCars () {
62+ public List < Car > getAvailableElectricCars () {
7463 return getCars (carService .getAllElectricCars ());
7564 }
7665
77- private Car [] getCars (Car [] cars ) {
66+ private List < Car > getCars (List < Car > cars ) {
7867
7968 // no cars in the system yet
80- if (cars .length == 0 ) {
81- return new Car [ 0 ] ;
69+ if (cars .isEmpty () ) {
70+ return Collections . emptyList () ;
8271 }
8372
84- CarBooking [] carBookings = carBookingDao .getCarBookings ();
73+ List < CarBooking > carBookings = carBookingDao .getCarBookings ();
8574
8675 // no bookings yet therefore all cars are available
87- if (carBookings .length == 0 ) {
76+ if (carBookings .isEmpty () ) {
8877 return cars ;
8978 }
9079
91- // this variable is used to create new array for availableCars since we need the size
92- int availableCarsCount = 0 ;
9380
94- for (Car car : cars ) {
95- // lets check if car part of any booking. if not then its available
96- boolean booked = false ;
97- for (CarBooking carBooking : carBookings ) {
98- if (carBooking == null || !carBooking .getCar ().equals (car )) {
99- continue ;
100- }
101- booked = true ;
102- }
103- if (!booked ) {
104- ++availableCarsCount ;
105- }
106- }
107-
108- Car [] availableCars = new Car [availableCarsCount ];
109- int index = 0 ;
81+ List <Car > availableCars = new ArrayList <>();
11082
11183 // populate available cars
11284 for (Car car : cars ) {
@@ -120,36 +92,15 @@ private Car[] getCars(Car[] cars) {
12092 booked = true ;
12193 }
12294 if (!booked ) {
123- availableCars [ index ++] = car ;
95+ availableCars . add ( car ) ;
12496 }
12597 }
12698
12799 return availableCars ;
128100 }
129101
130- public CarBooking [] getBookings () {
131- CarBooking [] carBookings = carBookingDao .getCarBookings ();
132-
133- int numberOfBookings = 0 ;
134-
135- for (CarBooking cb : carBookings ) {
136- if (cb != null ) {
137- ++numberOfBookings ;
138- }
139- }
140-
141- if (numberOfBookings == 0 ) {
142- return new CarBooking [0 ];
143- }
144-
145- CarBooking [] bookings = new CarBooking [numberOfBookings ];
102+ public List <CarBooking > getBookings () {
103+ return carBookingDao .getCarBookings ();
146104
147- int index = 0 ;
148- for (CarBooking carBooking : carBookings ) {
149- if (carBooking != null ) {
150- bookings [index ++] = carBooking ;
151- }
152- }
153- return bookings ;
154105 }
155106}
0 commit comments