updates cleanup.
This commit is contained in:
@@ -7,7 +7,8 @@ public final class AccomodationManager {
|
|||||||
|
|
||||||
private final AccountList account_list = new AccountList();
|
private final AccountList account_list = new AccountList();
|
||||||
|
|
||||||
AccomodationManager() {
|
@SuppressWarnings("unused")
|
||||||
|
private AccomodationManager() {
|
||||||
};
|
};
|
||||||
|
|
||||||
public AccomodationManager(String home) {
|
public AccomodationManager(String home) {
|
||||||
@@ -24,7 +25,7 @@ public final class AccomodationManager {
|
|||||||
// walk directories
|
// walk directories
|
||||||
Path rootDir = Paths.get(DataRepository.getPath());
|
Path rootDir = Paths.get(DataRepository.getPath());
|
||||||
DataRepository.WalkFileSystemTree(this, rootDir);
|
DataRepository.WalkFileSystemTree(this, rootDir);
|
||||||
System.out.println(String.format("Accounts Loaded %d", account_list.size()));
|
System.out.println(String.format("%s LoadAll Accounts %d", "Deserializing", account_list.size()));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load / Deserialize Account
|
// Load / Deserialize Account
|
||||||
@@ -43,16 +44,16 @@ public final class AccomodationManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Account retrieveAccount(String acct_id) {
|
public Account retrieveAccount(String acct_id) {
|
||||||
return AccountList.retrieveAccount(account_list, acct_id);
|
return account_list.find(acct_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddAccount(Account acct) throws Exception {
|
public synchronized void AddAccount(final Account acct) throws Exception {
|
||||||
AccountList.addAccount(account_list, acct);
|
account_list.add(acct);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdateAccount(Account acct) throws Exception {
|
public synchronized void UpdateAccount(final Account acct) throws Exception {
|
||||||
if( acct != null ){
|
if( acct != null ){
|
||||||
AccountList.save(account_list, acct);
|
account_list.save(acct);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -62,9 +63,9 @@ public final class AccomodationManager {
|
|||||||
try {
|
try {
|
||||||
acct = AccountList.newAccount(phone_number, mailing_address, email_address);
|
acct = AccountList.newAccount(phone_number, mailing_address, email_address);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
System.out.println(e.toString());
|
||||||
}
|
}
|
||||||
AccountList.save(account_list, acct);
|
account_list.save(acct);
|
||||||
return acct;
|
return acct;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -76,7 +77,7 @@ public final class AccomodationManager {
|
|||||||
public Reservation retreiveReservation(String reservation_number) {
|
public Reservation retreiveReservation(String reservation_number) {
|
||||||
for (Account acct : account_list) {
|
for (Account acct : account_list) {
|
||||||
for (Reservation rsv : acct.reservation_list) {
|
for (Reservation rsv : acct.reservation_list) {
|
||||||
if (rsv.getReservation_number() == reservation_number) {
|
if (rsv.getReservation_number().compareTo(reservation_number)==0) {
|
||||||
return rsv;
|
return rsv;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,10 +13,9 @@ public class Account {
|
|||||||
Address mailing_address;
|
Address mailing_address;
|
||||||
EmailAddress email_address;
|
EmailAddress email_address;
|
||||||
|
|
||||||
AccountReservationList reservation_list = new AccountReservationList();;
|
@SuppressWarnings("unused")
|
||||||
|
protected Account() {
|
||||||
|
|
||||||
public AccountReservationList getReservation_list() {
|
|
||||||
return reservation_list;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Account(
|
public Account(
|
||||||
@@ -30,8 +29,10 @@ public class Account {
|
|||||||
this.email_address = email_address;
|
this.email_address = email_address;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Account() {
|
AccountReservationList reservation_list = new AccountReservationList();;
|
||||||
|
|
||||||
|
public AccountReservationList getReservation_list() {
|
||||||
|
return reservation_list;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -50,6 +51,9 @@ public class Account {
|
|||||||
|
|
||||||
public boolean add(Reservation rsrv) throws ReservationException {
|
public boolean add(Reservation rsrv) throws ReservationException {
|
||||||
boolean result = false;
|
boolean result = false;
|
||||||
|
if (rsrv == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
rsrv.checkValid();
|
rsrv.checkValid();
|
||||||
result = reservation_list.add(rsrv);
|
result = reservation_list.add(rsrv);
|
||||||
@@ -57,10 +61,10 @@ public class Account {
|
|||||||
if (!result) {
|
if (!result) {
|
||||||
throw new DuplicateObjectException("Error Reservation already exists.");
|
throw new DuplicateObjectException("Error Reservation already exists.");
|
||||||
}
|
}
|
||||||
|
} catch (DuplicateObjectException e) {
|
||||||
|
System.out.println(String.format("%s", e.getMessage()));
|
||||||
} catch (ReservationException e) {
|
} catch (ReservationException e) {
|
||||||
e.printStackTrace();
|
System.out.println(e.toString());
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
} finally {
|
} finally {
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
@@ -137,4 +141,11 @@ public class Account {
|
|||||||
return false;
|
return false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void update(Account acct) {
|
||||||
|
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());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -6,7 +6,7 @@ import java.util.ArrayList;
|
|||||||
public class AccountList extends ArrayList<Account> {
|
public class AccountList extends ArrayList<Account> {
|
||||||
|
|
||||||
public AccountList() {
|
public AccountList() {
|
||||||
|
super();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String accountSerial(String phone_number, Address mailing_address, EmailAddress email_address) {
|
public static String accountSerial(String phone_number, Address mailing_address, EmailAddress email_address) {
|
||||||
@@ -24,38 +24,34 @@ public class AccountList extends ArrayList<Account> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ** Add account throw error if account number is pre-existing. */
|
// ** Add account throw error if account number is pre-existing. */
|
||||||
public static Account addAccount(final AccountList account_list, final Account account)
|
@Override
|
||||||
throws DuplicateObjectException, AccountException {
|
public synchronized boolean add(final Account account)
|
||||||
|
throws DuplicateObjectException {
|
||||||
try {
|
try {
|
||||||
for (Account acct : account_list) {
|
for (Account acct : this) {
|
||||||
if (acct.account_number().compareTo(account.account_number()) == 0) {
|
if (acct.account_number().compareTo(account.account_number()) == 0) {
|
||||||
throw new DuplicateObjectException(
|
throw new DuplicateObjectException(
|
||||||
String.format("Account %s exists, duplicates not allowed.", acct.account_number()));
|
String.format("Account %s exists, duplicates not allowed.", acct.account_number()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (DuplicateObjectException e) {
|
} catch (DuplicateObjectException e) {
|
||||||
return null;
|
return false;
|
||||||
}
|
}
|
||||||
account_list.add(account);
|
return super.add(account);
|
||||||
return account;
|
|
||||||
}
|
|
||||||
|
|
||||||
// save account in edit status
|
|
||||||
public static void save(final Account acct) throws IOException {
|
|
||||||
Account.Write(acct);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// save accounts in edit status
|
// save accounts in edit status
|
||||||
public static void save(final AccountList account_list, final Account acct) throws Exception {
|
public void save(final Account acct) throws IOException {
|
||||||
for (Account account : account_list) {
|
if( acct == null ){
|
||||||
AccountList.save(account);
|
return;
|
||||||
}
|
}
|
||||||
|
Account.Write(acct);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ** Find account return null not-existing. */
|
// ** Find account return null not-existing. */
|
||||||
public static Account retrieveAccount(final AccountList account_list, String account_number) {
|
public final Account find(String account_number) {
|
||||||
for (Account acct : account_list) {
|
for (Account acct : this) {
|
||||||
if (acct.account_number() == account_number) {
|
if (acct.account_number().compareTo(account_number) == 0) {
|
||||||
return acct;
|
return acct;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,13 +15,13 @@ public class AccountReservationList extends ArrayList<Reservation> {
|
|||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
for(Reservation rsrv: this){
|
for (Reservation rsrv : this) {
|
||||||
result = reservation.getReservation_number().compareTo(rsrv.getReservation_number()) == 0;
|
result = reservation.getReservation_number().compareTo(rsrv.getReservation_number()) == 0;
|
||||||
if(result){
|
if (result) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
reservation.reservation_number = AccountReservationList.reservationSerial(reservation);
|
reservation.setReservation_number(AccountReservationList.reservationSerial(reservation));
|
||||||
return super.add(reservation);
|
return super.add(reservation);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -30,16 +30,36 @@ public class AccountReservationList extends ArrayList<Reservation> {
|
|||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.append("\"reservation_list\":[");
|
sb.append("\"reservation_list\":[");
|
||||||
|
|
||||||
for(int ix=0; ix < this.size() ; ix++){
|
for (int ix = 0; ix < this.size(); ix++) {
|
||||||
String name = this.get(ix).ReservationType() + "";
|
String name = this.get(ix).ReservationType() + "";
|
||||||
|
|
||||||
if( ( this.size() - 1 ) == ix ){
|
if ((this.size() - 1) == ix) {
|
||||||
sb.append(String.format("{\"%s\":{\"reservation_number\":\"%s\"}}", name, this.get(ix).getReservation_number()));
|
sb.append(String.format("{\"%s\":{\"reservation_number\":\"%s\"}}", name,
|
||||||
}else{
|
this.get(ix).getReservation_number()));
|
||||||
sb.append(String.format("{\"%s\":{\"reservation_number\":\"%s\"}},", name, this.get(ix).getReservation_number()));
|
} else {
|
||||||
|
sb.append(String.format("{\"%s\":{\"reservation_number\":\"%s\"}},", name,
|
||||||
|
this.get(ix).getReservation_number()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sb.append("]");
|
sb.append("]");
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void update(AccountReservationList incoming_reservation_list) {
|
||||||
|
for (Reservation rsrv : incoming_reservation_list) {
|
||||||
|
Reservation onListRsrv = find(rsrv.getReservation_number());
|
||||||
|
if( onListRsrv != null ){
|
||||||
|
onListRsrv.update(rsrv);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Reservation find(String reservation_number) {
|
||||||
|
for(Reservation rsrv: this){
|
||||||
|
if( rsrv.getReservation_number().compareTo(reservation_number) == 0 ){
|
||||||
|
return rsrv;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ public final class CabinReservation extends Reservation{
|
|||||||
return "CabinReservation";
|
return "CabinReservation";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean checkValid() throws IllegalArgumentException {
|
public boolean checkValid() throws IllegalArgumentException {
|
||||||
boolean result = false;
|
boolean result = false;
|
||||||
if (physical_address == null) {
|
if (physical_address == null) {
|
||||||
@@ -37,6 +38,7 @@ public final class CabinReservation extends Reservation{
|
|||||||
|
|
||||||
//calculate and return the reservation's price
|
//calculate and return the reservation's price
|
||||||
// Cabin price plus additional fee of $20 for full kitchen and $5 for each additional bathroom
|
// Cabin price plus additional fee of $20 for full kitchen and $5 for each additional bathroom
|
||||||
|
@Override
|
||||||
public float calculatePrice() {
|
public float calculatePrice() {
|
||||||
ZonedDateTime enddt = reservation_end_date.truncatedTo(ChronoUnit.DAYS);
|
ZonedDateTime enddt = reservation_end_date.truncatedTo(ChronoUnit.DAYS);
|
||||||
ZonedDateTime startdt = reservation_start_date.truncatedTo(ChronoUnit.DAYS);
|
ZonedDateTime startdt = reservation_start_date.truncatedTo(ChronoUnit.DAYS);
|
||||||
|
|||||||
@@ -150,6 +150,7 @@ final class DataRepository {
|
|||||||
try (JsonReader jsonReader = new JsonReader(in)) {
|
try (JsonReader jsonReader = new JsonReader(in)) {
|
||||||
jsonReader.beginObject();
|
jsonReader.beginObject();
|
||||||
Reservation rsrv = null;
|
Reservation rsrv = null;
|
||||||
|
try {
|
||||||
while (jsonReader.hasNext()) {
|
while (jsonReader.hasNext()) {
|
||||||
String name = jsonReader.nextName();
|
String name = jsonReader.nextName();
|
||||||
switch (name) {
|
switch (name) {
|
||||||
@@ -241,12 +242,11 @@ final class DataRepository {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
|
||||||
if (rsrv.checkValid()) {
|
if (rsrv.checkValid()) {
|
||||||
reservation_list.add(rsrv);
|
reservation_list.add(rsrv);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
System.out.println(e.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,11 +22,13 @@ public final class HotelReservation extends Reservation {
|
|||||||
this.physical_address.setZip(physical_address.getZip());
|
this.physical_address.setZip(physical_address.getZip());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public final String ReservationType() {
|
public final String ReservationType() {
|
||||||
type = 'H';
|
type = 'H';
|
||||||
return "HotelReservation";
|
return "HotelReservation";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean checkValid() throws IllegalArgumentException {
|
public boolean checkValid() throws IllegalArgumentException {
|
||||||
boolean result = false;
|
boolean result = false;
|
||||||
if (numberOfBathRooms != 1) {
|
if (numberOfBathRooms != 1) {
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ public final class HouseReservation extends Reservation {
|
|||||||
|
|
||||||
// calculate and return the reservation's price
|
// calculate and return the reservation's price
|
||||||
// Hotel price plus additional flat fee of $50 plus $10 for kitchenette
|
// Hotel price plus additional flat fee of $50 plus $10 for kitchenette
|
||||||
|
@Override
|
||||||
public float calculatePrice() {
|
public float calculatePrice() {
|
||||||
ZonedDateTime enddt = reservation_end_date.truncatedTo(ChronoUnit.DAYS);
|
ZonedDateTime enddt = reservation_end_date.truncatedTo(ChronoUnit.DAYS);
|
||||||
ZonedDateTime startdt = reservation_start_date.truncatedTo(ChronoUnit.DAYS);
|
ZonedDateTime startdt = reservation_start_date.truncatedTo(ChronoUnit.DAYS);
|
||||||
|
|||||||
@@ -221,7 +221,7 @@ public abstract class Reservation {
|
|||||||
}
|
}
|
||||||
reservation.setReservation_status(newStatus);
|
reservation.setReservation_status(newStatus);
|
||||||
} catch (IllegalOperationException e) {
|
} catch (IllegalOperationException e) {
|
||||||
e.printStackTrace();
|
System.out.println(e.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -233,5 +233,9 @@ public abstract class Reservation {
|
|||||||
|
|
||||||
public abstract float calculatePrice();
|
public abstract float calculatePrice();
|
||||||
|
|
||||||
public abstract boolean checkValid() throws Exception;
|
public abstract boolean checkValid() throws ReservationException;
|
||||||
|
|
||||||
|
public void update(Reservation rsrv) {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
0
src/resources/acc-A1450981765.json
Normal file → Executable file
0
src/resources/acc-A1450981765.json
Normal file → Executable file
0
src/resources/rsv-R0123077641.json
Normal file → Executable file
0
src/resources/rsv-R0123077641.json
Normal file → Executable file
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": "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"}}
|
{ "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"}}
|
||||||
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": "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"}}
|
{ "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"}}
|
||||||
Reference in New Issue
Block a user