diff --git a/src/main/java/controllers/MainController.java b/src/main/java/controllers/MainController.java index 2616aeb..8f29e59 100644 --- a/src/main/java/controllers/MainController.java +++ b/src/main/java/controllers/MainController.java @@ -10,6 +10,7 @@ import model.Session; import model.User; import java.net.URL; +import java.util.List; import java.util.ResourceBundle; /** @@ -30,18 +31,29 @@ public class MainController extends Controller{ public boolean validateLogin(String user, String pass){ if (Session.session.getDataManager().getUsers().get(user).checkPassword(pass) && User.AccountType.getValueOf(accountType.getValue()) == User.AccountType.PASSENGER){ + Session.session.setUser(Session.session.getDataManager().getUsers().get(user)); return true; } if (Session.session.getDataManager().getDrivers().get(user).checkPassword(pass) && User.AccountType.getValueOf(accountType.getValue()) == User.AccountType.DRIVER){ + Session.session.setUser(Session.session.getDataManager().getDrivers().get(user)); return true; } return false; } + public void getNotifications(){ + List notifications = Session.session.getDataManager().getNotifications().get(Session.session.getUser().getStudentNumber()); + if (notifications != null){ + for (String s: notifications){ + popUp(Alert.AlertType.INFORMATION, "Notification!", "You have received a Notification", s); + } + } + } + public void login() throws Exception { //validate login if (validateLogin(username.getText(), password.getText())){ - parent.getSession().setUserCode(username.getText()); + getNotifications(); changeScene(SceneCode.HOME); }else{ popUp(Alert.AlertType.WARNING, "Warning!", "Invalid Login!", "Your password and username do not match a record in our database."); diff --git a/src/main/java/model/DataManager.java b/src/main/java/model/DataManager.java index fcaabeb..885516b 100644 --- a/src/main/java/model/DataManager.java +++ b/src/main/java/model/DataManager.java @@ -21,8 +21,9 @@ public class DataManager { private ObservableList 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(List rides, List stops, List routes, List trips, List sharedTrips, Map users, Map drivers){ + public DataManager(List rides, List stops, List routes, List trips, List sharedTrips, Map users, Map drivers, Map> notifications){ this.rides = FXCollections.observableArrayList(rides); this.stops = FXCollections.observableArrayList(stops); this.routes = FXCollections.observableArrayList(routes); @@ -30,10 +31,11 @@ public class DataManager { this.sharedTrips = FXCollections.observableArrayList(sharedTrips); this.users = users; this.drivers = drivers; + this.notifications = notifications; } public DataManager(){ - this(FXCollections.observableArrayList(), FXCollections.observableArrayList(), FXCollections.observableArrayList(), FXCollections.observableArrayList(), FXCollections.observableArrayList(), new HashMap(), new HashMap()); + this(FXCollections.observableArrayList(), FXCollections.observableArrayList(), FXCollections.observableArrayList(), FXCollections.observableArrayList(), FXCollections.observableArrayList(), new HashMap(), new HashMap(), new HashMap>()); } public ObservableList getRides() { @@ -132,5 +134,7 @@ public class DataManager { return drivers; } - + public Map> getNotifications() { + return notifications; + } } diff --git a/src/main/java/model/Session.java b/src/main/java/model/Session.java index 45a1168..127261b 100644 --- a/src/main/java/model/Session.java +++ b/src/main/java/model/Session.java @@ -5,7 +5,7 @@ package model; */ public class Session { - private String userCode;//this is like fwy13 + private User user;//this is like fwy13 DataManager dataManager; public static Session session = new Session(); @@ -14,12 +14,12 @@ public class Session { dataManager = new DataManager(); } - public String getUserCode() { - return userCode; + public User getUser() { + return user; } - public void setUserCode(String userCode) { - this.userCode = userCode; + public void setUser(User user) { + this.user = user; } public DataManager getDataManager() { diff --git a/src/main/java/model/User.java b/src/main/java/model/User.java index 58dac00..cdd9ca9 100644 --- a/src/main/java/model/User.java +++ b/src/main/java/model/User.java @@ -56,6 +56,10 @@ public class User { return p.equals(password); } + public int getStudentNumber() { + return studentNumber; + } + public void serialise(){ try { BufferedImage bi = SwingFXUtils.fromFXImage(photo, null); diff --git a/src/main/java/utils/DataManagerSerialiser.java b/src/main/java/utils/DataManagerSerialiser.java index cf4436f..5ad3ee1 100644 --- a/src/main/java/utils/DataManagerSerialiser.java +++ b/src/main/java/utils/DataManagerSerialiser.java @@ -38,7 +38,8 @@ public class DataManagerSerialiser extends Serialiser { boolean serialSharedTripsSuccess = serialiseSharedTrips(sharedTrips, "serialisation/sharedtrips.json"); boolean serialUsersSuccess = serialiseUsers(dataManager.getUsers(), "serialisation/users.json"); boolean serialDriversSuccess = serialiseDrivers(dataManager.getDrivers(), "serialisation/drivers.json"); - return (serialRidesSuccess && serialStopsSuccess && serialRoutesSuccess && serialTripsSuccess && serialSharedTripsSuccess && serialUsersSuccess && serialDriversSuccess); + boolean serialNotificationsSuccess = serialiseNotifications(dataManager.getNotifications(), "serialisation/notification.json"); + return (serialRidesSuccess && serialStopsSuccess && serialRoutesSuccess && serialTripsSuccess && serialSharedTripsSuccess && serialUsersSuccess && serialDriversSuccess && serialNotificationsSuccess); } /** @@ -139,6 +140,20 @@ public class DataManagerSerialiser extends Serialiser { } return true; } + + public boolean serialiseNotifications(Map> notifications, String filepath){ + try{ + String path = getClass().getClassLoader().getResource(filepath).getPath(); + Writer writer = new OutputStreamWriter(new FileOutputStream(path), "UTF-8"); + gson.toJson(notifications, writer); + writer.close(); + } catch (IOException e) { + e.printStackTrace(); + return false; + } + return true; + } + /** * loads the data manager from file * @return whether the data was loaded properly or not @@ -195,7 +210,11 @@ public class DataManagerSerialiser extends Serialiser { drivers.get(driverkey).deserialise(); } - return new DataManager(rides, stops, routes, trips, sharedTrips, users, drivers); + Reader reader8 = new InputStreamReader(getClass().getClassLoader().getResourceAsStream("serialisation/notifications.json"), "UTF-8"); + HashMap> notifications = gson.fromJson(reader8, new TypeToken>>(){}.getType()); + reader8.close(); + + return new DataManager(rides, stops, routes, trips, sharedTrips, users, drivers, notifications); } } diff --git a/src/main/resources/serialisation/notifications.json b/src/main/resources/serialisation/notifications.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/src/main/resources/serialisation/notifications.json @@ -0,0 +1 @@ +{} \ No newline at end of file