В моем текущем приложении JavaFX могут быть разные пользователи, которые имеют разные данные, относящиеся к ним.В разных частях приложения ярлыки, таблицы, графики и т. Д. Связаны с наблюдаемыми свойствами в пользовательском классе.
Проблема возникает при смене пользователей.Привязки все еще привязаны к предыдущему пользователю.Есть ли лучший способ обновить это, кроме повторного связывания всех частей пользовательского интерфейса при изменении пользователя?
Пользовательские данные хранятся в классе DataManager, который передается всем контроллерам, поэтому они имеют доступ кте же данные.
Пример DataManager:
public class DataManager {
private ObservableList<User> userList = FXCollections.observableArrayList();
private User currentUser;
public void addUser(String name, int age, double height, double weight) {
User newUser = new User(name, age, height, weight);
try {
DatabaseWriter.createDatabase();
newUser.setId(UserDBOperations.insertNewUser(newUser));
} catch (SQLException e) {
e.printStackTrace();
}
userList.add(newUser);
}
public void deleteUser(User user) {
try {
DatabaseWriter.createDatabase();
UserDBOperations.deleteExistingUser(user.getId());
} catch (SQLException e) {
e.printStackTrace();
}
userList.remove(user);
}
public updateCurrentUser();
public changeUser();
}
Пример Класс пользователя:
public class User {
private int id;
private StringProperty name;
private IntegerProperty age;
private DoubleProperty height;
private DoubleProperty weight;
private DoubleProperty bmi;
private DoubleProperty totalDistance;
private ObservableList<Event> eventList = FXCollections.observableArrayList();
Существует ли лучший способ использования данных модели, который будет работать лучше в этой ситуации?Я могу предоставить больше кода / контекста приложения, если это поможет ответить.
Спасибо
РЕДАКТИРОВАТЬ 1:
public class ParentController {
private DataManager dataManager = new DataManager();
private ChildController childController1;
private ChildController childController2;
public void initializeChild() {
childController1.setDataManager(dataManager);
childController2.setDataManager(dataManager);
// Controllers for different FXML Files
//
}
}
public class ChildController {
/* Child controller has elements which need data
from the DataManager
*/
private DataManager dataManager;
public void setDataManager(DataManager dataManager) {
this.dataManager = dataManager;
}
}
Основная проблема, которую я пытаюсь преодолеть,как сохранить базу данных, модель, хранящуюся в памяти, и все разные страницы в синхронизации с одной и той же моделью данных.Любые предложения или ресурсы, которые могли бы указать мне правильное направление, были бы хорошими.
РЕДАКТИРОВАТЬ 2: Добавил больше контекста о соединении с базой данных