diff --git a/src/main/java/controllers/MainController.java b/src/main/java/controllers/MainController.java index 97b8fdc..438ea11 100644 --- a/src/main/java/controllers/MainController.java +++ b/src/main/java/controllers/MainController.java @@ -46,7 +46,7 @@ public class MainController extends Controller{ } public void getNotifications(){ - List notifications = Session.session.getDataManager().getNotifications().get(Session.session.getUser().getStudentNumber()); + List notifications = Session.session.getDataManager().getNotifications().get(Session.session.getUser().getID()); if (notifications != null){ for (String s: notifications){ popUp(Alert.AlertType.INFORMATION, "Notification!", "You have received a Notification", s); @@ -57,7 +57,6 @@ public class MainController extends Controller{ public void login() throws Exception { //validate login if (validateLogin(username.getText(), password.getText())){ - Session.session.getDataManager().newLogged();//sets new arrays for new log ins getNotifications(); changeScene(SceneCode.HOME); }else{ diff --git a/src/main/java/controllers/SharedTripsController.java b/src/main/java/controllers/SharedTripsController.java index 8cca545..82239d5 100644 --- a/src/main/java/controllers/SharedTripsController.java +++ b/src/main/java/controllers/SharedTripsController.java @@ -13,10 +13,7 @@ import javafx.scene.layout.GridPane; import javafx.scene.layout.RowConstraints; import javafx.stage.Popup; import javafx.stage.Stage; -import model.SharedTrip; -import model.Stop; -import model.Trip; -import model.TripStop; +import model.*; import java.net.URL; import java.util.HashMap; @@ -132,7 +129,7 @@ public class SharedTripsController extends Controller{ //book button Button bookRide = new Button("Book Ride"); bookRide.setOnAction(e->{ - trip.bookSeat(parent.getSession().session.getUser()); + trip.bookSeat(Session.session.getUser()); tripDetails.close(); search(); popUp(Alert.AlertType.CONFIRMATION, "Success!", "You have Successfully booked a ride!", "The ride has been successfully booked and can be viewed in your booked rides."); @@ -161,7 +158,7 @@ public class SharedTripsController extends Controller{ Pattern stopNamePattern = Pattern.compile(".*"+stopName.getText()+".*", Pattern.CASE_INSENSITIVE); //ignore direction boolean ignoreDirection = directionBox.getSelectionModel().isSelected(0) || directionBox.getValue() == null; - for(SharedTrip sharedTrip: parent.getSession().getDataManager().getSharedTrips()){ + for(SharedTrip sharedTrip: Session.session.getDataManager().getAllSharedTrips()){ if (sharedTrip.isFull()){ continue; } @@ -192,7 +189,7 @@ public class SharedTripsController extends Controller{ @Override public void runLater(){ - sharedTrips = FXCollections.observableArrayList(parent.getSession().getDataManager().getSharedTrips()); + sharedTrips = FXCollections.observableArrayList(Session.session.getDataManager().getAllSharedTrips()); sharedTripsTable.setItems(sharedTrips); tripNameColumn.setCellValueFactory(p -> new SimpleStringProperty(p.getValue().name)); directionColumn.setCellValueFactory(p -> new SimpleStringProperty(p.getValue().direction)); diff --git a/src/main/java/model/DataManager.java b/src/main/java/model/DataManager.java index e622385..12780b8 100644 --- a/src/main/java/model/DataManager.java +++ b/src/main/java/model/DataManager.java @@ -18,24 +18,24 @@ public class DataManager { private Map> stops; private Map> routes; private Map> trips; - private ObservableList sharedTrips; + private Map> sharedTrips; private Map users; private Map drivers;//seperated from users as they are two different types of accounts private Map> notifications; //indexed by user name - public DataManager(Map> rides, Map> stops, Map> routes, Map> trips, List sharedTrips, Map users, Map drivers, Map> notifications){ + public DataManager(Map> rides, Map> stops, Map> routes, Map> trips, Map> sharedTrips, Map users, Map drivers, Map> notifications){ this.rides = convertRideMapToObserver(rides); this.stops = convertStopMapToObserver(stops); this.routes = convertRouteMapToObserver(routes); this.trips = convertTripMapToObserver(trips); - this.sharedTrips = FXCollections.observableArrayList(sharedTrips); + this.sharedTrips = convertSharedTripMapToObserver(sharedTrips); this.users = users; this.drivers = drivers; this.notifications = notifications; } public DataManager(){ - this(new HashMap<>(), new HashMap<>(), new HashMap<>(), new HashMap<>(), FXCollections.observableArrayList(), new HashMap(), new HashMap(), new HashMap>()); + this(new HashMap<>(), new HashMap<>(), new HashMap<>(), new HashMap<>(), new HashMap<>(), new HashMap(), new HashMap(), new HashMap<>()); } //////////////////////////////////////// @@ -132,11 +132,35 @@ public class DataManager { return convertTripMapToList(trips); } + ////////////////////////////////// + //Route + ////////////////////////////////// + private Map> convertSharedTripMapToObserver(Map> trips){ + HashMap> ob = new HashMap<>(); + for (String key: trips.keySet()){ + ob.put(key, FXCollections.observableArrayList(trips.get(key))); + } + return ob; + } + + private Map> convertSharedTripMapToList(Map> trips){ + HashMap> ob = new HashMap<>(); + for (String key: trips.keySet()){ + ob.put(key, new ArrayList<>(trips.get(key))); + } + return ob; + } + + public Map> sharedTripsMapSerialised(){ + return convertSharedTripMapToList(sharedTrips); + } + public void newLogged(){ rides.putIfAbsent(Session.session.getUser().getID(), FXCollections.observableArrayList()); stops.putIfAbsent(Session.session.getUser().getID(), FXCollections.observableArrayList()); routes.putIfAbsent(Session.session.getUser().getID(), FXCollections.observableArrayList()); trips.putIfAbsent(Session.session.getUser().getID(), FXCollections.observableArrayList()); + sharedTrips.putIfAbsent(Session.session.getUser().getID(), FXCollections.observableArrayList()); notifications.putIfAbsent(Session.session.getUser().getID(), FXCollections.observableArrayList()); } ////////////////////////////// @@ -200,17 +224,25 @@ public class DataManager { return true; } + public ObservableList getAllSharedTrips(){ + ObservableList allTrips = FXCollections.observableArrayList(); + for (String key: sharedTrips.keySet()){ + allTrips.addAll(sharedTrips.get(key)); + } + return allTrips; + } + public ObservableList getSharedTrips() { - return sharedTrips; + return sharedTrips.get(Session.session.getUser().getID()); } public boolean addSharedTrip(SharedTrip sharedTrip){ - for (SharedTrip t: sharedTrips){ + for (SharedTrip t: sharedTrips.get(Session.session.getUser().getID())){ if (sharedTrip.equals(t)){ return false; } } - sharedTrips.add(sharedTrip); + sharedTrips.get(Session.session.getUser().getID()).add(sharedTrip); return true; } diff --git a/src/main/java/utils/DataManagerSerialiser.java b/src/main/java/utils/DataManagerSerialiser.java index 674827a..74031a6 100644 --- a/src/main/java/utils/DataManagerSerialiser.java +++ b/src/main/java/utils/DataManagerSerialiser.java @@ -31,7 +31,7 @@ public class DataManagerSerialiser extends Serialiser { Map> stops = dataManager.stopsMapSerialised(); Map> routes = dataManager.routesMapSerialised(); Map> trips = dataManager.tripsMapSerialised(); - ArrayList sharedTrips = new ArrayList<>(dataManager.getSharedTrips()); + Map> sharedTrips = dataManager.sharedTripsMapSerialised(); boolean serialRidesSuccess = serialise(rides, "serialisation/rides.json"); boolean serialStopsSuccess = serialise(stops, "serialisation/stops.json"); boolean serialRoutesSuccess = serialiseRoutes(routes, "serialisation/routes.json"); @@ -100,9 +100,12 @@ public class DataManagerSerialiser extends Serialiser { * @param filepath File path to serialise it to. * @return */ - public boolean serialiseSharedTrips(ArrayList trips, String filepath){ - for (Trip trip: trips){ - trip.serialise(); + public boolean serialiseSharedTrips(Map> trips, String filepath){ + for (String key: trips.keySet()) { + List tripsList = trips.get(key); + for (Trip trip : tripsList) { + trip.serialise(); + } } try{ String path = getClass().getClassLoader().getResource(filepath).getPath(); @@ -202,11 +205,14 @@ public class DataManagerSerialiser extends Serialiser { } Reader reader5 = new InputStreamReader(getClass().getClassLoader().getResourceAsStream("serialisation/sharedtrips.json"), "UTF-8"); - ArrayList sharedTrips = gson.fromJson(reader5, new TypeToken>(){}.getType()); + HashMap> sharedTrips = gson.fromJson(reader5, new TypeToken>>(){}.getType()); reader5.close(); - for (SharedTrip trip: sharedTrips){ - trip.deserialise(); + for (String key: sharedTrips.keySet()) { + List sharedTripList = sharedTrips.get(key); + for (SharedTrip trip : sharedTripList) { + trip.deserialise(); + } } Reader reader6 = new InputStreamReader(getClass().getClassLoader().getResourceAsStream("serialisation/users.json"), "UTF-8"); diff --git a/target/classes/controllers/MainController.class b/target/classes/controllers/MainController.class index 0246959..764da6c 100644 Binary files a/target/classes/controllers/MainController.class and b/target/classes/controllers/MainController.class differ diff --git a/target/classes/model/DataManager.class b/target/classes/model/DataManager.class index 38b8cf8..bcf5d32 100644 Binary files a/target/classes/model/DataManager.class and b/target/classes/model/DataManager.class differ diff --git a/target/classes/serialisation/sharedtrips.json b/target/classes/serialisation/sharedtrips.json index 0637a08..9e26dfe 100644 --- a/target/classes/serialisation/sharedtrips.json +++ b/target/classes/serialisation/sharedtrips.json @@ -1 +1 @@ -[] \ No newline at end of file +{} \ No newline at end of file diff --git a/target/classes/utils/DataManagerSerialiser$1.class b/target/classes/utils/DataManagerSerialiser$1.class index c63b01f..9f0b43c 100644 Binary files a/target/classes/utils/DataManagerSerialiser$1.class and b/target/classes/utils/DataManagerSerialiser$1.class differ diff --git a/target/classes/utils/DataManagerSerialiser$2.class b/target/classes/utils/DataManagerSerialiser$2.class index 43eb8fe..e7b4e0d 100644 Binary files a/target/classes/utils/DataManagerSerialiser$2.class and b/target/classes/utils/DataManagerSerialiser$2.class differ diff --git a/target/classes/utils/DataManagerSerialiser$3.class b/target/classes/utils/DataManagerSerialiser$3.class index 371b202..2be77cb 100644 Binary files a/target/classes/utils/DataManagerSerialiser$3.class and b/target/classes/utils/DataManagerSerialiser$3.class differ diff --git a/target/classes/utils/DataManagerSerialiser$4.class b/target/classes/utils/DataManagerSerialiser$4.class index 125f6aa..48ac049 100644 Binary files a/target/classes/utils/DataManagerSerialiser$4.class and b/target/classes/utils/DataManagerSerialiser$4.class differ diff --git a/target/classes/utils/DataManagerSerialiser$5.class b/target/classes/utils/DataManagerSerialiser$5.class index 488fe2b..f4a135a 100644 Binary files a/target/classes/utils/DataManagerSerialiser$5.class and b/target/classes/utils/DataManagerSerialiser$5.class differ diff --git a/target/classes/utils/DataManagerSerialiser$6.class b/target/classes/utils/DataManagerSerialiser$6.class index 813ec1b..fc663bf 100644 Binary files a/target/classes/utils/DataManagerSerialiser$6.class and b/target/classes/utils/DataManagerSerialiser$6.class differ diff --git a/target/classes/utils/DataManagerSerialiser$7.class b/target/classes/utils/DataManagerSerialiser$7.class index 1d278bc..38859d0 100644 Binary files a/target/classes/utils/DataManagerSerialiser$7.class and b/target/classes/utils/DataManagerSerialiser$7.class differ diff --git a/target/classes/utils/DataManagerSerialiser$8.class b/target/classes/utils/DataManagerSerialiser$8.class index 5dde690..3eee03b 100644 Binary files a/target/classes/utils/DataManagerSerialiser$8.class and b/target/classes/utils/DataManagerSerialiser$8.class differ diff --git a/target/classes/utils/DataManagerSerialiser.class b/target/classes/utils/DataManagerSerialiser.class index 65e9425..ebe59eb 100644 Binary files a/target/classes/utils/DataManagerSerialiser.class and b/target/classes/utils/DataManagerSerialiser.class differ