clean up.

This commit is contained in:
2025-09-06 20:22:27 -04:00
parent a3bd96e749
commit 65b126a702
11 changed files with 45 additions and 50 deletions

View File

@@ -12,6 +12,7 @@ import lodge.reservationsystem.HotelReservation;
import lodge.reservationsystem.HouseReservation; import lodge.reservationsystem.HouseReservation;
import lodge.reservationsystem.Reservation; import lodge.reservationsystem.Reservation;
import lodge.reservationsystem.ReservationStatusEnum; import lodge.reservationsystem.ReservationStatusEnum;
import lodge.reservationsystem.DuplicateObjectException;
public final class TestReservations { public final class TestReservations {
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
@@ -91,12 +92,12 @@ public final class TestReservations {
Reservation rsrv = account.getReservation_list().getLast(); Reservation rsrv = account.getReservation_list().getLast();
// 6. Complete reservation that is associated with an account // 6. Complete reservation that is associated with an account
rsrv = mgr.retreiveReservation(cabin.getReservation_number()); rsrv = mgr.retreiveReservation(rsrv.getReservation_number());
rsrv.Change(rsrv, ReservationStatusEnum.Completed); rsrv.Change(rsrv, ReservationStatusEnum.Completed);
mgr.UpdateAccount(mgr.retrieveAccount(acct.account_number())); mgr.UpdateAccount(mgr.retrieveAccount(acct.account_number()));
// 7. Cancel reservation that is associated with an account // 7. Cancel reservation that is associated with an account
rsrv = mgr.retreiveReservation(cabin.getReservation_number()); rsrv = mgr.retreiveReservation(rsrv.getReservation_number());
rsrv.Change(rsrv, ReservationStatusEnum.Canceled); rsrv.Change(rsrv, ReservationStatusEnum.Canceled);
mgr.UpdateAccount(mgr.retrieveAccount(acct.account_number())); mgr.UpdateAccount(mgr.retrieveAccount(acct.account_number()));
/* /*

View File

@@ -7,14 +7,13 @@ public final class AccomodationManager {
private final AccountList account_list = new AccountList(); private final AccountList account_list = new AccountList();
@SuppressWarnings("unused") AccomodationManager() {
AccomodationManager(){
}; };
public AccomodationManager(String home){ public AccomodationManager(String home) {
setDataStoreRoot(home); setDataStoreRoot(home);
}; };
public final void setDataStoreRoot(String home) { public final void setDataStoreRoot(String home) {
DataRepository.setDataStoreRoot(home); DataRepository.setDataStoreRoot(home);
@@ -30,13 +29,12 @@ public final class AccomodationManager {
// Load / Deserialize Account // Load / Deserialize Account
void load(Path file) throws Exception { void load(Path file) throws Exception {
AddAccount( DataRepository.LoadAccount(file) );
Account account = DataRepository.LoadAccount(file); Account account = DataRepository.LoadAccount(file);
if( account == null ) if (account == null) {
{ System.out.println(String.format("%s", file.toString()));
System.out.println( String.format("%s", file.toString() )); } else {
}else{ account_list.add(account);
account_list.add( account );
} }
} }
@@ -53,8 +51,9 @@ public final class AccomodationManager {
} }
public void UpdateAccount(Account acct) throws Exception { public void UpdateAccount(Account acct) throws Exception {
if( acct != null ){
AccountList.save(account_list, acct); AccountList.save(account_list, acct);
}
} }
public final Account newAccount(String phone_number, Address mailing_address, EmailAddress email_address) public final Account newAccount(String phone_number, Address mailing_address, EmailAddress email_address)

View File

@@ -55,7 +55,7 @@ public class Account {
result = reservation_list.add(rsrv); result = reservation_list.add(rsrv);
if (!result) { if (!result) {
throw new ReservationException("Error Reservation already exists."); throw new DuplicateObjectException("Error Reservation already exists.");
} }
} catch (ReservationException e) { } catch (ReservationException e) {
e.printStackTrace(); e.printStackTrace();

View File

@@ -5,7 +5,7 @@ import java.util.ArrayList;
public class AccountList extends ArrayList<Account> { public class AccountList extends ArrayList<Account> {
public AccountList(){ public AccountList() {
} }
@@ -13,7 +13,8 @@ public class AccountList extends ArrayList<Account> {
return String.format("A%09d", Math.abs(java.util.Objects.hash(phone_number, mailing_address, email_address))); return String.format("A%09d", Math.abs(java.util.Objects.hash(phone_number, mailing_address, email_address)));
} }
public static Account newAccount(String phone_number, Address mailing_address, EmailAddress email_address) throws Exception { public static Account newAccount(String phone_number, Address mailing_address, EmailAddress email_address)
throws Exception {
Account A = new Account(AccountList.accountSerial(phone_number, mailing_address, email_address), Account A = new Account(AccountList.accountSerial(phone_number, mailing_address, email_address),
phone_number, phone_number,
mailing_address, mailing_address,
@@ -21,20 +22,21 @@ public class AccountList extends ArrayList<Account> {
return A; return A;
} }
// ** Add account throw error if account number is pre-existing. */
public static Account addAccount(final AccountList account_list, final Account account) throws DuplicateObjectException, AccountException { // ** Add account throw error if account number is pre-existing. */
String acctNumber = ""; public static Account addAccount(final AccountList account_list, final Account account)
for(Account acct: account_list){ throws DuplicateObjectException, AccountException {
if( acct.account_number() == account.account_number() ){ try {
acctNumber = acct.account_number(); for (Account acct : account_list) {
break; if (acct.account_number().compareTo(account.account_number()) == 0) {
throw new DuplicateObjectException(
String.format("Account %s exists, duplicates not allowed.", acct.account_number()));
}
} }
} catch (DuplicateObjectException e) {
return null;
} }
if (!acctNumber.isEmpty()) { account_list.add(account);
throw new DuplicateObjectException("Account exists, duplicates not allowed.");
} else {
account_list.add(account);
}
return account; return account;
} }
@@ -52,8 +54,8 @@ public class AccountList extends ArrayList<Account> {
// ** Find account return null not-existing. */ // ** Find account return null not-existing. */
public static Account retrieveAccount(final AccountList account_list, String account_number) { public static Account retrieveAccount(final AccountList account_list, String account_number) {
for(Account acct: account_list){ for (Account acct : account_list) {
if( acct.account_number() == account_number ){ if (acct.account_number() == account_number) {
return acct; return acct;
} }
} }

View File

@@ -16,10 +16,10 @@ public class AccountReservationList extends ArrayList<Reservation> {
return false; return false;
} }
for(Reservation rsrv: this){ for(Reservation rsrv: this){
boolean result = reservation.getReservation_number().compareTo(rsrv.getReservation_number()) == 0; result = reservation.getReservation_number().compareTo(rsrv.getReservation_number()) == 0;
if(result){ if(result){
return result; return false;
} }
} }
reservation.reservation_number = AccountReservationList.reservationSerial(reservation); reservation.reservation_number = AccountReservationList.reservationSerial(reservation);
return super.add(reservation); return super.add(reservation);

View File

@@ -3,7 +3,6 @@ package lodge.reservationsystem;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.FileReader; import java.io.FileReader;
import java.io.IOException; import java.io.IOException;
import java.lang.reflect.Type;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.nio.file.FileVisitResult; import java.nio.file.FileVisitResult;
import java.nio.file.Files; import java.nio.file.Files;
@@ -13,7 +12,6 @@ import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes; import java.nio.file.attribute.BasicFileAttributes;
import java.time.ZonedDateTime; import java.time.ZonedDateTime;
import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonReader;
final class DataRepository { final class DataRepository {
@@ -65,15 +63,7 @@ final class DataRepository {
} }
}); });
} }
public static Account LoadAccount(Path file) throws IOException {
Account ac = null;
try (BufferedReader in = new BufferedReader(new FileReader(file.toFile(), StandardCharsets.UTF_8))) {
JsonReader jsonReader = new JsonReader(in);
/**
* @param file
* @throws IOException
*/
public final static Account LoadAccount(final Path file) throws IOException { public final static Account LoadAccount(final Path file) throws IOException {
/** @TODO finish loading Account */ /** @TODO finish loading Account */
try (BufferedReader in = new BufferedReader(new FileReader(file.toFile(), StandardCharsets.UTF_8)); try (BufferedReader in = new BufferedReader(new FileReader(file.toFile(), StandardCharsets.UTF_8));
@@ -133,7 +123,6 @@ final class DataRepository {
jsonReader.close(); jsonReader.close();
return ac.account_number.length() > 8 ? ac : null; return ac.account_number.length() > 8 ? ac : null;
} }
return ac;
} }
static void loadReservationRefList(JsonReader rdr, Account ac) throws IOException { static void loadReservationRefList(JsonReader rdr, Account ac) throws IOException {

View File

@@ -1,6 +1,6 @@
package lodge.reservationsystem; package lodge.reservationsystem;
class DuplicateObjectException extends RuntimeException { public class DuplicateObjectException extends RuntimeException {
public DuplicateObjectException() { public DuplicateObjectException() {
super(); super();
} }

View File

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

View File

@@ -0,0 +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"}}

View File

@@ -0,0 +1 @@
{ "HouseReservation":{"reservation_type": "HouseReservation","reservation_number": "R0499811708","reservation_status": "Draft","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": "120.0"}}

View File

@@ -0,0 +1 @@
{ "CabinReservation":{"reservation_type": "CabinReservation","reservation_number": "R2042828431","reservation_status": "Completed","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": "10200.0"}}