write account, reservation
This commit is contained in:
@@ -1,12 +1,9 @@
|
||||
package lodge;
|
||||
|
||||
import java.net.URI;
|
||||
|
||||
import lodge.reservationsystem.AccomodationManager;
|
||||
import lodge.reservationsystem.Account;
|
||||
import lodge.reservationsystem.Address;
|
||||
import lodge.reservationsystem.CabinReservation;
|
||||
import lodge.reservationsystem.DataRepository;
|
||||
import lodge.reservationsystem.EmailAddress;
|
||||
import lodge.reservationsystem.Reservation;
|
||||
|
||||
@@ -16,8 +13,7 @@ public final class TestReservations {
|
||||
AccomodationManager mgr = new AccomodationManager();
|
||||
String home = System.getenv("HOMEDRIVE")+System.getenv("HOMEPATH");
|
||||
home= home.replace("\\", "/") + "/data";
|
||||
DataRepository.setDataStoreRoot(home);
|
||||
|
||||
mgr.setDataStoreRoot(home);
|
||||
// 1. Get the list of loaded accounts from Manager
|
||||
|
||||
mgr.loadAll();
|
||||
@@ -49,20 +45,20 @@ public final class TestReservations {
|
||||
cabin.setNumberOfBedRooms(3);
|
||||
cabin.setSquareFeet(806);
|
||||
mgr.addReservation( mgr.retrieveAccount(acct.account_number()), cabin);
|
||||
|
||||
Reservation rsrv = cabin;
|
||||
String reservationId = rsrv.reservation_number();
|
||||
// 6. Complete reservation that is associated with an account
|
||||
Reservation rsrv = mgr.retreiveReservation("R######");
|
||||
rsrv = null;
|
||||
rsrv = mgr.retreiveReservation(reservationId);
|
||||
rsrv.Complete();
|
||||
|
||||
//mgr.UpdateAccount(mgr.retrieveAccount(acct.account_number()));
|
||||
mgr.UpdateAccount(mgr.retrieveAccount(acct.account_number()));
|
||||
|
||||
// 7. Cancel reservation that is associated with an account
|
||||
rsrv = mgr.retreiveReservation(reservationId);
|
||||
rsrv.Cancel();
|
||||
mgr.UpdateAccount(mgr.retrieveAccount(acct.account_number()));
|
||||
/*
|
||||
* // 7. Cancel reservation that is associated with an account
|
||||
* if (acct != null) {
|
||||
* rsrv = acct.retrieve("?######");
|
||||
* if (rsrv != null)
|
||||
* rsrv.Cancel();
|
||||
* }
|
||||
*
|
||||
* if (rsrv != null) {
|
||||
* // 8. Change reservation values that can be changed (if reservation is
|
||||
|
||||
@@ -20,7 +20,7 @@ public class AccomodationManager {
|
||||
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
|
||||
System.out.println("File: " + file.toAbsolutePath());
|
||||
// load account number, and content
|
||||
// load reservation files
|
||||
// load reservation
|
||||
return FileVisitResult.CONTINUE;
|
||||
}
|
||||
|
||||
@@ -57,13 +57,41 @@ public class AccomodationManager {
|
||||
return acct;
|
||||
}
|
||||
|
||||
public void addReservation(Account account, CabinReservation cabin) {
|
||||
// TODO Auto-generated method stub
|
||||
throw new UnsupportedOperationException("Unimplemented method 'addReservation'");
|
||||
public boolean addReservation(final Account account, final Reservation reservation) {
|
||||
return account.reservation_list.add(reservation);
|
||||
}
|
||||
|
||||
public Reservation retreiveReservation(String string) {
|
||||
// TODO Auto-generated method stub
|
||||
throw new UnsupportedOperationException("Unimplemented method 'retreiveReservation'");
|
||||
public Reservation retreiveReservation(String reservation_number) {
|
||||
for(Account acct: account_list){
|
||||
for(Reservation rsv: acct.reservation_list){
|
||||
if(rsv.reservation_number == reservation_number){
|
||||
return rsv;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public void setDataStoreRoot(String home) {
|
||||
DataRepository.setDataStoreRoot(home);
|
||||
}
|
||||
}
|
||||
|
||||
final class DataRepository {
|
||||
// SINGLETON CLASS
|
||||
// hard code data store location for storage of
|
||||
// account data files on filesystem
|
||||
private String directoryPath;
|
||||
private static final DataRepository instance = new DataRepository();
|
||||
static DataRepository getInstance() {
|
||||
return instance;
|
||||
}
|
||||
|
||||
final static void setDataStoreRoot(final String direcoryPath){
|
||||
getInstance().directoryPath = direcoryPath;
|
||||
}
|
||||
|
||||
final static String getPath() {
|
||||
return getInstance().directoryPath;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,6 +13,8 @@ public class Account {
|
||||
Address mailing_address;
|
||||
EmailAddress email_address;
|
||||
|
||||
AccountReservationList reservation_list=new AccountReservationList();
|
||||
|
||||
public Account(
|
||||
String account_number,
|
||||
String phone_number,
|
||||
@@ -40,11 +42,12 @@ public class Account {
|
||||
// @TODO Write Account out in JSON
|
||||
public static void Write(Account acct) throws IOException {
|
||||
String dataRoot = DataRepository.getPath();
|
||||
dataRoot = dataRoot + "/" + acct.account_number + ".json";
|
||||
dataRoot = dataRoot + "/acc-" + acct.account_number + ".json";
|
||||
Path path = Paths.get(dataRoot);
|
||||
|
||||
try (BufferedWriter writer = Files.newBufferedWriter(path, StandardCharsets.UTF_8)) {
|
||||
writer.write(acct.toString());
|
||||
writer.write(acct.reservation_list.toString());
|
||||
writer.flush();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ import java.util.ArrayList;
|
||||
public class AccountList extends ArrayList<Account> {
|
||||
|
||||
public static String accountSerial(String phone_number, Address mailing_address, EmailAddress email_address) {
|
||||
return "A" + java.util.Objects.hash(phone_number, mailing_address, email_address);
|
||||
return String.format("A%010d", 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 {
|
||||
|
||||
@@ -2,11 +2,25 @@ package lodge.reservationsystem;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class AccountReservationList {
|
||||
public class AccountReservationList extends ArrayList<Reservation> {
|
||||
|
||||
ArrayList<Reservation> reservation_list = new ArrayList<Reservation>();
|
||||
private static String reservationSerial(Reservation reservation) {
|
||||
return String.format("R%04d", java.util.Objects.hash(reservation));
|
||||
}
|
||||
|
||||
public void addReservation(Reservation reservation) {
|
||||
reservation_list.add(reservation);
|
||||
public boolean add(final Reservation reservation) {
|
||||
reservation.reservation_number = AccountReservationList.reservationSerial(reservation);
|
||||
return super.add(reservation);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("{ \"AccountReservationList\":{");
|
||||
for(int ix=0; ix < this.size() ; ++ix){
|
||||
sb.append(String.format("{ \"%d\":\"%s\"},", ix, this.get(ix).reservation_number));
|
||||
}
|
||||
sb.append("}}");
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
package lodge.reservationsystem;
|
||||
|
||||
public final class DataRepository {
|
||||
// hard code data store location for storage of
|
||||
// account data files on filesystem
|
||||
private String directoryPath;
|
||||
private static final DataRepository instance = new DataRepository();
|
||||
public static DataRepository getInstance() {
|
||||
return instance;
|
||||
}
|
||||
|
||||
public static void setDataStoreRoot(String direcoryPath){
|
||||
getInstance().directoryPath = direcoryPath;
|
||||
}
|
||||
|
||||
public static String getPath() {
|
||||
return getInstance().directoryPath;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package lodge.reservationsystem;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.time.ZonedDateTime;
|
||||
|
||||
public abstract class Reservation {
|
||||
@@ -181,6 +182,11 @@ public abstract class Reservation {
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
//@TODO write reservation out in json
|
||||
public static void Write(Reservation reservation) throws IOException {
|
||||
|
||||
}
|
||||
|
||||
public float calculatePricePerNight() {
|
||||
return 0.0f;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user