/
syunya
/
Course2026
Обзор
Документация
Войти
/
syunya
/
Course2026
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/main/java/ru.machine.service/controller/ClientController.java
351 строка
7 KB
syunya
Update: ClientController.java, clients.fxml
25 июн 2026, 22:21
Верифицирован
25 июн 2026, 22:21
10a1710
Код
Авторство
О чём код?
package ru.machine.service.controller; import javafx.collections.FXCollections; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.scene.Scene; import javafx.scene.control.*; import javafx.scene.control.cell.PropertyValueFactory; import javafx.stage.Stage; import ru.machine.service.dao.ClientDAO; import ru.machine.service.model.Client; import ru.machine.service.util.Session; import ru.machine.service.model.User; public class ClientController { @FXML private TableView<Client> tableClients; @FXML private TableColumn<Client, Integer> colId; @FXML private TableColumn<Client, String> colCompany; @FXML private TableColumn<Client, String> colAddress; @FXML private Button btnAdd; @FXML private Button btnEdit; @FXML private Button btnDelete; @FXML private TableColumn<Client, String> colPhone; private ClientDAO clientDAO; @FXML public void initialize() { try { clientDAO = new ClientDAO(); colId.setCellValueFactory( new PropertyValueFactory<>("id") ); colCompany.setCellValueFactory( new PropertyValueFactory<>("companyName") ); colAddress.setCellValueFactory( new PropertyValueFactory<>("address") ); colPhone.setCellValueFactory( new PropertyValueFactory<>("phone") ); User currentUser = Session.getCurrentUser(); if (currentUser != null && currentUser.getRoleId() == 2) { btnAdd.setVisible(false); btnEdit.setVisible(false); btnDelete.setVisible(false); // чтобы не оставалось пустого места btnAdd.setManaged(false); btnEdit.setManaged(false); btnDelete.setManaged(false); } loadData(); } catch (Exception e) { showError(e.getMessage()); } } @FXML public void loadData() { try { tableClients.setItems( FXCollections.observableArrayList( clientDAO.getAll() ) ); } catch (Exception e) { showError(e.getMessage()); } } @FXML private void addClient() { Dialog<Client> dialog = createDialog(null); dialog.showAndWait().ifPresent(client -> { try { clientDAO.add(client); loadData(); } catch (Exception e) { showError(e.getMessage()); } }); } @FXML private void editClient() { Client selected = tableClients .getSelectionModel() .getSelectedItem(); if (selected == null) { showError("Выберите клиента"); return; } Dialog<Client> dialog = createDialog(selected); dialog.showAndWait().ifPresent(client -> { try { clientDAO.update(client); loadData(); } catch (Exception e) { showError(e.getMessage()); } }); } @FXML private void deleteClient() { Client selected = tableClients .getSelectionModel() .getSelectedItem(); if (selected == null) { showError("Выберите клиента"); return; } try { clientDAO.delete( selected.getId() ); loadData(); } catch (Exception e) { showError(e.getMessage()); } } private Dialog<Client> createDialog( Client client ) { Dialog<Client> dialog = new Dialog<>(); TextField companyField = new TextField(); TextField addressField = new TextField(); TextField phoneField = new TextField(); if (client != null) { companyField.setText( client.getCompanyName() ); addressField.setText( client.getAddress() ); phoneField.setText( client.getPhone() ); } dialog.getDialogPane().setContent( new javafx.scene.layout.VBox( 10, new Label("Компания"), companyField, new Label("Адрес"), addressField, new Label("Телефон"), phoneField ) ); ButtonType saveButton = new ButtonType( "Сохранить", ButtonBar.ButtonData.OK_DONE ); dialog.getDialogPane() .getButtonTypes() .addAll( saveButton, ButtonType.CANCEL ); dialog.setResultConverter(button -> { if (button == saveButton) { Client result = new Client(); if (client != null) { result.setId( client.getId() ); } result.setCompanyName( companyField.getText() ); result.setAddress( addressField.getText() ); result.setPhone( phoneField.getText() ); return result; } return null; }); return dialog; } @FXML private void backToMenu() { try { FXMLLoader loader = new FXMLLoader( getClass().getResource( "/main_menu.fxml" ) ); Stage stage = (Stage) tableClients .getScene() .getWindow(); stage.setScene( new Scene( loader.load(), 1000, 700 ) ); } catch (Exception e) { e.printStackTrace(); Alert alert = new Alert(Alert.AlertType.ERROR); alert.setContentText( e.toString() ); alert.showAndWait(); } } private void showError( String text ) { Alert alert = new Alert( Alert.AlertType.ERROR ); alert.setTitle( "Ошибка" ); alert.setContentText( text ); alert.showAndWait(); } }