update
This commit is contained in:
Binary file not shown.
@@ -7,104 +7,110 @@ package lodge;
|
|||||||
|
|
||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
import java.time.ZonedDateTime;
|
import java.time.ZonedDateTime;
|
||||||
|
import java.time.temporal.ChronoUnit;
|
||||||
|
|
||||||
import lodge.data.Account;
|
import lodge.data.Account;
|
||||||
import lodge.data.Address;
|
import lodge.data.Address;
|
||||||
import lodge.data.DuplicateObjectException;
|
import lodge.data.DuplicateObjectException;
|
||||||
import lodge.data.EmailAddress;
|
import lodge.data.EmailAddress;
|
||||||
|
|
||||||
import lodge.data.ReservationStatusEnum;
|
import lodge.data.ReservationStatusEnum;
|
||||||
|
import lodge.reservation.IReservation;
|
||||||
|
import lodge.reservation.Reservation;
|
||||||
import lodge.reservationsystem.AccomodationManager;
|
import lodge.reservationsystem.AccomodationManager;
|
||||||
import lodge.reservationsystem.CabinReservation;
|
import lodge.reservationsystem.CabinReservation;
|
||||||
import lodge.reservationsystem.HotelReservation;
|
import lodge.reservationsystem.HotelReservation;
|
||||||
import lodge.reservationsystem.HouseReservation;
|
import lodge.reservationsystem.HouseReservation;
|
||||||
import lodge.reservation.Reservation;
|
|
||||||
import lodge.reservation.IReservation;
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The Tests for the ReservationSystem Module
|
||||||
|
*
|
||||||
|
* <p>
|
||||||
|
* This class main function acts as a driver function to run the test functions.
|
||||||
|
* </p>
|
||||||
|
*
|
||||||
|
* @author Sherwin Price
|
||||||
|
* @version 1.0
|
||||||
|
* @since 2025
|
||||||
|
*/
|
||||||
public final class TestReservations {
|
public final class TestReservations {
|
||||||
|
// Request that Manager updates specific account’s files with data stored in
|
||||||
|
static void Test_AddAccount(AccomodationManager mgr, Account acct) throws Exception {
|
||||||
|
mgr.AddAccount(acct);
|
||||||
|
|
||||||
|
// 4. Request that Manager updates specific account’s files with data stored in
|
||||||
|
// memory
|
||||||
|
mgr.UpdateAccount(acct);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void Test_AddReservation(AccomodationManager mgr, Account acct, Reservation rsrv, Address mlAddr,
|
||||||
|
ZonedDateTime zdtStrt)
|
||||||
|
throws Exception {
|
||||||
|
|
||||||
|
rsrv.setMailing_address(mlAddr);
|
||||||
|
rsrv.setNumberOfBeds(2);
|
||||||
|
rsrv.setNumberOfFloors(1);
|
||||||
|
rsrv.setNumberOfBedRooms(1);
|
||||||
|
rsrv.setSquareFeet(450);
|
||||||
|
rsrv.setReservation_start_date(zdtStrt);
|
||||||
|
rsrv.setReservation_end_date(zdtStrt.plus(4, ChronoUnit.DAYS));
|
||||||
|
|
||||||
|
mgr.addReservation(acct, rsrv);
|
||||||
|
|
||||||
|
mgr.UpdateAccount(acct);
|
||||||
|
}
|
||||||
|
|
||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
|
|
||||||
|
// Configure data repository
|
||||||
AccomodationManager mgr = new AccomodationManager(getRepositoryConfig.getPath());
|
AccomodationManager mgr = new AccomodationManager(getRepositoryConfig.getPath());
|
||||||
// 1. Get the list of loaded accounts from Manager
|
|
||||||
|
|
||||||
|
// 1. Get the list of loaded accounts from Manager
|
||||||
mgr.loadAll();
|
mgr.loadAll();
|
||||||
|
|
||||||
// 2. Retrieve a loaded account object that matches a specific account number
|
// 2. Retrieve a loaded account object that matches a specific account number
|
||||||
|
|
||||||
mgr.retrieveAccount("A1450981765");
|
mgr.retrieveAccount("A1450981765");
|
||||||
|
|
||||||
// 3. Add new account object to the list managed by Manager (if account object
|
// 3. Add new account object to the list managed by Manager (if account object
|
||||||
// already exists on add action with the same account number, it is considered
|
// already exists on add action with the same account number, it is considered
|
||||||
// an error)
|
// an error)
|
||||||
|
|
||||||
Account acct = mgr.newAccount("701-456-7890",
|
Test_AddAccount(mgr, mgr.newAccount("701-456-7890",
|
||||||
new Address("10 wilco ave", "wilco", "WY", "82801"),
|
new Address("10 wilco ave", "wilco", "WY", "82801"),
|
||||||
new EmailAddress("wilco@wyommin.net"));
|
new EmailAddress("wilco@wyommin.net")));
|
||||||
mgr.AddAccount(acct);
|
|
||||||
|
|
||||||
// 4. Request that Manager updates specific account’s files with data stored in
|
Test_AddAccount(mgr, mgr.newAccount("301-356-3890",
|
||||||
// memory
|
|
||||||
mgr.UpdateAccount(acct);
|
|
||||||
|
|
||||||
Account acct2 = mgr.newAccount("301-356-3890",
|
|
||||||
new Address("30 Amstadam ave", "New York", "NY", "12010"),
|
new Address("30 Amstadam ave", "New York", "NY", "12010"),
|
||||||
new EmailAddress("newbee952@aol.com"));
|
new EmailAddress("newbee952@aol.com")));
|
||||||
mgr.AddAccount(acct2);
|
|
||||||
// 5. Add draft lodging reservation to an account (if reservation object already
|
// 5. Add draft lodging reservation to an account (if reservation object already
|
||||||
// exists with the same reservation number, it is considered an error)
|
// exists with the same reservation number, it is considered an error)
|
||||||
|
Account acct2 = mgr.retrieveLoadedAccounts().get(1);
|
||||||
|
Test_AddReservation(mgr, acct2,
|
||||||
|
new HotelReservation(
|
||||||
|
new Address("400 hotel ave", "Maryland City", "MD", "20723")),
|
||||||
|
new Address("400 hotel ave", "Maryland City", "MD", "20723"),
|
||||||
|
ZonedDateTime.of(2025, 9, 05, 10, 0, 0, 0, ZoneId.of("UTC")));
|
||||||
|
|
||||||
HotelReservation hotel = new HotelReservation(
|
Account acct1 = mgr.retrieveLoadedAccounts().get(0);
|
||||||
new Address("400 hotel ave", "Maryland City", "CA", "20723"));
|
Test_AddReservation(mgr, acct2,
|
||||||
hotel.setMailing_address(new Address("400 hotel ave", "Maryland City", "MD", "20723"));
|
new CabinReservation(new Address("30 cabin ave", "Carnelian", "CA", "96140")),
|
||||||
hotel.setNumberOfBeds(2);
|
new Address("30 cabin ave", "Carnelian Bay", "CA", "96140"),
|
||||||
hotel.setNumberOfFloors(1);
|
ZonedDateTime.of(2025, 9, 05, 10, 0, 0, 0, ZoneId.of("UTC")));
|
||||||
hotel.setNumberOfBedRooms(1);
|
|
||||||
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, 07, 07, 22, 0, 0, 0, ZoneId.of("UTC")));
|
|
||||||
mgr.addReservation(acct, hotel);
|
|
||||||
|
|
||||||
mgr.UpdateAccount(acct);
|
Test_AddReservation(mgr, acct1,
|
||||||
|
new CabinReservation(new Address("40 cabin ave", "Carnelian", "CA", "96140")),
|
||||||
|
new Address("40 cabin ave", "Carnelian Bay", "CA", "96140"),
|
||||||
|
ZonedDateTime.of(2025, 9, 05, 10, 0, 0, 0, ZoneId.of("UTC")));
|
||||||
|
|
||||||
CabinReservation cabin2 = new CabinReservation(new Address("30 cabin ave", "Carnelian", "CA", "96140"));
|
Test_AddReservation(mgr, acct1,
|
||||||
cabin2.setMailing_address(new Address("30 cabin ave", "Carnelian Bay", "CA", "96140"));
|
new HouseReservation(new Address("3000 Osage ave", "GreenBelt", "MD", "20740")),
|
||||||
cabin2.setNumberOfBeds(4);
|
new Address("40012 College ave", "College Park", "MD", "20740"),
|
||||||
cabin2.setNumberOfFloors(2);
|
ZonedDateTime.of(2025, 9, 05, 10, 0, 0, 0, ZoneId.of("UTC")));
|
||||||
cabin2.setNumberOfBedRooms(3);
|
|
||||||
cabin2.setSquareFeet(806);
|
|
||||||
cabin2.setReservation_start_date(ZonedDateTime.of(2025, 9, 05, 10, 0, 0, 0, ZoneId.of("UTC")));
|
|
||||||
cabin2.setReservation_end_date(ZonedDateTime.of(2025, 11, 30, 22, 0, 0, 0, ZoneId.of("UTC")));
|
|
||||||
mgr.addReservation(acct2, cabin2);
|
|
||||||
mgr.UpdateAccount(acct2);
|
|
||||||
|
|
||||||
CabinReservation cabin = new CabinReservation(new Address("40 cabin ave", "Carnelian", "CA", "96140"));
|
|
||||||
cabin.setMailing_address(new Address("40 cabin ave", "Carnelian Bay", "CA", "96140"));
|
|
||||||
cabin.setNumberOfBeds(4);
|
|
||||||
cabin.setNumberOfFloors(2);
|
|
||||||
cabin.setNumberOfBedRooms(3);
|
|
||||||
cabin.setSquareFeet(806);
|
|
||||||
cabin.setReservation_start_date(ZonedDateTime.of(2025, 9, 05, 10, 0, 0, 0, ZoneId.of("UTC")));
|
|
||||||
cabin.setReservation_end_date(ZonedDateTime.of(2025, 11, 30, 22, 0, 0, 0, ZoneId.of("UTC")));
|
|
||||||
mgr.addReservation(acct, cabin);
|
|
||||||
|
|
||||||
mgr.UpdateAccount(acct);
|
|
||||||
|
|
||||||
HouseReservation house = new HouseReservation(
|
|
||||||
new Address("3000 Osage ave", "GreenBelt", "MD", "20740"));
|
|
||||||
house.setMailing_address(new Address("40012 College ave", "College Park", "MD", "20740"));
|
|
||||||
house.setNumberOfBeds(4);
|
|
||||||
house.setNumberOfFloors(3);
|
|
||||||
house.setNumberOfBedRooms(3);
|
|
||||||
house.setSquareFeet(1400);
|
|
||||||
house.setReservation_start_date(ZonedDateTime.of(2025, 11, 5, 10, 0, 0, 0, ZoneId.of("UTC")));
|
|
||||||
house.setReservation_end_date(ZonedDateTime.of(2025, 11, 15, 22, 0, 0, 0, ZoneId.of("UTC")));
|
|
||||||
mgr.addReservation(acct, house);
|
|
||||||
|
|
||||||
mgr.UpdateAccount(acct);
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if( mgr.addReservation(acct, cabin) ){
|
IReservation irsrv = acct1.getAllReservations().next();
|
||||||
mgr.UpdateAccount(mgr.retrieveAccount(acct.getAccount_number()));
|
if (mgr.addReservation(acct1, acct1.findReservation(irsrv.getReservation_number()))) {
|
||||||
|
mgr.UpdateAccount(mgr.retrieveAccount(irsrv.getAccountNumber()));
|
||||||
}
|
}
|
||||||
} catch (DuplicateObjectException e) {
|
} catch (DuplicateObjectException e) {
|
||||||
System.out.println(e.getMessage());
|
System.out.println(e.getMessage());
|
||||||
@@ -113,21 +119,22 @@ public final class TestReservations {
|
|||||||
Account account = mgr.retrieveLoadedAccounts().get(0);
|
Account account = mgr.retrieveLoadedAccounts().get(0);
|
||||||
|
|
||||||
// 6. Complete reservation that is associated with an account
|
// 6. Complete reservation that is associated with an account
|
||||||
Reservation rsrv = account.findReservation(house.getReservation_number());
|
IReservation irsrv = account.getAllReservations().next();
|
||||||
house.Change(rsrv, ReservationStatusEnum.Completed);
|
Reservation rsrv = account.findReservation(irsrv.getReservation_number());
|
||||||
mgr.UpdateAccount(mgr.retrieveAccount(acct.getAccount_number()));
|
rsrv.Change(rsrv, ReservationStatusEnum.Completed);
|
||||||
|
mgr.UpdateAccount(mgr.retrieveAccount(account.getAccount_number()));
|
||||||
|
|
||||||
// 7. Cancel reservation that is associated with an account
|
// 7. Cancel reservation that is associated with an account
|
||||||
account = mgr.retrieveLoadedAccounts().getLast();
|
account = mgr.retrieveLoadedAccounts().getLast();
|
||||||
IReservation ir = account.getAllReservations().next();
|
IReservation ir = account.getAllReservations().next();
|
||||||
rsrv = (Reservation)ir;
|
rsrv = (Reservation) ir;
|
||||||
rsrv.Change(rsrv, ReservationStatusEnum.Canceled);
|
rsrv.Change(rsrv, ReservationStatusEnum.Canceled);
|
||||||
mgr.UpdateAccount(mgr.retrieveAccount(rsrv.getAccountNumber()));
|
mgr.UpdateAccount(mgr.retrieveAccount(rsrv.getAccountNumber()));
|
||||||
|
|
||||||
// 8. Change reservation values that can be changed (if reservation is
|
// 8. Change reservation values that can be changed (if reservation is
|
||||||
// cancelled, completed, or for past date, it is considered an error)
|
// cancelled, completed, or for past date, it is considered an error)
|
||||||
rsrv.Change(rsrv, ReservationStatusEnum.Completed);
|
rsrv.Change(rsrv, ReservationStatusEnum.Completed);
|
||||||
house.update(house);
|
rsrv.update(rsrv);
|
||||||
|
|
||||||
// 9. Request for price per night to be calculated and returned for a
|
// 9. Request for price per night to be calculated and returned for a
|
||||||
// per night
|
// per night
|
||||||
@@ -135,8 +142,8 @@ public final class TestReservations {
|
|||||||
|
|
||||||
// 10. Request for total reservation price to be calculated and returned for
|
// 10. Request for total reservation price to be calculated and returned for
|
||||||
// specific reservation
|
// specific reservation
|
||||||
account.findReservation(house.getReservation_number());
|
rsrv = account.findReservation(rsrv.getReservation_number());
|
||||||
house.calculatePrice();
|
rsrv.calculatePrice();
|
||||||
|
|
||||||
mgr.showReservationList();
|
mgr.showReservationList();
|
||||||
|
|
||||||
|
|||||||
9
src/resources/acc-A1450981765.json
Normal file → Executable file
9
src/resources/acc-A1450981765.json
Normal file → Executable file
@@ -17,8 +17,13 @@
|
|||||||
},
|
},
|
||||||
"reservations": [
|
"reservations": [
|
||||||
{
|
{
|
||||||
"HotelReservation": {
|
"CabinReservation": {
|
||||||
"reservation_number": "R0123077641"
|
"reservation_number": "R0535276622"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HouseReservation": {
|
||||||
|
"reservation_number": "R0499811708"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
42
src/resources/acc-A2074212339.json
Normal file → Executable file
42
src/resources/acc-A2074212339.json
Normal file → Executable file
@@ -1 +1,41 @@
|
|||||||
{ "Account":{"account_number": "A2074212339","phone_number": "301-356-3890","mailing_address": { "Address":{"street": "30 Amstadam ave","city": "New York","state": "NY","zip": "12010"}},"email_address": { "EmailAddress":{"email": "newbee952@aol.com"}},"reservations":[{"CabinReservation":{"reservation_number":"R2042828431"}}]}}
|
{
|
||||||
|
"Account": {
|
||||||
|
"account_number": "A2074212339",
|
||||||
|
"phone_number": "301-356-3890",
|
||||||
|
"mailing_address": {
|
||||||
|
"Address": {
|
||||||
|
"street": "30 Amstadam ave",
|
||||||
|
"city": "New York",
|
||||||
|
"state": "NY",
|
||||||
|
"zip": "12010"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"email_address": {
|
||||||
|
"EmailAddress": {
|
||||||
|
"email": "newbee952@aol.com"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"reservations": [
|
||||||
|
{
|
||||||
|
"HotelReservation": {
|
||||||
|
"reservation_number": "R0123087344"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"CabinReservation": {
|
||||||
|
"reservation_number": "R2042828431"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HotelReservation": {
|
||||||
|
"reservation_number": "R0123087344"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"CabinReservation": {
|
||||||
|
"reservation_number": "R2042828431"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1 +0,0 @@
|
|||||||
{ "HotelReservation":{"reservation_type": "HotelReservation","reservation_number": "R0123077641","reservation_status": "Draft","reservation_start_date": "2025-07-05T10:00Z[UTC]","reservation_end_date": "2025-07-07T22:00Z[UTC]","account_number": "A1450981765","physical_address": { "Address":{"street": "400 hotel ave","city": "Maryland City","state": "CA","zip": "20723"}},"mailing_address": { "Address":{"street": "400 hotel ave","city": "Maryland City","state": "MD","zip": "20723"}},"kitchen": "Kitchenette","numberOfBeds": "2","numberOfBedRooms": "1","numberOfBathRooms": "1","numberOfFloors": "1","squareFeet": "450","price": "290.0"}}
|
|
||||||
1
src/resources/rsv-R0123087344.json
Executable file
1
src/resources/rsv-R0123087344.json
Executable file
@@ -0,0 +1 @@
|
|||||||
|
{ "HotelReservation":{"reservation_type": "HotelReservation","reservation_number": "R0123087344","reservation_status": "Draft","reservation_start_date": "2025-09-05T10:00Z[UTC]","reservation_end_date": "2025-09-09T10:00Z[UTC]","account_number": "A2074212339","physical_address": { "Address":{"street": "400 hotel ave","city": "Maryland City","state": "MD","zip": "20723"}},"mailing_address": { "Address":{"street": "400 hotel ave","city": "Maryland City","state": "MD","zip": "20723"}},"kitchen": "Kitchenette","numberOfBeds": "2","numberOfBedRooms": "1","numberOfBathRooms": "1","numberOfFloors": "1","squareFeet": "450","price": "410.0"}}
|
||||||
2
src/resources/rsv-R0499811708.json
Normal file → Executable file
2
src/resources/rsv-R0499811708.json
Normal file → Executable file
@@ -1 +1 @@
|
|||||||
{ "HouseReservation":{"reservation_type": "HouseReservation","reservation_number": "R0499811708","reservation_status": "Completed","reservation_start_date": "2025-11-05T10:00Z[UTC]","reservation_end_date": "2025-11-15T22:00Z[UTC]","account_number": "A1450981765","physical_address": { "Address":{"street": "3000 Osage ave","city": "GreenBelt","state": "MD","zip": "20740"}},"mailing_address": { "Address":{"street": "40012 College ave","city": "College Park","state": "MD","zip": "20740"}},"kitchen": "Kitchenette","numberOfBeds": "4","numberOfBedRooms": "3","numberOfBathRooms": "1","numberOfFloors": "3","squareFeet": "1400","price": "1215.0"}}
|
{ "HouseReservation":{"reservation_type": "HouseReservation","reservation_number": "R0499811708","reservation_status": "Draft","reservation_start_date": "2025-09-05T10:00Z[UTC]","reservation_end_date": "2025-09-09T10:00Z[UTC]","account_number": "A1450981765","physical_address": { "Address":{"street": "3000 Osage ave","city": "GreenBelt","state": "MD","zip": "20740"}},"mailing_address": { "Address":{"street": "40012 College ave","city": "College Park","state": "MD","zip": "20740"}},"kitchen": "Kitchenette","numberOfBeds": "2","numberOfBedRooms": "1","numberOfBathRooms": "1","numberOfFloors": "1","squareFeet": "450","price": "360.0"}}
|
||||||
2
src/resources/rsv-R0535276622.json
Normal file → Executable file
2
src/resources/rsv-R0535276622.json
Normal file → Executable file
@@ -1 +1 @@
|
|||||||
{ "CabinReservation":{"reservation_type": "CabinReservation","reservation_number": "R0535276622","reservation_status": "Draft","reservation_start_date": "2025-09-05T10:00Z[UTC]","reservation_end_date": "2025-11-30T22:00Z[UTC]","account_number": "A1450981765","physical_address": { "Address":{"street": "40 cabin ave","city": "Carnelian","state": "CA","zip": "96140"}},"mailing_address": { "Address":{"street": "40 cabin ave","city": "Carnelian Bay","state": "CA","zip": "96140"}},"kitchen": "Kitchenette","numberOfBeds": "4","numberOfBedRooms": "3","numberOfBathRooms": "1","numberOfFloors": "2","squareFeet": "806","price": "10200.0"}}
|
{ "CabinReservation":{"reservation_type": "CabinReservation","reservation_number": "R0535276622","reservation_status": "Draft","reservation_start_date": "2025-09-05T10:00Z[UTC]","reservation_end_date": "2025-09-09T10:00Z[UTC]","account_number": "A1450981765","physical_address": { "Address":{"street": "40 cabin ave","city": "Carnelian","state": "CA","zip": "96140"}},"mailing_address": { "Address":{"street": "40 cabin ave","city": "Carnelian Bay","state": "CA","zip": "96140"}},"kitchen": "Kitchenette","numberOfBeds": "2","numberOfBedRooms": "1","numberOfBathRooms": "1","numberOfFloors": "1","squareFeet": "450","price": "360.0"}}
|
||||||
2
src/resources/rsv-R2042828431.json
Normal file → Executable file
2
src/resources/rsv-R2042828431.json
Normal file → Executable file
@@ -1 +1 @@
|
|||||||
{ "CabinReservation":{"reservation_type": "CabinReservation","reservation_number": "R2042828431","reservation_status": "Canceled","reservation_start_date": "2025-09-05T10:00Z[UTC]","reservation_end_date": "2025-11-30T22:00Z[UTC]","account_number": "A2074212339","physical_address": { "Address":{"street": "30 cabin ave","city": "Carnelian","state": "CA","zip": "96140"}},"mailing_address": { "Address":{"street": "30 cabin ave","city": "Carnelian Bay","state": "CA","zip": "96140"}},"kitchen": "Kitchenette","numberOfBeds": "4","numberOfBedRooms": "3","numberOfBathRooms": "1","numberOfFloors": "2","squareFeet": "806","price": "10200.0"}}
|
{ "CabinReservation":{"reservation_type": "CabinReservation","reservation_number": "R2042828431","reservation_status": "Draft","reservation_start_date": "2025-09-05T10:00Z[UTC]","reservation_end_date": "2025-09-09T10:00Z[UTC]","account_number": "A2074212339","physical_address": { "Address":{"street": "30 cabin ave","city": "Carnelian","state": "CA","zip": "96140"}},"mailing_address": { "Address":{"street": "30 cabin ave","city": "Carnelian Bay","state": "CA","zip": "96140"}},"kitchen": "Kitchenette","numberOfBeds": "2","numberOfBedRooms": "1","numberOfBathRooms": "1","numberOfFloors": "1","squareFeet": "450","price": "360.0"}}
|
||||||
Reference in New Issue
Block a user