track account

This commit is contained in:
2025-09-13 20:33:29 -04:00
parent bb1a0ce906
commit 48c142c573
12 changed files with 185 additions and 26 deletions

View File

@@ -59,18 +59,18 @@ public final class TestReservations {
mgr.UpdateAccount(acct); mgr.UpdateAccount(acct);
CabinReservation cabin = new CabinReservation(new Address("30 cabin ave", "Carnelian", "CA", "96140")); CabinReservation cabin2 = new CabinReservation(new Address("30 cabin ave", "Carnelian", "CA", "96140"));
cabin.setMailing_address(new Address("30 cabin ave", "Carnelian Bay", "CA", "96140")); cabin2.setMailing_address(new Address("30 cabin ave", "Carnelian Bay", "CA", "96140"));
cabin.setNumberOfBeds(4); cabin2.setNumberOfBeds(4);
cabin.setNumberOfFloors(2); cabin2.setNumberOfFloors(2);
cabin.setNumberOfBedRooms(3); cabin2.setNumberOfBedRooms(3);
cabin.setSquareFeet(806); cabin2.setSquareFeet(806);
cabin.setReservation_start_date(ZonedDateTime.of(2025, 9, 05, 10, 0, 0, 0, ZoneId.of("UTC"))); cabin2.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"))); cabin2.setReservation_end_date(ZonedDateTime.of(2025, 11, 30, 22, 0, 0, 0, ZoneId.of("UTC")));
mgr.addReservation(acct2, cabin); mgr.addReservation(acct2, cabin2);
mgr.UpdateAccount(acct2); mgr.UpdateAccount(acct2);
cabin = new CabinReservation(new Address("40 cabin ave", "Carnelian", "CA", "96140")); 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.setMailing_address(new Address("40 cabin ave", "Carnelian Bay", "CA", "96140"));
cabin.setNumberOfBeds(4); cabin.setNumberOfBeds(4);
cabin.setNumberOfFloors(2); cabin.setNumberOfFloors(2);

View File

@@ -7,6 +7,8 @@ import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.Collections;
public class Account { public class Account {
private String account_number = "-99"; private String account_number = "-99";
private String phone_number; private String phone_number;
@@ -44,24 +46,21 @@ public class Account {
return sb.toString(); return sb.toString();
} }
public boolean add(Reservation rsrv) throws ReservationException { public boolean add(Reservation rsrv) throws DuplicateObjectException {
boolean result = false; boolean result = false;
if (rsrv == null) { if (rsrv == null) {
return false; return false;
} }
try { try {
rsrv.checkValid();
result = reservation_list.add(rsrv); result = reservation_list.add(rsrv);
if (!result) {
throw new DuplicateObjectException("Error Reservation already exists.");
}
} catch (DuplicateObjectException e) { } catch (DuplicateObjectException e) {
System.out.println(String.format("%s", e.getMessage())); System.out.println(String.format("%s", e.getMessage()));
} catch (ReservationException e) {
System.out.println(e.toString());
} finally { } finally {
} }
if(result){
/* add account number to reservation for tracking purposes */
rsrv.setAccountNumber( this.account_number );
}
return result; return result;
} }
@@ -147,4 +146,9 @@ public class Account {
this.setMailing_address(acct.mailing_address); this.setMailing_address(acct.mailing_address);
} }
public Reservation[] getAllReservations() {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'getAllReservations'");
}
} }

View File

@@ -1,7 +1,10 @@
package lodge.reservationsystem; package lodge.reservationsystem;
import java.io.IOException; import java.io.IOException;
import java.lang.classfile.Superclass;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class AccountList extends ArrayList<Account> { public class AccountList extends ArrayList<Account> {
@@ -57,4 +60,18 @@ public class AccountList extends ArrayList<Account> {
} }
return null; return null;
} }
public List<Account> getList() {
return Collections.unmodifiableList(this);
}
public List<? extends Reservation> getListOfReservations() {
ArrayList<Reservation> readList = new ArrayList<Reservation>();
for (Account acct: this){
for (Reservation rsrv: acct.getAllReservations()){
readList.add(rsrv);
}
}
return Collections.unmodifiableList(readList);
}
} }

View File

