diff --git a/build.gradle b/build.gradle index a137ef0..225bb6c 100644 --- a/build.gradle +++ b/build.gradle @@ -15,7 +15,7 @@ sourceCompatibility = JavaVersion.VERSION_21 targetCompatibility = JavaVersion.VERSION_21 application { - mainClass = 'lodge.reservationsytem.TestReservations' + mainClass = 'lodge.TestReservations' } sourceSets { @@ -34,3 +34,17 @@ dependencies { implementation files('libs/gson-2.13.1.jar') } +jar { + manifest { + attributes 'Main-Class': application.mainClass + } +} + +tasks.named('jar') { + manifest { + attributes('Implementation-Title': 'reservationsystem', + 'Implementation-Version': 1.0, + 'Main-Class': 'lodge.TestReservations', + 'Class-Path': 'lodge.reservationsystem com.google.gson .' ) + } +} \ No newline at end of file diff --git a/src/META-INF/MANIFEST.MF b/src/META-INF/MANIFEST.MF index 910bc10..3a5fea9 100644 --- a/src/META-INF/MANIFEST.MF +++ b/src/META-INF/MANIFEST.MF @@ -1,3 +1,3 @@ Manifest-Version: 1.0 Main-Class: lodge.TestReservations -Class-Path: . lodge.reservationsystem com.google.gson \ No newline at end of file +Class-Path: lodge.reservationsystem com.google.gson . \ No newline at end of file diff --git a/src/java/lodge/reservationsystem/AccomodationManager.java b/src/java/lodge/reservationsystem/AccomodationManager.java index 05cfab3..37b2de5 100644 --- a/src/java/lodge/reservationsystem/AccomodationManager.java +++ b/src/java/lodge/reservationsystem/AccomodationManager.java @@ -6,6 +6,7 @@ package lodge.reservationsystem; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.Collections; import java.util.List; public final class AccomodationManager { @@ -44,8 +45,8 @@ public final class AccomodationManager { } } - public final AccountList retrieveLoadedAccounts() { - return account_list; + public final List retrieveLoadedAccounts() { + return Collections.unmodifiableList(account_list); } public Account retrieveAccount(String acct_id) { diff --git a/src/java/lodge/reservationsystem/AccountList.java b/src/java/lodge/reservationsystem/AccountList.java index aeef3e3..9f10c83 100644 --- a/src/java/lodge/reservationsystem/AccountList.java +++ b/src/java/lodge/reservationsystem/AccountList.java @@ -10,11 +10,7 @@ import java.util.Collections; import java.util.List; import java.util.ListIterator; -public class AccountList extends ArrayList { - - public AccountList() { - super(); - } +class AccountList extends ArrayList { public static String accountSerial(String phone_number, Address mailing_address, EmailAddress email_address) { return String.format("A%09d", Math.abs(java.util.Objects.hash(phone_number, mailing_address, email_address))); @@ -55,10 +51,6 @@ public class AccountList extends ArrayList { return null; } - public List getList() { - return Collections.unmodifiableList(this); - } - public List getListOfReservations() { ArrayList readList = new ArrayList<>(); for (Account acct: this){ diff --git a/src/java/lodge/reservationsystem/AccountReservationList.java b/src/java/lodge/reservationsystem/AccountReservationList.java index fdffd75..5370bd0 100644 --- a/src/java/lodge/reservationsystem/AccountReservationList.java +++ b/src/java/lodge/reservationsystem/AccountReservationList.java @@ -6,7 +6,7 @@ package lodge.reservationsystem; import java.util.ArrayList; -public class AccountReservationList extends ArrayList { +class AccountReservationList extends ArrayList { private static String reservationSerial(Reservation reservation) { return String.format("R%010d", Math.abs(java.util.Objects.hash(reservation.getPhysical_address()))); @@ -16,7 +16,7 @@ public class AccountReservationList extends ArrayList { public synchronized boolean add(final Reservation reservation) throws RuntimeException{ boolean result = true; Reservation rsrv = this.find(reservation.getReservation_number()); - result = rsrv == null; + result = rsrv == null; if( !result ){ throw new DuplicateObjectException(String.format("Error No Dups, Reservation exists: %s.", rsrv.getReservation_number())); } diff --git a/src/java/lodge/reservationsystem/CabinReservation.java b/src/java/lodge/reservationsystem/CabinReservation.java index 40eef4d..edb4766 100644 --- a/src/java/lodge/reservationsystem/CabinReservation.java +++ b/src/java/lodge/reservationsystem/CabinReservation.java @@ -12,7 +12,7 @@ public final class CabinReservation extends Reservation { protected CabinReservation() { setType('C'); this.setNumberOfBeds(1); - this.setKitchen(KitchenEnum.Kitchenette); + this.setKitchen(KitchenTypeEnum.Kitchenette); } public CabinReservation(final Address physical_address) { @@ -55,7 +55,7 @@ public final class CabinReservation extends Reservation { long days = ChronoUnit.DAYS.between(startdt, enddt); days = (days < 2) ? 1 : days - 1; float calcprice = (getSquareFeet() > 900.0f) ? 120.0f + 15.0f : 120.0f; - if (getKitchen() == KitchenEnum.FullKitchen) { + if (getKitchen() == KitchenTypeEnum.FullKitchen) { calcprice = calcprice + 20.0f; } if (getNumberOfBathRooms() > 1) { diff --git a/src/java/lodge/reservationsystem/DataRepository.java b/src/java/lodge/reservationsystem/DataRepository.java index 606cb4b..bc40993 100644 --- a/src/java/lodge/reservationsystem/DataRepository.java +++ b/src/java/lodge/reservationsystem/DataRepository.java @@ -211,7 +211,7 @@ final class DataRepository { rsrv.setReservation_status(ReservationStatusEnum.valueOf(jsonReader.nextString())); break; case "kitchen": - rsrv.setKitchen(KitchenEnum.valueOf(jsonReader.nextString())); + rsrv.setKitchen(KitchenTypeEnum.valueOf(jsonReader.nextString())); break; case "numberOfBeds": rsrv.setNumberOfBeds(Integer.valueOf(jsonReader.nextString())); diff --git a/src/java/lodge/reservationsystem/HotelReservation.java b/src/java/lodge/reservationsystem/HotelReservation.java index 3a1ac6f..88ff36a 100644 --- a/src/java/lodge/reservationsystem/HotelReservation.java +++ b/src/java/lodge/reservationsystem/HotelReservation.java @@ -17,7 +17,7 @@ public final class HotelReservation extends Reservation { this.setNumberOfBedRooms(1); this.setNumberOfBathRooms(1); this.setNumberOfFloors(1); - this.setKitchen(KitchenEnum.Kitchenette); + this.setKitchen(KitchenTypeEnum.Kitchenette); } public HotelReservation(final Address physical_address) { @@ -73,7 +73,7 @@ public final class HotelReservation extends Reservation { } float calcprice = (getSquareFeet() > 900.0f) ? 120.0f + 15.0f : 120.0f; - if (getKitchen() == KitchenEnum.FullKitchen) { + if (getKitchen() == KitchenTypeEnum.FullKitchen) { calcprice = calcprice + 10.0f; } calcprice = calcprice * days; diff --git a/src/java/lodge/reservationsystem/HouseReservation.java b/src/java/lodge/reservationsystem/HouseReservation.java index f5031fa..698bb20 100644 --- a/src/java/lodge/reservationsystem/HouseReservation.java +++ b/src/java/lodge/reservationsystem/HouseReservation.java @@ -15,7 +15,7 @@ public final class HouseReservation extends Reservation { this.setNumberOfBedRooms(1); this.setNumberOfBathRooms(1); this.setNumberOfFloors(1); - this.setKitchen(KitchenEnum.Kitchenette); + this.setKitchen(KitchenTypeEnum.Kitchenette); } public HouseReservation(final Address physical_address) { diff --git a/src/java/lodge/reservationsystem/KitchenEnum.java b/src/java/lodge/reservationsystem/KitchenTypeEnum.java similarity index 80% rename from src/java/lodge/reservationsystem/KitchenEnum.java rename to src/java/lodge/reservationsystem/KitchenTypeEnum.java index 9d84640..c94bb5c 100644 --- a/src/java/lodge/reservationsystem/KitchenEnum.java +++ b/src/java/lodge/reservationsystem/KitchenTypeEnum.java @@ -4,6 +4,6 @@ */ package lodge.reservationsystem; -public enum KitchenEnum { +public enum KitchenTypeEnum { None, Kitchenette, FullKitchen; } diff --git a/src/java/lodge/reservationsystem/Reservation.java b/src/java/lodge/reservationsystem/Reservation.java index 61c7d67..32d7ce5 100644 --- a/src/java/lodge/reservationsystem/Reservation.java +++ b/src/java/lodge/reservationsystem/Reservation.java @@ -22,7 +22,7 @@ public abstract class Reservation{ private ZonedDateTime reservation_end_date; private ReservationStatusEnum reservation_status; - private KitchenEnum kitchen; + private KitchenTypeEnum kitchen; private Integer numberOfBeds; private Integer numberOfBedRooms; @@ -39,7 +39,7 @@ public abstract class Reservation{ numberOfBedRooms = 1; numberOfBathRooms = 1; numberOfFloors = 1; - kitchen = KitchenEnum.None; + kitchen = KitchenTypeEnum.None; price = 120.0f; reservation_status = ReservationStatusEnum.Draft; mailing_address = null; @@ -86,11 +86,11 @@ public abstract class Reservation{ this.reservation_status = reservation_status; } - public KitchenEnum getKitchen() { + public KitchenTypeEnum getKitchen() { return kitchen; } - public void setKitchen(KitchenEnum kitchen) { + public void setKitchen(KitchenTypeEnum kitchen) { this.kitchen = kitchen; } diff --git a/src/resources/acc-A2074212339.json b/src/resources/acc-A2074212339.json index c845682..c5165f1 100644 --- a/src/resources/acc-A2074212339.json +++ b/src/resources/acc-A2074212339.json @@ -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"}}]}} \ No newline at end of file +{ + "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" + } + } + ] + } +} \ No newline at end of file diff --git a/src/resources/rsv-R0499811708.json b/src/resources/rsv-R0499811708.json index fdb62ed..050c33f 100644 --- a/src/resources/rsv-R0499811708.json +++ b/src/resources/rsv-R0499811708.json @@ -1 +1,33 @@ -{ "HouseReservation":{"reservation_type": "HouseReservation","reservation_number": "R0499811708","reservation_status": "Completed","reservation_start_date": "2025-11-05T10:00Z[UTC]","reservation_end_date": "2025-11-15T22: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": "1215.0"}} \ No newline at end of file +{ + "HouseReservation": { + "reservation_type": "HouseReservation", + "reservation_number": "R0499811708", + "reservation_status": "Completed", + "reservation_start_date": "2025-11-05T10:00Z[UTC]", + "reservation_end_date": "2025-11-15T22: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": "1215.0" + } +} \ No newline at end of file