finish deserialization.
This commit is contained in:
@@ -3,12 +3,16 @@ package lodge.reservationsystem;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.Type;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.FileVisitResult;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.nio.file.SimpleFileVisitor;
|
||||
import java.nio.file.attribute.BasicFileAttributes;
|
||||
import java.time.ZonedDateTime;
|
||||
|
||||
|
||||
import com.google.gson.stream.JsonReader;
|
||||
|
||||
@@ -62,6 +66,10 @@ 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
|
||||
@@ -116,7 +124,7 @@ final class DataRepository {
|
||||
jsonReader.endObject();
|
||||
break;
|
||||
case "reservation_list":
|
||||
loadReservation(jsonReader, ac);
|
||||
loadReservationRefList(jsonReader, ac);
|
||||
break;
|
||||
default:
|
||||
System.out.println(name);
|
||||
@@ -125,23 +133,136 @@ final class DataRepository {
|
||||
jsonReader.close();
|
||||
return ac.account_number.length() > 8 ? ac : null;
|
||||
}
|
||||
|
||||
return ac;
|
||||
}
|
||||
|
||||
static void loadReservation(final JsonReader rdr, final Account ac) throws IOException {
|
||||
final AccountReservationList reservation_list = new AccountReservationList();
|
||||
static void loadReservationRefList(JsonReader rdr, Account ac) throws IOException {
|
||||
rdr.beginArray();
|
||||
while (rdr.hasNext()) {
|
||||
rdr.beginObject();
|
||||
String name = rdr.nextName();
|
||||
final Reservation rsrv = new HouseReservation(new Address());
|
||||
String reservationType = rdr.nextName();
|
||||
rdr.beginObject();
|
||||
name = rdr.nextName();
|
||||
rsrv.reservation_number = rdr.nextString();
|
||||
rdr.nextName();
|
||||
String reservationNumber = rdr.nextString();
|
||||
loadReservation(ac.reservation_list, reservationType, reservationNumber);
|
||||
rdr.endObject();
|
||||
rdr.endObject();
|
||||
reservation_list.add(rsrv);
|
||||
}
|
||||
rdr.endArray();
|
||||
}
|
||||
|
||||
private static void loadReservation(AccountReservationList reservation_list, String reservationType,
|
||||
String reservationNumber) throws IOException {
|
||||
String filename = String.format("rsv-%s.json", reservationNumber);
|
||||
Path basePath = Paths.get(getPath());
|
||||
Path resolvedPath = basePath.resolve(filename);
|
||||
|
||||
try (BufferedReader in = new BufferedReader(new FileReader(resolvedPath.toFile(), StandardCharsets.UTF_8))) {
|
||||
try (JsonReader jsonReader = new JsonReader(in)) {
|
||||
jsonReader.beginObject();
|
||||
Reservation rsrv = null;
|
||||
while (jsonReader.hasNext()) {
|
||||
String name = jsonReader.nextName();
|
||||
switch (name) {
|
||||
case "HotelReservation":
|
||||
jsonReader.beginObject();
|
||||
rsrv = new HotelReservation();
|
||||
break;
|
||||
case "HouseReservation":
|
||||
jsonReader.beginObject();
|
||||
rsrv = new HouseReservation();
|
||||
break;
|
||||
case "CabinReservation":
|
||||
jsonReader.beginObject();
|
||||
rsrv = new CabinReservation();
|
||||
break;
|
||||
case "physical_address":
|
||||
jsonReader.beginObject();
|
||||
jsonReader.nextName();
|
||||
jsonReader.beginObject();
|
||||
jsonReader.nextName();
|
||||
Address adP = new Address();
|
||||
adP.setStreet(jsonReader.nextString());
|
||||
jsonReader.nextName();
|
||||
adP.setCity(jsonReader.nextString());
|
||||
jsonReader.nextName();
|
||||
adP.setState(jsonReader.nextString());
|
||||
jsonReader.nextName();
|
||||
adP.setZip(jsonReader.nextString());
|
||||
jsonReader.endObject();
|
||||
jsonReader.endObject();
|
||||
rsrv.setPhysical_address(adP);
|
||||
break;
|
||||
case "mailing_address":
|
||||
jsonReader.beginObject();
|
||||
jsonReader.nextName();
|
||||
jsonReader.beginObject();
|
||||
jsonReader.nextName();
|
||||
Address adM = new Address();
|
||||
adM.setStreet(jsonReader.nextString());
|
||||
jsonReader.nextName();
|
||||
adM.setCity(jsonReader.nextString());
|
||||
jsonReader.nextName();
|
||||
adM.setState(jsonReader.nextString());
|
||||
jsonReader.nextName();
|
||||
adM.setZip(jsonReader.nextString());
|
||||
jsonReader.endObject();
|
||||
jsonReader.endObject();
|
||||
rsrv.setMailing_address(adM);
|
||||
break;
|
||||
case "reservation_type":
|
||||
jsonReader.nextString();
|
||||
break;
|
||||
case "reservation_number":
|
||||
rsrv.setReservation_number(jsonReader.nextString());
|
||||
break;
|
||||
case "reservation_status":
|
||||
rsrv.setReservation_status(ReservationStatusEnum.valueOf(jsonReader.nextString()));
|
||||
break;
|
||||
case "kitchen":
|
||||
rsrv.setKitchen(KitchenEnum.valueOf(jsonReader.nextString()));
|
||||
break;
|
||||
case "numberOfBeds":
|
||||
rsrv.setNumberOfBeds(Integer.valueOf(jsonReader.nextString()));
|
||||
break;
|
||||
case "numberOfBedRooms":
|
||||
rsrv.setNumberOfBedRooms(Integer.valueOf(jsonReader.nextString()));
|
||||
break;
|
||||
case "numberOfBathRooms":
|
||||
rsrv.setNumberOfBathRooms(Integer.valueOf(jsonReader.nextString()));
|
||||
break;
|
||||
case "numberOfFloors":
|
||||
rsrv.setNumberOfFloors(Integer.valueOf(jsonReader.nextString()));
|
||||
break;
|
||||
case "squareFeet":
|
||||
rsrv.setSquareFeet(Integer.valueOf(jsonReader.nextString()));
|
||||
break;
|
||||
case "price":
|
||||
rsrv.setPrice(Float.valueOf(jsonReader.nextString()));
|
||||
break;
|
||||
case "reservation_start_date":
|
||||
rsrv.setReservation_start_date(ZonedDateTime.parse(jsonReader.nextString()));
|
||||
break;
|
||||
case "reservation_end_date":
|
||||
rsrv.setReservation_end_date(ZonedDateTime.parse(jsonReader.nextString()));
|
||||
break;
|
||||
|
||||
default:
|
||||
System.out.println(name);
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
if (rsrv.checkValid()) {
|
||||
reservation_list.add(rsrv);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user