updates cleanup.

This commit is contained in:
2025-09-10 17:54:48 -04:00
parent 33f3a52b3e
commit c29f078808
7 changed files with 187 additions and 179 deletions

View File

@@ -41,7 +41,8 @@ public final class TestReservations {
// 5. Add draft lodging reservation to an account (if reservation object already
// exists with the same reservation number, it is considered an error)
HotelReservation hotel = new HotelReservation(new Address("400 hotel ave", "Maryland City", "CA", "20723"));
HotelReservation hotel = new HotelReservation(
new Address("400 hotel ave", "Maryland City", "CA", "20723"));
hotel.setMailing_address(new Address("400 hotel ave", "Maryland City", "MD", "20723"));
hotel.setNumberOfBeds(2);
hotel.setNumberOfFloors(1);
@@ -67,7 +68,8 @@ public final class TestReservations {
mgr.UpdateAccount(acct);
HouseReservation house = new HouseReservation(new Address("3000 Osage ave", "GreenBelt", "MD", "20740"));
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);
@@ -80,7 +82,6 @@ public final class TestReservations {
mgr.UpdateAccount(acct);
try {
mgr.addReservation(acct, cabin);
mgr.UpdateAccount(mgr.retrieveAccount(acct.getAccount_number()));
@@ -89,8 +90,8 @@ public final class TestReservations {
}
Account account = mgr.retrieveLoadedAccounts().getFirst();
Reservation rsrv = account.getReservation_list().getLast();
Reservation rsrv = account.findReservation(house.getReservation_number());
// 6. Complete reservation that is associated with an account
rsrv = mgr.retreiveReservation(rsrv.getReservation_number());
rsrv.Change(rsrv, ReservationStatusEnum.Completed);
@@ -100,28 +101,27 @@ public final class TestReservations {
rsrv = mgr.retreiveReservation(rsrv.getReservation_number());
rsrv.Change(rsrv, ReservationStatusEnum.Canceled);
mgr.UpdateAccount(mgr.retrieveAccount(acct.getAccount_number()));
/*
*
* if (rsrv != null) {
* // 8. Change reservation values that can be changed (if reservation is
* // cancelled, completed, or for past date, it is considered an error)
* rsrv = Reservation.update(rsrv);
*
* // 9. Request for price per night to be calculated and returned for a
* specific
* // reservation
*
* rsrv = Reservation.calculatePricePerNight(rsrv);
* // 10. Request for total reservation price to be calculated and returned for
* a
* // specific reservation
* }
*/
// 8. Change reservation values that can be changed (if reservation is
// cancelled, completed, or for past date, it is considered an error)
rsrv.update(rsrv);
// 9. Request for price per night to be calculated and returned for a
// per night
// reservation
// 10. Request for total reservation price to be calculated and returned for
// specific reservation
rsrv = account.findReservation(house.getReservation_number());
rsrv.calculatePrice();
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");
String home = System.getenv("HOME") != null ? System.getenv("HOME")
: System.getenv("HOMEDRIVE") + System.getenv("HOMEPATH");
return home.replace('\\', '/') + "/workspace/reservationsystem/src/resources";
}
}

View File

@@ -30,19 +30,15 @@ public class Account {
private final AccountReservationList reservation_list = new AccountReservationList();;
public final AccountReservationList getReservation_list() {
return reservation_list;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("{ \"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("\"account_number\": \"").append(account_number).append("\",");
sb.append("\"phone_number\": \"").append(phone_number).append("\",");
sb.append("\"mailing_address\": ").append(mailing_address).append(",");
sb.append("\"email_address\": ").append(email_address).append(",");
sb.append(this.reservation_list.toString());
sb.append("}}");
return sb.toString();
@@ -149,7 +145,6 @@ public class Account {
this.setEmail_address(acct.email_address);
this.setPhone_number(acct.phone_number);
this.setMailing_address(acct.mailing_address);
this.getReservation_list().update(acct.getReservation_list());
}
}

View File

@@ -5,7 +5,7 @@ import java.util.ArrayList;
public class AccountReservationList extends ArrayList<Reservation> {
private static String reservationSerial(Reservation reservation) {
return String.format("R%010d", Math.abs(java.util.Objects.hash(reservation.physical_address)));
return String.format("R%010d", Math.abs(java.util.Objects.hash(reservation.getPhysical_address())));
}
@Override
@@ -19,7 +19,7 @@ public class AccountReservationList extends ArrayList<Reservation> {
try {
result = reservation.checkValid();
} catch (ReservationException ex) {
return false;
result = false;
}
if(result){
reservation.setReservation_number(AccountReservationList.reservationSerial(reservation));

View File

@@ -7,29 +7,29 @@ public final class CabinReservation extends Reservation{
CabinReservation(){
super();
setType('C');
}
public CabinReservation(final Address physical_address) {
numberOfBeds = 1;
kitchen = KitchenEnum.Kitchenette;
this.physical_address = new Address();
this.physical_address.setStreet(physical_address.getStreet());
this.physical_address.setCity(physical_address.getCity());
this.physical_address.setState(physical_address.getState());
this.physical_address.setZip(physical_address.getZip());
setNumberOfBeds( 1);
setKitchen( KitchenEnum.Kitchenette );
this.setPhysical_address(new Address());
this.getPhysical_address().setStreet(physical_address.getStreet());
this.getPhysical_address().setCity(physical_address.getCity());
this.getPhysical_address().setState(physical_address.getState());
this.getPhysical_address().setZip(physical_address.getZip());
}
public final String ReservationType() {
type='C';
return "CabinReservation";
}
@Override
public boolean checkValid() throws IllegalArgumentException {
boolean result = false;
if (physical_address == null) {
if (getPhysical_address() == null) {
throw new IllegalArgumentException("not valid, physical_address");
}
if (mailing_address == null) {
if (getMailing_address() == null) {
throw new IllegalArgumentException("not valid, mailing_address");
}
result = true;
@@ -40,19 +40,19 @@ public final class CabinReservation extends Reservation{
// Cabin price plus additional fee of $20 for full kitchen and $5 for each additional bathroom
@Override
public float calculatePrice() {
ZonedDateTime enddt = reservation_end_date.truncatedTo(ChronoUnit.DAYS);
ZonedDateTime startdt = reservation_start_date.truncatedTo(ChronoUnit.DAYS);
ZonedDateTime enddt = getReservation_end_date().truncatedTo(ChronoUnit.DAYS);
ZonedDateTime startdt = getReservation_start_date().truncatedTo(ChronoUnit.DAYS);
long days = ChronoUnit.DAYS.between( startdt ,enddt);
days = ( days < 2 ) ? 1: days - 1;
price = (squareFeet > 900.0f) ? 120.0f + 15.0f : 120.0f;
if ( kitchen == KitchenEnum.FullKitchen ){
price = price + 20.0f ;
float calcprice = (getSquareFeet() > 900.0f) ? 120.0f + 15.0f : 120.0f;
if ( getKitchen() == KitchenEnum.FullKitchen ){
calcprice = calcprice + 20.0f;
}
if( numberOfBathRooms > 1 ){
price = price + (numberOfBathRooms * 5.0f);
if( getNumberOfBathRooms() > 1 ){
setPrice( getPrice() + (getNumberOfBathRooms() * 5.0f));
}
price = price * days;
return price;
calcprice = calcprice * days;
return calcprice;
}
}

View File

@@ -7,43 +7,44 @@ public final class HotelReservation extends Reservation {
HotelReservation() {
super();
numberOfBeds = 2;
setType('H');
setNumberOfBeds( 2 );
}
public HotelReservation(final Address physical_address) {
numberOfBeds = 2;
numberOfBedRooms = 1;
numberOfBathRooms = 1;
kitchen = KitchenEnum.None;
this.physical_address = new Address();
this.physical_address.setStreet(physical_address.getStreet());
this.physical_address.setCity(physical_address.getCity());
this.physical_address.setState(physical_address.getState());
this.physical_address.setZip(physical_address.getZip());
setNumberOfBeds(2);
setNumberOfBedRooms(1);
setNumberOfBathRooms(1);
setNumberOfFloors(1);
setKitchen(KitchenEnum.Kitchenette );
this.setPhysical_address(new Address());
this.getPhysical_address().setStreet(physical_address.getStreet());
this.getPhysical_address().setCity(physical_address.getCity());
this.getPhysical_address().setState(physical_address.getState());
this.getPhysical_address().setZip(physical_address.getZip());
}
@Override
public final String ReservationType() {
type = 'H';
return "HotelReservation";
}
@Override
public boolean checkValid() throws IllegalArgumentException {
boolean result = false;
if (numberOfBathRooms != 1) {
if (getNumberOfBathRooms() != 1) {
throw new IllegalArgumentException("not valid, Baths");
}
if (numberOfBedRooms != 1) {
if (getNumberOfBedRooms() != 1) {
throw new IllegalArgumentException("not valid, BedRooms");
}
if (numberOfBeds != 2) {
if (getNumberOfBeds() != 2) {
throw new IllegalArgumentException("not valid, Beds");
}
if (physical_address == null) {
if (getPhysical_address() == null) {
throw new IllegalArgumentException("not valid, physical_address");
}
if (mailing_address == null) {
if (getMailing_address() == null) {
throw new IllegalArgumentException("not valid, mailing_address");
}
result = true;
@@ -52,17 +53,19 @@ public final class HotelReservation extends Reservation {
// calculate and return the reservation's price
// Hotel price plus additional flat fee of $50 plus $10 for kitchenette
@Override
public float calculatePrice() {
ZonedDateTime enddt = reservation_end_date.truncatedTo(ChronoUnit.DAYS);
ZonedDateTime startdt = reservation_start_date.truncatedTo(ChronoUnit.DAYS);
ZonedDateTime enddt = getReservation_end_date().truncatedTo(ChronoUnit.DAYS);
ZonedDateTime startdt = getReservation_start_date().truncatedTo(ChronoUnit.DAYS);
long days = ChronoUnit.DAYS.between( startdt ,enddt);
days = ( days < 2 ) ? 1: days - 1;
price = (squareFeet > 900.0f) ? 120.0f + 15.0f : 120.0f;
if (kitchen == KitchenEnum.FullKitchen) {
price = price + 10.0f;
float calcprice = (getSquareFeet() > 900.0f) ? 120.0f + 15.0f : 120.0f;
if (getKitchen() == KitchenEnum.FullKitchen) {
calcprice = calcprice + 10.0f;
}
price = price * days;
price = price + 50.0f;
return price;
calcprice = calcprice * days;
calcprice = calcprice + 50.0f;
return calcprice;
}
}

View File

@@ -7,32 +7,32 @@ public final class HouseReservation extends Reservation {
HouseReservation(){
super();
this.setType( 'Z' );
}
public HouseReservation(final Address physical_address) {
numberOfBeds = 2;
numberOfBedRooms = 1;
numberOfBathRooms = 1;
numberOfFloors = 1;
kitchen = KitchenEnum.FullKitchen;
this.physical_address = new Address();
this.physical_address.setStreet(physical_address.getStreet());
this.physical_address.setCity(physical_address.getCity());
this.physical_address.setState(physical_address.getState());
this.physical_address.setZip(physical_address.getZip());
setNumberOfBeds(2);
setNumberOfBedRooms(1);
setNumberOfBathRooms(1);
setNumberOfFloors(1);
setKitchen(KitchenEnum.Kitchenette );
this.setPhysical_address(new Address());
this.getPhysical_address().setStreet(physical_address.getStreet());
this.getPhysical_address().setCity(physical_address.getCity());
this.getPhysical_address().setState(physical_address.getState());
this.getPhysical_address().setZip(physical_address.getZip());
}
public final String ReservationType() {
type = 'Z';
return "HouseReservation";
}
public boolean checkValid() throws IllegalArgumentException {
boolean result = false;
if (physical_address == null) {
if (getPhysical_address() == null) {
throw new IllegalArgumentException("not valid, physical_address");
}
if (mailing_address == null) {
if (getMailing_address() == null) {
throw new IllegalArgumentException("not valid, mailing_address");
}
result = true;
@@ -40,19 +40,18 @@ public final class HouseReservation extends Reservation {
}
public float getPricePerNight(){
price = (squareFeet > 900.0f) ? 120.0f + 15.0f : 120.0f;
return price;
return (getSquareFeet() > 900.0f) ? 120.0f + 15.0f : 120.0f;
}
// calculate and return the reservation's price
// Hotel price plus additional flat fee of $50 plus $10 for kitchenette
@Override
public float calculatePrice() {
ZonedDateTime enddt = reservation_end_date.truncatedTo(ChronoUnit.DAYS);
ZonedDateTime startdt = reservation_start_date.truncatedTo(ChronoUnit.DAYS);
ZonedDateTime enddt = getReservation_end_date().truncatedTo(ChronoUnit.DAYS);
ZonedDateTime startdt = getReservation_start_date().truncatedTo(ChronoUnit.DAYS);
long days = ChronoUnit.DAYS.between( startdt ,enddt);
days = ( days < 2 ) ? 1: days - 1;
price = getPricePerNight() * days;
return price;
float calcprice = getPricePerNight() * days;
return calcprice;
}
}

View File

@@ -9,26 +9,26 @@ import java.nio.file.Paths;
import java.time.ZonedDateTime;
public abstract class Reservation {
char type;
String reservation_number = "-99";
Address physical_address;
Address mailing_address;
private char type;
private String reservation_number = "-99";
private Address physical_address;
private Address mailing_address;
ZonedDateTime reservation_start_date;
ZonedDateTime reservation_end_date;
ReservationStatusEnum reservation_status;
private ZonedDateTime reservation_start_date;
private ZonedDateTime reservation_end_date;
private ReservationStatusEnum reservation_status;
KitchenEnum kitchen;
private KitchenEnum kitchen;
Integer numberOfBeds;
Integer numberOfBedRooms;
Integer numberOfBathRooms;
Integer numberOfFloors;
Integer squareFeet;
private Integer numberOfBeds;
private Integer numberOfBedRooms;
private Integer numberOfBathRooms;
private Integer numberOfFloors;
private Integer squareFeet;
Float price;
Reservation() {
protected Reservation() {
numberOfBeds = 1;
numberOfBedRooms = 1;
numberOfBathRooms = 1;
@@ -40,16 +40,12 @@ public abstract class Reservation {
physical_address = null;
}
public String getReservation_number() {
return reservation_number;
}
public void setReservation_number(String reservation_number) {
this.reservation_number = reservation_number;
}
public Address physical_address() {
return physical_address;
public String getReservation_number() {
return this.reservation_number;
}
public void setPhysical_address(Address physical_address) {
@@ -64,26 +60,14 @@ public abstract class Reservation {
this.mailing_address = mailing_address;
}
public ZonedDateTime reservation_start_date() {
return reservation_start_date;
}
public void setReservation_start_date(ZonedDateTime reservation_start_date) {
this.reservation_start_date = reservation_start_date;
}
public ZonedDateTime reservation_end_date() {
return reservation_end_date;
}
public void setReservation_end_date(ZonedDateTime reservation_end_date) {
this.reservation_end_date = reservation_end_date;
}
public ReservationStatusEnum reservation_status() {
return reservation_status;
}
public void setReservation_status(ReservationStatusEnum reservation_status) {
this.reservation_status = reservation_status;
}
@@ -96,11 +80,6 @@ public abstract class Reservation {
this.kitchen = kitchen;
}
public Integer numberOfBeds() {
return numberOfBeds;
}
public void setNumberOfBeds(Integer numberOfBeds) {
this.numberOfBeds = numberOfBeds;
}
@@ -113,38 +92,74 @@ public abstract class Reservation {
this.numberOfBedRooms = numberOfBedRooms;
}
public Integer numberOfBathRooms() {
return numberOfBathRooms;
}
public void setNumberOfBathRooms(Integer numberOfBathRooms) {
this.numberOfBathRooms = numberOfBathRooms;
}
public Integer numberOfFloors() {
return numberOfFloors;
}
public void setNumberOfFloors(Integer numberOfFloors) {
this.numberOfFloors = numberOfFloors;
}
public Integer squareFeet() {
return squareFeet;
}
public void setSquareFeet(Integer squareFeet) {
this.squareFeet = squareFeet;
}
public Float price() {
return price;
}
public void setPrice(Float price) {
this.price = price;
}
public char getType() {
return type;
}
protected void setType(char type) {
this.type = type;
}
public Address getPhysical_address() {
return physical_address;
}
public Address getMailing_address() {
return mailing_address;
}
public ZonedDateTime getReservation_start_date() {
return reservation_start_date;
}
public ZonedDateTime getReservation_end_date() {
return reservation_end_date;
}
public ReservationStatusEnum getReservation_status() {
return reservation_status;
}
public Integer getNumberOfBeds() {
return numberOfBeds;
}
public Integer getNumberOfBedRooms() {
return numberOfBedRooms;
}
public Integer getNumberOfBathRooms() {
return numberOfBathRooms;
}
public Integer getNumberOfFloors() {
return numberOfFloors;
}
public Integer getSquareFeet() {
return squareFeet;
}
public Float getPrice() {
return price;
}
@Override
public int hashCode() {
final int prime = 31;
@@ -175,20 +190,20 @@ public abstract class Reservation {
StringBuilder sb = new StringBuilder();
sb.append(String.format("{ \"%s\":{", ReservationType()));
sb.append("\"reservation_type\": \"" + ReservationType() + "\",");
sb.append("\"reservation_number\": \"" + reservation_number + "\",");
sb.append("\"reservation_status\": \"" + reservation_status + "\",");
sb.append("\"reservation_start_date\": \"" + reservation_start_date + "\",");
sb.append("\"reservation_end_date\": \"" + reservation_end_date + "\",");
sb.append("\"physical_address\": " + physical_address + ",");
sb.append("\"mailing_address\": " + mailing_address + ",");
sb.append("\"kitchen\": \"" + kitchen + "\",");
sb.append("\"numberOfBeds\": \"" + numberOfBeds + "\",");
sb.append("\"numberOfBedRooms\": \"" + numberOfBedRooms + "\",");
sb.append("\"numberOfBathRooms\": \"" + numberOfBathRooms + "\",");
sb.append("\"numberOfFloors\": \"" + numberOfFloors + "\",");
sb.append("\"squareFeet\": \"" + squareFeet + "\",");
sb.append("\"price\": \"" + price + "\"");
sb.append("\"reservation_type\": \"").append(ReservationType()).append("\",");
sb.append("\"reservation_number\": \"").append(reservation_number).append("\",");
sb.append("\"reservation_status\": \"").append(reservation_status).append("\",");
sb.append("\"reservation_start_date\": \"").append(reservation_start_date).append("\",");
sb.append("\"reservation_end_date\": \"").append(reservation_end_date).append("\",");
sb.append("\"physical_address\": ").append(physical_address).append(",");
sb.append("\"mailing_address\": ").append(mailing_address).append(",");
sb.append("\"kitchen\": \"").append(kitchen).append("\",");
sb.append("\"numberOfBeds\": \"").append(numberOfBeds).append("\",");
sb.append("\"numberOfBedRooms\": \"").append(numberOfBedRooms).append("\",");
sb.append("\"numberOfBathRooms\": \"").append(numberOfBathRooms).append("\",");
sb.append("\"numberOfFloors\": \"").append(numberOfFloors).append("\",");
sb.append("\"squareFeet\": \"").append(squareFeet).append("\",");
sb.append("\"price\": \"").append(price).append("\"");
sb.append("}}");
return sb.toString();
}
@@ -225,10 +240,6 @@ public abstract class Reservation {
}
}
public float calculatePricePerNight() {
return 0.0f;
}
public abstract String ReservationType();
public abstract float calculatePrice();