test updates
This commit is contained in:
0
TestAccountLoadSequence.dot
Executable file
0
TestAccountLoadSequence.dot
Executable file
60
src/java/lodge/TestAccountLoad.java
Executable file
60
src/java/lodge/TestAccountLoad.java
Executable file
@@ -0,0 +1,60 @@
|
|||||||
|
/**
|
||||||
|
* license: GPLv3
|
||||||
|
* lodge.reservationsystem
|
||||||
|
*/
|
||||||
|
|
||||||
|
package lodge;
|
||||||
|
|
||||||
|
import lodge.data.Account;
|
||||||
|
import lodge.data.Address;
|
||||||
|
import lodge.data.EmailAddress;
|
||||||
|
import lodge.reservationsystem.AccomodationManager;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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 TestAccountLoad {
|
||||||
|
// 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);
|
||||||
|
}
|
||||||
|
public static void main(String[] args) throws Exception {
|
||||||
|
|
||||||
|
// Configure data repository
|
||||||
|
AccomodationManager mgr = new AccomodationManager(getRepositoryConfig.getPath());
|
||||||
|
|
||||||
|
// 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
|
||||||
|
// an error)
|
||||||
|
Test_AddAccount(mgr, mgr.newAccount("701-456-7890",
|
||||||
|
new Address("10 wilco ave", "wilco", "WY", "82801"),
|
||||||
|
new EmailAddress("wilco@wyommin.net")));
|
||||||
|
|
||||||
|
Test_AddAccount(mgr, mgr.newAccount("701-456-7890",
|
||||||
|
new Address("10 wilco ave", "wilco", "WY", "82801"),
|
||||||
|
new EmailAddress("wilco@wyommin.net")));
|
||||||
|
|
||||||
|
mgr.showAccountList();
|
||||||
|
System.out.println("Program Completed.");
|
||||||
|
}
|
||||||
|
|
||||||
|
public final static class getRepositoryConfig {
|
||||||
|
public final static String getPath() {
|
||||||
|
String home = System.getenv("HOME") != null ? System.getenv("HOME")
|
||||||
|
: System.getenv("HOMEDRIVE") + System.getenv("HOMEPATH");
|
||||||
|
return home.replace('\\', '/') + "/workspace/reservationsystem/src/resources";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -139,6 +139,8 @@ public final class TestReservations {
|
|||||||
// 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
|
||||||
// reservation
|
// reservation
|
||||||
|
System.out.println(String.format("%s Per Night Rate: %f",
|
||||||
|
rsrv.ReservationType().replace("Reservation", ""), rsrv.getPricePerNight()));
|
||||||
|
|
||||||
// 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
|
||||||
|
|||||||
8
src/java/lodge/data/AccountList.java
Normal file → Executable file
8
src/java/lodge/data/AccountList.java
Normal file → Executable file
@@ -65,10 +65,18 @@ public class AccountList extends ArrayList<Account> {
|
|||||||
return Collections.unmodifiableList(readList);
|
return Collections.unmodifiableList(readList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Show the different accounts lists of resverations
|
||||||
public void showReservationList() {
|
public void showReservationList() {
|
||||||
for (IReservation irsrv : this.getListOfReservations()) {
|
for (IReservation irsrv : this.getListOfReservations()) {
|
||||||
System.out.println(String.format("Account %s: %s, %s", irsrv.getAccountNumber(),
|
System.out.println(String.format("Account %s: %s, %s", irsrv.getAccountNumber(),
|
||||||
irsrv.getReservation_number(), irsrv.getPhysical_address().getStreet()));
|
irsrv.getReservation_number(), irsrv.getPhysical_address().getStreet()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// show the accounts
|
||||||
|
public void showAccountList() {
|
||||||
|
for (Account acct : this) {
|
||||||
|
System.out.println(String.format("Account %s", acct.getAccount_number()));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
0
src/java/lodge/data/AccountReservationList.java
Normal file → Executable file
0
src/java/lodge/data/AccountReservationList.java
Normal file → Executable file
@@ -104,4 +104,8 @@ public final class AccomodationManager {
|
|||||||
accounts.showReservationList();
|
accounts.showReservationList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void showAccountList() {
|
||||||
|
accounts.showAccountList();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -51,7 +51,14 @@ public final class CabinReservation extends Reservation {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float getPricePerNight() {
|
public float getPricePerNight() {
|
||||||
return 0.0f;
|
float calcprice = (getSquareFeet() > 900.0f) ? 120.0f + 15.0f : 120.0f;
|
||||||
|
if (getKitchen() == KitchenTypeEnum.FullKitchen) {
|
||||||
|
calcprice = calcprice + 20.0f;
|
||||||
|
}
|
||||||
|
if (getNumberOfBathRooms() > 1) {
|
||||||
|
setPrice(getPrice() + (getNumberOfBathRooms() * 5.0f));
|
||||||
|
}
|
||||||
|
return calcprice;
|
||||||
}
|
}
|
||||||
|
|
||||||
// calculate and return the reservation's price
|
// calculate and return the reservation's price
|
||||||
@@ -62,7 +69,9 @@ public final class CabinReservation extends Reservation {
|
|||||||
ZonedDateTime enddt = getReservation_end_date().truncatedTo(ChronoUnit.DAYS);
|
ZonedDateTime enddt = getReservation_end_date().truncatedTo(ChronoUnit.DAYS);
|
||||||
ZonedDateTime startdt = getReservation_start_date().truncatedTo(ChronoUnit.DAYS);
|
ZonedDateTime startdt = getReservation_start_date().truncatedTo(ChronoUnit.DAYS);
|
||||||
long days = ChronoUnit.DAYS.between(startdt, enddt);
|
long days = ChronoUnit.DAYS.between(startdt, enddt);
|
||||||
|
|
||||||
days = (days < 2) ? 1 : days - 1;
|
days = (days < 2) ? 1 : days - 1;
|
||||||
|
|
||||||
float calcprice = (getSquareFeet() > 900.0f) ? 120.0f + 15.0f : 120.0f;
|
float calcprice = (getSquareFeet() > 900.0f) ? 120.0f + 15.0f : 120.0f;
|
||||||
if (getKitchen() == KitchenTypeEnum.FullKitchen) {
|
if (getKitchen() == KitchenTypeEnum.FullKitchen) {
|
||||||
calcprice = calcprice + 20.0f;
|
calcprice = calcprice + 20.0f;
|
||||||
|
|||||||
@@ -73,7 +73,11 @@ public final class HotelReservation extends Reservation {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float getPricePerNight() {
|
public float getPricePerNight() {
|
||||||
return 0.0f;
|
float calcprice = (getSquareFeet() > 900.0f) ? 120.0f + 15.0f : 120.0f;
|
||||||
|
if (getKitchen() == KitchenTypeEnum.FullKitchen) {
|
||||||
|
calcprice = calcprice + 10.0f;
|
||||||
|
}
|
||||||
|
return calcprice;
|
||||||
}
|
}
|
||||||
|
|
||||||
// calculate and return the reservation's price
|
// calculate and return the reservation's price
|
||||||
|
|||||||
@@ -71,7 +71,9 @@ public final class HouseReservation extends Reservation {
|
|||||||
ZonedDateTime enddt = getReservation_end_date().truncatedTo(ChronoUnit.DAYS);
|
ZonedDateTime enddt = getReservation_end_date().truncatedTo(ChronoUnit.DAYS);
|
||||||
ZonedDateTime startdt = getReservation_start_date().truncatedTo(ChronoUnit.DAYS);
|
ZonedDateTime startdt = getReservation_start_date().truncatedTo(ChronoUnit.DAYS);
|
||||||
long days = ChronoUnit.DAYS.between(startdt, enddt);
|
long days = ChronoUnit.DAYS.between(startdt, enddt);
|
||||||
|
|
||||||
days = (days < 2) ? 1 : days - 1;
|
days = (days < 2) ? 1 : days - 1;
|
||||||
|
|
||||||
float calcprice = getPricePerNight() * days;
|
float calcprice = getPricePerNight() * days;
|
||||||
return calcprice;
|
return calcprice;
|
||||||
}
|
}
|
||||||
|
|||||||
2
src/resources/acc-A1450981765.json
Normal file → Executable file
2
src/resources/acc-A1450981765.json
Normal file → Executable file
@@ -1 +1 @@
|
|||||||
{ "Account":{"account_number": "A1450981765","phone_number": "701-456-7890","mailing_address": { "Address":{"street": "10 wilco ave","city": "wilco","state": "WY","zip": "82801"}},"email_address": { "EmailAddress":{"email": "wilco@wyommin.net"}},"reservations":[{"CabinReservation":{"reservation_number":"R0535276622"}},{"HouseReservation":{"reservation_number":"R0499811708"}}]}}
|
{ "Account":{"account_number": "A1450981765","phone_number": "701-456-7890","mailing_address": { "Address":{"street": "10 wilco ave","city": "wilco","state": "WY","zip": "82801"}},"email_address": { "EmailAddress":{"email": "wilco@wyommin.net"}},"reservations":[]}}
|
||||||
0
src/resources/acc-A2074212339.json
Normal file → Executable file
0
src/resources/acc-A2074212339.json
Normal file → Executable file
0
src/resources/rsv-R0123087344.json
Normal file → Executable file
0
src/resources/rsv-R0123087344.json
Normal file → Executable file
0
src/resources/rsv-R0499811708.json
Normal file → Executable file
0
src/resources/rsv-R0499811708.json
Normal file → Executable file
0
src/resources/rsv-R0535276622.json
Normal file → Executable file
0
src/resources/rsv-R0535276622.json
Normal file → Executable file
0
src/resources/rsv-R2042828431.json
Normal file → Executable file
0
src/resources/rsv-R2042828431.json
Normal file → Executable file
77
uml/sequencediagram.dot
Executable file
77
uml/sequencediagram.dot
Executable file
@@ -0,0 +1,77 @@
|
|||||||
|
digraph TestAccountLoadSequence {
|
||||||
|
{
|
||||||
|
// Make sure they're on the same row
|
||||||
|
rank=same;
|
||||||
|
// Style the actor nodes
|
||||||
|
node [shape=box];
|
||||||
|
|
||||||
|
actor1_top [label="TestAddAccount"];
|
||||||
|
actor2_top [label="AccomondationManager"];
|
||||||
|
actor3_top [label="AccountList"];
|
||||||
|
|
||||||
|
// Tie them together in the right order
|
||||||
|
edge [style = invis];
|
||||||
|
actor1_top -> actor2_top -> actor3_top;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Define the actor nodes in the bottom. This is a copy paste
|
||||||
|
//of the top subgraph - s/top/bottom/g
|
||||||
|
{
|
||||||
|
rank=same;
|
||||||
|
node [shape=box];
|
||||||
|
|
||||||
|
actor1_bottom [label="TestAddAccount"];
|
||||||
|
actor2_bottom [label="AccomondationManager"];
|
||||||
|
actor3_bottom [label="AccountList"];
|
||||||
|
|
||||||
|
edge [style = invis];
|
||||||
|
actor1_bottom -> actor2_bottom -> actor3_bottom;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Style the event nodes
|
||||||
|
node [shape=point];
|
||||||
|
edge [arrowhead=none];
|
||||||
|
|
||||||
|
// Define the event nodes. Here they are prefixed with
|
||||||
|
// the actor name.
|
||||||
|
actor1_event1
|
||||||
|
actor1_event3
|
||||||
|
|
||||||
|
// Now we connect each of the events like pearls on a string.
|
||||||
|
actor1_top ->
|
||||||
|
actor1_event1 ->
|
||||||
|
actor1_event3 ->
|
||||||
|
actor1_bottom;
|
||||||
|
|
||||||
|
// Repeat. The event above has a corresponding node in the
|
||||||
|
// destination actor.
|
||||||
|
actor2_event1
|
||||||
|
actor2_event2
|
||||||
|
|
||||||
|
actor2_top ->
|
||||||
|
actor2_event1 ->
|
||||||
|
actor2_event2 ->
|
||||||
|
actor2_bottom;
|
||||||
|
|
||||||
|
// And one more time.
|
||||||
|
actor3_event2
|
||||||
|
actor3_event3
|
||||||
|
|
||||||
|
actor3_top ->
|
||||||
|
actor3_event2 ->
|
||||||
|
actor3_event3 ->
|
||||||
|
actor3_bottom;
|
||||||
|
|
||||||
|
// We connect each event src/dest. First we make sure they
|
||||||
|
// are vertically aligned.
|
||||||
|
{rank=same; actor1_event1 actor2_event1}
|
||||||
|
{rank=same; actor2_event2 actor3_event2}
|
||||||
|
{ranke=same; actor3_event3 actor1_event3}
|
||||||
|
|
||||||
|
// Finally, we connect the dots.
|
||||||
|
edge [constraint=false, arrowhead=normal];
|
||||||
|
|
||||||
|
actor1_event1 -> actor2_event1 [xlabel="AddAccount(Acount)"];
|
||||||
|
actor2_event2 -> actor3_event2 [xlabel="add"];
|
||||||
|
actor3_event3 -> actor1_event3 [xlabel="return"];
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user