@@ -14,7 +14,7 @@ public class AccountReservationList extends ArrayList<Reservation> {
Reservation rsrv = this.find(reservation.getReservation_number()); Reservation rsrv = this.find(reservation.getReservation_number());
if( rsrv != null ){ if( rsrv != null ){
result = false; result = false;
throw new DuplicateObjectException(String.format("Error Duplicate: Reservation %s", rsrv.getReservation_number())); throw new DuplicateObjectException(String.format("Error No Dups, Reservation exists: %s.", rsrv.getReservation_number()));
} }
try { try {
result = reservation.checkValid(); result = reservation.checkValid();

View File

@@ -236,6 +236,9 @@ final class DataRepository {
case "reservation_end_date": case "reservation_end_date":
rsrv.setReservation_end_date(ZonedDateTime.parse(jsonReader.nextString())); rsrv.setReservation_end_date(ZonedDateTime.parse(jsonReader.nextString()));
break; break;
case "account_number":
rsrv.setAccountNumber(jsonReader.nextString());
break;
default: default:
System.out.println(name); System.out.println(name);

View File

@@ -26,7 +26,9 @@ public abstract class Reservation{
private Integer numberOfFloors; private Integer numberOfFloors;
private Integer squareFeet; private Integer squareFeet;
Float price; private Float price;
protected String accountNumber = null;
protected Reservation() { protected Reservation() {
numberOfBeds = 1; numberOfBeds = 1;
@@ -48,6 +50,14 @@ public abstract class Reservation{
return this.reservation_number; return this.reservation_number;
} }
public String getAccountNumber() {
return this.accountNumber;
}
protected void setAccountNumber(String account_number) {
this.accountNumber = account_number;
}
public void setPhysical_address(Address physical_address) { public void setPhysical_address(Address physical_address) {
this.physical_address = physical_address; this.physical_address = physical_address;
} }
@@ -195,6 +205,7 @@ public abstract class Reservation{
sb.append("\"reservation_status\": \"").append(reservation_status).append("\","); sb.append("\"reservation_status\": \"").append(reservation_status).append("\",");
sb.append("\"reservation_start_date\": \"").append(reservation_start_date).append("\","); sb.append("\"reservation_start_date\": \"").append(reservation_start_date).append("\",");
sb.append("\"reservation_end_date\": \"").append(reservation_end_date).append("\","); sb.append("\"reservation_end_date\": \"").append(reservation_end_date).append("\",");
sb.append("\"account_number\": \"").append(accountNumber).append("\",");
sb.append("\"physical_address\": ").append(physical_address).append(","); sb.append("\"physical_address\": ").append(physical_address).append(",");
sb.append("\"mailing_address\": ").append(mailing_address).append(","); sb.append("\"mailing_address\": ").append(mailing_address).append(",");
sb.append("\"kitchen\": \"").append(kitchen).append("\","); sb.append("\"kitchen\": \"").append(kitchen).append("\",");

View File

@@ -1 +1,36 @@
{ "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"}},"reservation_list":[{"HotelReservation":{"reservation_number":"R0123077641"}},{"CabinReservation":{"reservation_number":"R2042828431"}},{"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"
}
},
"reservation_list": [
{
"HotelReservation": {
"reservation_number": "R0123077641"
}
},
{
"CabinReservation": {
"reservation_number": "R0535276622"
}
},
{
"HouseReservation": {
"reservation_number": "R0499811708"
}
}
]
}
}

View File

@@ -1 +1,26 @@
{ "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"}},"reservation_list":[{"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"
}
},
"reservation_list": [
{
"CabinReservation": {
"reservation_number": "R2042828431"
}
}
]
}
}

View File

@@ -1 +1 @@
{ "HotelReservation":{"reservation_type": "HotelReservation","reservation_number": "R0123077641","reservation_status": "Draft","reservation_start_date": "2025-07-05T10:00Z[UTC]","reservation_end_date": "2025-11-30T22:00Z[UTC]","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": "None","numberOfBeds": "2","numberOfBedRooms": "1","numberOfBathRooms": "1","numberOfFloors": "1","squareFeet": "450","price": "120.0"}} { "HotelReservation":{"reservation_type": "HotelReservation","reservation_number": "R0123077641","reservation_status": "Draft","reservation_start_date": "2025-07-05T10:00Z[UTC]","reservation_end_date": "2025-11-30T22: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": "120.0"}}

View File

@@ -1 +1,33 @@
{ "HouseReservation":{"reservation_type": "HouseReservation","reservation_number": "R0499811708","reservation_status": "Completed","reservation_start_date": "2025-09-05T10:00Z[UTC]","reservation_end_date": "2025-11-30T22:00Z[UTC]","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": "FullKitchen","numberOfBeds": "4","numberOfBedRooms": "3","numberOfBathRooms": "1","numberOfFloors": "3","squareFeet": "1400","price": "11475.0"}} {
"HouseReservation": {
"reservation_type": "HouseReservation",
"reservation_number": "R0499811708",
"reservation_status": "Completed",
"reservation_start_date": "2025-09-05T10:00Z[UTC]",
"reservation_end_date": "2025-11-30T22: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": "11475.0"
}
}

View File

@@ -1 +1,33 @@
{ "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]","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": "120.0"}} {
"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": "120.0"
}
}

View File

@@ -1 +1 @@
{ "CabinReservation":{"reservation_type": "CabinReservation","reservation_number": "R2042828431","reservation_status": "Draft","reservation_start_date": "2025-09-05T10:00Z[UTC]","reservation_end_date": "2025-11-30T22:00Z[UTC]","physical_address": { "Address":{"street": "30 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": "120.0"}} { "CabinReservation":{"reservation_type": "CabinReservation","reservation_number": "R2042828431","reservation_status": "Draft","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": "120.0"}}