diff --git a/README.md b/README.md index 6d4679c54..7be4eec48 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # java-training - +### # 1 basics - code study @@ -162,4 +162,4 @@ # clean code projects - design patterns - - chess game \ No newline at end of file + - chess game diff --git a/_3_design_patterns/src/main/java/code/_4_student_effort/Booking.java b/_3_design_patterns/src/main/java/code/_4_student_effort/Booking.java new file mode 100644 index 000000000..363cfbb42 --- /dev/null +++ b/_3_design_patterns/src/main/java/code/_4_student_effort/Booking.java @@ -0,0 +1,180 @@ +package code._4_student_effort; +import java.time.LocalDate; + +public class Booking { + Person person; + Hotel hotel; + LocalDate arriveDate; + LocalDate leaveDate; + int price; + + boolean takeBreakfast; + boolean takeMeals; + boolean openBar; + boolean spaAccess; + boolean parking; + boolean airportTransfer; + + public Person getPerson() { + return person; + } + + public Hotel getHotel() { + return hotel; + } + + public LocalDate getArriveDate() { + return arriveDate; + } + + public LocalDate getLeaveDate() { + return leaveDate; + } + + public int getPrice() { + return price; + } + + public boolean getBreakfast() { + return takeBreakfast; + } + + public boolean getMeals() { + return takeMeals; + } + + public boolean getOpenBar() { + return openBar; + } + + public boolean getSpaAccess() { + return spaAccess; + } + + public boolean getParking() { + return parking; + } + + public boolean getAirportTransfer() { + return airportTransfer; + } + + + Booking(BookingBuilder builder) { + person = builder.person; + hotel = builder.hotel; + arriveDate = builder.arriveDate; + leaveDate = builder.leaveDate; + price = builder.price; + + takeBreakfast = builder.takeBreakfast; + takeMeals = builder.takeMeals; + openBar = builder.openBar; + spaAccess = builder.spaAccess; + parking = builder.parking; + airportTransfer = builder.airportTransfer; + } + + public static class BookingBuilder { + Person person; + Hotel hotel; + LocalDate arriveDate; + LocalDate leaveDate; + int price; + + boolean takeBreakfast; + boolean takeMeals; + boolean openBar; + boolean spaAccess; + boolean parking; + boolean airportTransfer; + + BookingBuilder(Person guest, Hotel host, LocalDate aDate, LocalDate lDate) { + person = guest; + hotel = host; + arriveDate = aDate; + leaveDate = lDate; + } + + public BookingBuilder setBreakfastService(boolean takeBreakfastService) { + if (hotel.takeBreakfast) + takeBreakfast = takeBreakfastService; + else + System.out.printf("Breakfast Service is not avalable for " + hotel.getName() + "\n"); + return this; + } + + public BookingBuilder setMealsService(boolean takeMealsService) { + if (hotel.takeMeals) + takeMeals = takeMealsService; + else + System.out.printf("Meals Service is not avalable for " + hotel.getName() + "\n"); + return this; + } + + public BookingBuilder setOpenBarService(boolean takeOpenBarService) { + if (hotel.openBar) + openBar = takeOpenBarService; + else + System.out.printf("Breakfast Service is not avalable for " + hotel.getName() + "\n"); + return this; + } + + public BookingBuilder setSpaAccessService(boolean takeSpaAccessService) { + if (hotel.spaAccess) + spaAccess = takeSpaAccessService; + else + System.out.printf("Breakfast Service is not avalable for " + hotel.getName() + "\n"); + return this; + } + + public BookingBuilder setParkingService(boolean takeParkingService) { + if (hotel.parking) + parking = takeParkingService; + else + System.out.printf("Breakfast Service is not avalable for " + hotel.getName() + "\n"); + return this; + } + + public BookingBuilder setAirportTransferService(boolean takeAirportTransferService) { + if (hotel.airportTransfer) + airportTransfer = takeAirportTransferService; + else + System.out.printf("Breakfast Service is not avalable for " + hotel.getName() + "\n"); + return this; + } + + public BookingBuilder setPrice() { + price = 100; + return this; + } + + public Booking build() { + return new Booking(this); + } + } + + public StringBuilder getServices() { + StringBuilder services = new StringBuilder(); + + if (takeBreakfast) + services.append("- Breakfast\n"); + if (takeMeals) + services.append("- Meals\n"); + if (openBar) + services.append("- Open Bar\n"); + if (spaAccess) + services.append("- Spa\n"); + if (parking) + services.append("- Parking\n"); + if (airportTransfer) + services.append("- Airport Transfer\n"); + return services; + } + + public String getApprovedServices() { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/_3_design_patterns/src/main/java/code/_4_student_effort/EnumRatings.java b/_3_design_patterns/src/main/java/code/_4_student_effort/EnumRatings.java new file mode 100644 index 000000000..89dcaa6a9 --- /dev/null +++ b/_3_design_patterns/src/main/java/code/_4_student_effort/EnumRatings.java @@ -0,0 +1,12 @@ +package code._4_student_effort; +public class EnumRatings { + Rating rate; + + EnumRatings() { + + } + + EnumRatings(Rating rate) { + this.rate = rate; + } +} diff --git a/_3_design_patterns/src/main/java/code/_4_student_effort/EnumStars.java b/_3_design_patterns/src/main/java/code/_4_student_effort/EnumStars.java new file mode 100644 index 000000000..0f8061be2 --- /dev/null +++ b/_3_design_patterns/src/main/java/code/_4_student_effort/EnumStars.java @@ -0,0 +1,28 @@ +package code._4_student_effort; +public class EnumStars { + Stars star; + + EnumStars() { + + } + + EnumStars(Stars star) { + this.star = star; + } + + public String getStars() { + switch (star) { + case one: + return "*"; + case two: + return "**"; + case three: + return "***"; + case four: + return "****"; + case five: + return "*****"; + } + return null; + } +} diff --git a/_3_design_patterns/src/main/java/code/_4_student_effort/Hotel.java b/_3_design_patterns/src/main/java/code/_4_student_effort/Hotel.java new file mode 100644 index 000000000..130bbcda7 --- /dev/null +++ b/_3_design_patterns/src/main/java/code/_4_student_effort/Hotel.java @@ -0,0 +1,162 @@ +package code._4_student_effort; + +public class Hotel { + String name; + String city; + String adress; + EnumStars stars; + EnumRatings rating; + int pricePerNight; + + boolean takeBreakfast; + boolean takeMeals; + boolean openBar; + boolean spaAccess; + boolean parking; + boolean airportTransfer; + + Hotel(HotelBuilder builder) { + name = builder.name; + city = builder.city; + adress = builder.adress; + stars = builder.stars; + rating = builder.rating; + pricePerNight = builder.pricePerNight; + + takeBreakfast = builder.takeBreakfast; + takeMeals = builder.takeMeals; + openBar = builder.openBar; + spaAccess = builder.spaAccess; + parking = builder.parking; + airportTransfer = builder.airportTransfer; + } + + public String getName() { + return name; + } + + public String getCity() { + return city; + } + + public String getAdress() { + return adress; + } + + public EnumStars getStars() { + return stars; + } + + public EnumRatings getRating() { + return rating; + } + + public int getPrice() { + return pricePerNight; + } + + public boolean getBreakfast() { + return takeBreakfast; + } + + public boolean getMeals() { + return takeMeals; + } + + public boolean getOpenBar() { + return openBar; + } + + public boolean getSpaAccess() { + return spaAccess; + } + + public boolean getParking() { + return parking; + } + + public boolean getAirportTransfer() { + return airportTransfer; + } + + public static class HotelBuilder { + + String name; + String city; + String adress; + EnumStars stars; + EnumRatings rating; + int pricePerNight; + + boolean takeBreakfast; + boolean takeMeals; + boolean openBar; + boolean spaAccess; + boolean parking; + boolean airportTransfer; + + public HotelBuilder(String hotelName, String hotelCity, String hotelAdress, EnumStars hotelStars, + EnumRatings hotelRating, int price) { + name = hotelName; + city = hotelCity; + adress = hotelAdress; + stars = hotelStars; + rating = hotelRating; + pricePerNight = price; + } + + public HotelBuilder setBreakfastService(boolean takeBreakfastService) { + takeBreakfast = takeBreakfastService; + return this; + } + + public HotelBuilder setMealsService(boolean takeMealsService) { + takeMeals = takeMealsService; + return this; + } + + public HotelBuilder setOpenBarService(boolean takeOpenBarService) { + openBar = takeOpenBarService; + return this; + } + + public HotelBuilder setSpaAccessService(boolean takeSpaAccessService) { + spaAccess = takeSpaAccessService; + return this; + } + + public HotelBuilder setParkingService(boolean takeParkingService) { + parking = takeParkingService; + return this; + } + + public HotelBuilder setAirportTransferService(boolean takeAirportTransferService) { + airportTransfer = takeAirportTransferService; + return this; + } + + public Hotel build() { + return new Hotel(this); + } + + } + + public StringBuilder getAvalableServices() { + StringBuilder services = new StringBuilder(); + + if (takeBreakfast) + services.append("- Breakfast\n"); + if (takeMeals) + services.append("- Meals\n"); + if (openBar) + services.append("- Open Bar\n"); + if (spaAccess) + services.append("- Spa\n"); + if (parking) + services.append("- Parking\n"); + if (airportTransfer) + services.append("- Airport Transfer\n"); + return services; + } + +} diff --git a/_3_design_patterns/src/main/java/code/_4_student_effort/Main.java b/_3_design_patterns/src/main/java/code/_4_student_effort/Main.java index 95bb1182c..9d98ba6f1 100644 --- a/_3_design_patterns/src/main/java/code/_4_student_effort/Main.java +++ b/_3_design_patterns/src/main/java/code/_4_student_effort/Main.java @@ -3,6 +3,27 @@ public class Main { public static void main(String[] args) { - //TODO put your code changes in here + Person guest = new Person("Oana", "Albina", "2981118105053"); + + EnumStars hotelStars = new EnumStars(Stars.three); + EnumRatings hotelRating = new EnumRatings(Rating.excellent); + Hotel host = new Hotel.HotelBuilder("Giulia", "Rome", "str. Turini", hotelStars, hotelRating, 200) + .setMealsService(true).setSpaAccessService(true).setParkingService(true) + .build(); + + System.out.printf( + "Hotel " + host.getName() + " has the following services available:\n" + host.getAvalableServices()); + + + LocalDate aDate = LocalDate.parse("2021-11-17", DateTimeFormatter.ISO_LOCAL_DATE); + LocalDate lDate = LocalDate.parse("2021-11-21", DateTimeFormatter.ISO_LOCAL_DATE); + Booking booking = new Booking.BookingBuilder(guest, host, aDate, lDate).setBreakfastService(true) + .setSpaAccessService(true).setParkingService(true).build(); + + System.out.printf(booking.person.getName() + " " + booking.person.getLastName() + + " asked for a booking between " + booking.arriveDate + " and " + booking.leaveDate + " at hotel " + + booking.hotel.getName() + " " + booking.hotel.stars.getStars() + + " with the following services included:\n" + booking.getServices()); } } + diff --git a/_3_design_patterns/src/main/java/code/_4_student_effort/Person.java b/_3_design_patterns/src/main/java/code/_4_student_effort/Person.java new file mode 100644 index 000000000..52b468859 --- /dev/null +++ b/_3_design_patterns/src/main/java/code/_4_student_effort/Person.java @@ -0,0 +1,29 @@ +package code._4_student_effort; +public class Person { + + String name; + String lastName; + String CNP; + + Person() { + } + + Person(String personName, String personLastName, String personCNP) { + name = personName; + lastName = personLastName; + CNP = personCNP; + } + + public String getName() { + return name; + } + + public String getLastName() { + return lastName; + } + + public String CNP() { + return CNP; + } + +} diff --git a/_3_design_patterns/src/main/java/code/_4_student_effort/Rating.java b/_3_design_patterns/src/main/java/code/_4_student_effort/Rating.java new file mode 100644 index 000000000..4b33dc326 --- /dev/null +++ b/_3_design_patterns/src/main/java/code/_4_student_effort/Rating.java @@ -0,0 +1,4 @@ +package code._4_student_effort; +public enum Rating { + bad, decent, good, excellent +} diff --git a/_3_design_patterns/src/main/java/code/_4_student_effort/Stars.java b/_3_design_patterns/src/main/java/code/_4_student_effort/Stars.java new file mode 100644 index 000000000..d0482c0fb --- /dev/null +++ b/_3_design_patterns/src/main/java/code/_4_student_effort/Stars.java @@ -0,0 +1,4 @@ +package code._4_student_effort; +public enum Stars { + one, two, three, four, five +}