This commit is contained in:
2025-09-03 12:25:10 -04:00
parent 6ed7e47640
commit b019914b03
7 changed files with 54 additions and 38 deletions

View File

@@ -39,7 +39,7 @@ public final class TestReservations {
// 4. Request that Manager updates specific accounts 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());

View File

@@ -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) {

View File

@@ -15,6 +15,10 @@ public class Account {
AccountReservationList reservation_list = new AccountReservationList();;
public AccountReservationList getReservation_list() {
return reservation_list;
}
public Account(
String account_number,
String phone_number,
@@ -44,12 +48,16 @@ public class Account {
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";

View File

@@ -9,11 +9,13 @@ public class AccountReservationList extends ArrayList<Reservation> {
}
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

View File

@@ -1,7 +1,5 @@
package lodge.reservationsystem;
import java.lang.reflect.Type;
public final class CabinReservation extends Reservation{
public final String ReservationType() {

View File

@@ -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;
}

View File

@@ -0,0 +1,12 @@
package lodge.reservationsystem;
class ReservationException extends Exception {
public ReservationException() {
super();
}
public ReservationException(String message) {
super(message);
}
}