From b019914b03e1bf6c10b1512cb607beb130b39745 Mon Sep 17 00:00:00 2001 From: Sherwin Price Date: Wed, 3 Sep 2025 12:25:10 -0400 Subject: [PATCH] updates --- src/java/lodge/TestReservations.java | 24 +++++++++------ .../AccomodationManager.java | 5 ++-- src/java/lodge/reservationsystem/Account.java | 30 ++++++++++++------- .../AccountReservationList.java | 8 +++-- .../reservationsystem/CabinReservation.java | 2 -- .../lodge/reservationsystem/Reservation.java | 11 ------- .../ReservationException.java | 12 ++++++++ 7 files changed, 54 insertions(+), 38 deletions(-) create mode 100644 src/java/lodge/reservationsystem/ReservationException.java diff --git a/src/java/lodge/TestReservations.java b/src/java/lodge/TestReservations.java index f4ac2fa..5e2e7c8 100644 --- a/src/java/lodge/TestReservations.java +++ b/src/java/lodge/TestReservations.java @@ -39,7 +39,7 @@ public final class TestReservations { // 4. Request that Manager updates specific account’s files with data stored in // memory - mgr.UpdateAccount(mgr.retrieveAccount(acct.account_number())); + mgr.UpdateAccount(acct); // 5. Add draft lodging reservation to an account (if reservation object already // exists with the same reservation number, it is considered an error) @@ -52,10 +52,10 @@ public final class TestReservations { hotel.setSquareFeet(450); hotel.setReservation_start_date(ZonedDateTime.of(2025, 07, 05, 10, 0, 0, 0, ZoneId.of("UTC"))); hotel.setReservation_end_date(ZonedDateTime.of(2025, 11, 30, 22, 0, 0, 0, ZoneId.of("UTC"))); - boolean success1 = mgr.addReservation(mgr.retrieveAccount(acct.account_number()), hotel); + boolean success1 = mgr.addReservation(acct, hotel); assert success1; - mgr.UpdateAccount(mgr.retrieveAccount(acct.account_number())); + mgr.UpdateAccount(acct); CabinReservation cabin = new CabinReservation(); cabin.setPhysical_address(new Address("30 cabin ave", "Carnelian", "CA", "96140")); @@ -66,9 +66,11 @@ public final class TestReservations { cabin.setSquareFeet(806); cabin.setReservation_start_date(ZonedDateTime.of(2025, 07, 05, 10, 0, 0, 0, ZoneId.of("UTC"))); cabin.setReservation_end_date(ZonedDateTime.of(2025, 11, 30, 22, 0, 0, 0, ZoneId.of("UTC"))); - boolean success2 = mgr.addReservation(mgr.retrieveAccount(acct.account_number()), cabin); + boolean success2 = mgr.addReservation(acct, cabin); assert success2; + mgr.UpdateAccount(acct); + HouseReservation house = new HouseReservation(); house.setPhysical_address(new Address("3000 Osage ave", "GreenBelt", "MD", "20740")); house.setMailing_address(new Address("40012 College ave", "College Park", "MD", "20740")); @@ -78,17 +80,21 @@ public final class TestReservations { house.setSquareFeet(1400); house.setReservation_start_date(ZonedDateTime.of(2025, 07, 05, 10, 0, 0, 0, ZoneId.of("UTC"))); house.setReservation_end_date(ZonedDateTime.of(2025, 11, 30, 22, 0, 0, 0, ZoneId.of("UTC"))); - boolean success3 = mgr.addReservation(mgr.retrieveAccount(acct.account_number()), house); + boolean success3 = mgr.addReservation(acct, house); assert success3; - Reservation rsrv = (Reservation) cabin; + mgr.UpdateAccount(acct); + + try { - assert mgr.addReservation(acct, cabin); + mgr.addReservation(acct, cabin); + mgr.UpdateAccount(mgr.retrieveAccount(acct.account_number())); } catch (Exception e) { - System.out.println("Error: cabin already in list."); + System.out.println(e.getMessage()); } - mgr.UpdateAccount(mgr.retrieveAccount(acct.account_number())); + Account account = mgr.retrieveLoadedAccounts().getFirst(); + Reservation rsrv = account.getReservation_list().getLast(); // 6. Complete reservation that is associated with an account rsrv = mgr.retreiveReservation(cabin.getReservation_number()); diff --git a/src/java/lodge/reservationsystem/AccomodationManager.java b/src/java/lodge/reservationsystem/AccomodationManager.java index 8e063eb..3ddf052 100644 --- a/src/java/lodge/reservationsystem/AccomodationManager.java +++ b/src/java/lodge/reservationsystem/AccomodationManager.java @@ -52,8 +52,9 @@ public final class AccomodationManager { return acct; } - public boolean addReservation(final Account account, final Reservation reservation) { - return account.add(reservation); + public boolean addReservation(final Account account, final Reservation reservation) throws ReservationException { + boolean result = account.add(reservation); + return result; } public Reservation retreiveReservation(String reservation_number) { diff --git a/src/java/lodge/reservationsystem/Account.java b/src/java/lodge/reservationsystem/Account.java index 63f1649..0b26509 100644 --- a/src/java/lodge/reservationsystem/Account.java +++ b/src/java/lodge/reservationsystem/Account.java @@ -8,13 +8,17 @@ import java.nio.file.Path; import java.nio.file.Paths; public class Account { - String account_number="-99"; + String account_number = "-99"; String phone_number; Address mailing_address; EmailAddress email_address; AccountReservationList reservation_list = new AccountReservationList();; + public AccountReservationList getReservation_list() { + return reservation_list; + } + public Account( String account_number, String phone_number, @@ -26,8 +30,8 @@ public class Account { this.email_address = email_address; } - public Account(){ - + public Account() { + } @Override @@ -38,18 +42,22 @@ public class Account { sb.append("\"account_number\": \"" + account_number + "\","); sb.append("\"phone_number\": \"" + phone_number + "\","); sb.append("\"mailing_address\": " + mailing_address + ","); - sb.append("\"email_address\": " + email_address + "," ); - sb.append( this.reservation_list.toString()); + sb.append("\"email_address\": " + email_address + ","); + sb.append(this.reservation_list.toString()); sb.append("}}"); return sb.toString(); } - public boolean add(Reservation rsrv){ - return reservation_list.add(rsrv); + public boolean add(Reservation rsrv) throws ReservationException { + boolean result = reservation_list.add(rsrv); + try{ + if(!result){ + throw new ReservationException("Error Reservation already exists."); + }} catch(ReservationException e){ + }finally{} + return result; } - - // @TODO Write Account out in JSON public static void Write(Account acct) throws IOException { String dataRoot = DataRepository.getPath(); dataRoot = dataRoot + "/acc-" + acct.account_number + ".json"; @@ -59,8 +67,8 @@ public class Account { writer.write(acct.toString()); writer.flush(); } - - for (Reservation r: acct.reservation_list){ + + for (Reservation r : acct.reservation_list) { r.Write(r); } } diff --git a/src/java/lodge/reservationsystem/AccountReservationList.java b/src/java/lodge/reservationsystem/AccountReservationList.java index f1bd347..05d750c 100644 --- a/src/java/lodge/reservationsystem/AccountReservationList.java +++ b/src/java/lodge/reservationsystem/AccountReservationList.java @@ -9,11 +9,13 @@ public class AccountReservationList extends ArrayList { } public boolean add(final Reservation reservation) { - if (this.contains(reservation)){ - return false; + boolean result = true; + for(Reservation rsrv: this){ + result = rsrv.getReservation_number() == reservation.getReservation_number(); + if(result) return result; } reservation.reservation_number = AccountReservationList.reservationSerial(reservation); - return super.add(reservation); + return result = super.add(reservation); } @Override diff --git a/src/java/lodge/reservationsystem/CabinReservation.java b/src/java/lodge/reservationsystem/CabinReservation.java index 09387c1..a2b47f8 100644 --- a/src/java/lodge/reservationsystem/CabinReservation.java +++ b/src/java/lodge/reservationsystem/CabinReservation.java @@ -1,7 +1,5 @@ package lodge.reservationsystem; -import java.lang.reflect.Type; - public final class CabinReservation extends Reservation{ public final String ReservationType() { diff --git a/src/java/lodge/reservationsystem/Reservation.java b/src/java/lodge/reservationsystem/Reservation.java index e82fab7..4b64952 100644 --- a/src/java/lodge/reservationsystem/Reservation.java +++ b/src/java/lodge/reservationsystem/Reservation.java @@ -205,17 +205,6 @@ public abstract class Reservation{ } } - // @TODO read reservation out in json - public void Read(Reservation reservation) throws IOException { - String dataRoot = DataRepository.getPath(); - dataRoot = dataRoot + "/rsv-" + reservation.reservation_number + ".json"; - Path path = Paths.get(dataRoot); - - try (BufferedReader reader = Files.newBufferedReader(path, StandardCharsets.UTF_8)) { - reader.lines(); - } - } - public float calculatePricePerNight() { return 0.0f; } diff --git a/src/java/lodge/reservationsystem/ReservationException.java b/src/java/lodge/reservationsystem/ReservationException.java new file mode 100644 index 0000000..243d781 --- /dev/null +++ b/src/java/lodge/reservationsystem/ReservationException.java @@ -0,0 +1,12 @@ +package lodge.reservationsystem; + +class ReservationException extends Exception { + public ReservationException() { + super(); + } + + public ReservationException(String message) { + super(message); + } + +} \ No newline at end of file