/
Maksim_Shchelochok
/
Course_Work
Обзор
Документация
Войти
/
Maksim_Shchelochok
/
Course_Work
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/controller/SubjectController.java
95 строк
3 KB
Maksim
Создан контроллер для Speciality
23 июн 2026, 00:46
23 июн 2026, 00:46
13b7c2f
Код
Авторство
О чём код?
package controller; import javafx.scene.control.Alert; import javafx.scene.layout.Region; import model.Subject; import model.SubjectManager; import view.EntityTableView; import view.Input; import java.util.List; import java.util.Optional; public class SubjectController { private final SubjectManager manager = new SubjectManager(); private final EntityTableView view; private final boolean canEdit; public SubjectController(boolean canEdit) { this.canEdit = canEdit; this.view = new EntityTableView( new String[]{"ID", "Название"}, canEdit); view.getRefreshButton().setOnAction(e -> refresh()); if (canEdit) { view.getAddButton().setOnAction(e -> add()); view.getEditButton().setOnAction(e -> edit()); view.getDeleteButton().setOnAction(e -> delete()); } refresh(); } public Region getView() { return view; } // Перечитать данные из БД private void refresh() { List<Subject> data = manager.getAll(); view.setData(data); } private void add() { Input dialog = new Input( "Добавить предмет", new String[]{"Название"}, null); Optional<List<String>> result = dialog.showAndWait(); result.ifPresent(values -> { String error = manager.create(values.get(0)); if (error != null) error(error); refresh(); }); } private void edit() { Object[] row = view.getSelectedRow(); if (row == null) { info("Выберите строку для изменения."); return; } int id = Integer.parseInt(row[0].toString()); String currentName = row[1].toString(); Input dialog = new Input( "Изменить предмет", new String[]{"Название"}, new String[]{currentName}); Optional<List<String>> result = dialog.showAndWait(); result.ifPresent(values -> { String error = manager.update(id, values.get(0)); if (error != null) error(error); refresh(); }); } private void delete() { Object[] row = view.getSelectedRow(); if (row == null) { info("Выберите строку для удаления."); return; } int id = Integer.parseInt(row[0].toString()); String error = manager.delete(id); if (error != null) error(error); refresh(); } // Вспомогательные всплывающие окна private void info(String text) {alert(Alert.AlertType.INFORMATION, text);} private void error(String text) {alert(Alert.AlertType.ERROR, text);} private void alert(Alert.AlertType type, String text) { Alert a = new Alert(type); a.setHeaderText(null); a.setContentText(text); a.showAndWait(); } }