From cf332ea14adc0a8de9a859f6c88e6f1f379d6610 Mon Sep 17 00:00:00 2001 From: ZakenChannel Date: Tue, 7 May 2024 14:04:36 +0400 Subject: [PATCH] bug fix --- ProjectAirFighter/pom.xml | 141 +++++++++--------- .../FormWarPlaneCollection.java | 94 +++++------- .../ICollectionGenericObjects.java | 2 + .../ListGenericObjects.java | 5 + .../MassiveGenericObjects.java | 8 + .../StorageCollection.java | 21 ++- .../FormWarPlaneCollection.fxml | 83 ++++------- 7 files changed, 167 insertions(+), 187 deletions(-) diff --git a/ProjectAirFighter/pom.xml b/ProjectAirFighter/pom.xml index 1d57969..6083573 100644 --- a/ProjectAirFighter/pom.xml +++ b/ProjectAirFighter/pom.xml @@ -2,77 +2,80 @@ - 4.0.0 + 4.0.0 - com.example.projectairfighter - ProjectAirFighter - 1.0-SNAPSHOT - ProjectAirFighter + com.example.projectairfighter + ProjectAirFighter + 1.0-SNAPSHOT + ProjectAirFighter - - UTF-8 -5.9.2 + + UTF-8 + 5.9.2 + - - - org.openjfx - javafx-controls - 19.0.2 - - - org.openjfx - javafx-fxml - 19.0.2 - - - org.controlsfx - controlsfx - 11.1.2 - - - org.junit.jupiter - junit-jupiter-api - ${junit.version} - test - - - org.junit.jupiter - junit-jupiter-engine - ${junit.version} - test - + + + org.openjfx + javafx-controls + 19.0.2 + + + org.openjfx + javafx-fxml + 19.0.2 + + + org.controlsfx + controlsfx + 11.1.2 + + + org.junit.jupiter + junit-jupiter-api + ${junit.version} + test + + + org.junit.jupiter + junit-jupiter-engine + ${junit.version} + test + + - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.11.0 - - 19 - 19 - - - - org.openjfx - javafx-maven-plugin - 0.0.8 - - - - default-cli - - com.example.projectairfighter/com.example.projectairfighter.HelloApplication - app - app - app - true - true - true - - - - - - + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.11.0 + + 19 + 19 + + + + org.openjfx + javafx-maven-plugin + 0.0.8 + + + + default-cli + + com.example.projectairfighter/com.example.projectairfighter.HelloApplication + + app + app + app + true + true + true + + + + + + \ No newline at end of file diff --git a/ProjectAirFighter/src/main/java/com/projectairfighter/FormWarPlaneCollection.java b/ProjectAirFighter/src/main/java/com/projectairfighter/FormWarPlaneCollection.java index e731726..1d486b6 100644 --- a/ProjectAirFighter/src/main/java/com/projectairfighter/FormWarPlaneCollection.java +++ b/ProjectAirFighter/src/main/java/com/projectairfighter/FormWarPlaneCollection.java @@ -238,63 +238,21 @@ public class FormWarPlaneCollection extends Application implements Initializable */ @FXML private void saveToolStripMenuItem() { - Stage mainStage = (Stage) splitPane.getScene().getWindow(); + FileChooser fileChooser = new FileChooser(); + fileChooser.setTitle("Сохранить данные"); + fileChooser.getExtensionFilters().addAll( + new FileChooser.ExtensionFilter("Text Files (*.txt)", "*.txt") + ); - Stage dialog = new Stage(); - dialog.setResizable(false); - dialog.initOwner(mainStage); - dialog.initModality(Modality.APPLICATION_MODAL); // Блокируем доступ к основному окну - dialog.setTitle("Выберите коллекцию для сохранения"); - - VBox layout = new VBox(10); - layout.setAlignment(Pos.CENTER); - - ToggleGroup toggleGroup = new ToggleGroup(); - - for (String collection : listViewCollection.getItems()) { - RadioButton radioButton = new RadioButton(collection); - radioButton.setPadding(new Insets(5)); - radioButton.setToggleGroup(toggleGroup); - layout.getChildren().add(radioButton); + File selectedFile = fileChooser.showSaveDialog(null); + if (selectedFile != null) { + boolean success = storageCollection.saveData(selectedFile.getAbsolutePath()); + if (success) { + showAlert("Сохранение прошло успешно", "Результат", Alert.AlertType.INFORMATION); + } else { + showAlert("Не сохранилось", "Результат", Alert.AlertType.ERROR); + } } - - RadioButton allCollections = new RadioButton("Все коллекции"); - Button submitButton = new Button("Сохранить"); - allCollections.setToggleGroup(toggleGroup); - layout.getChildren().addAll(allCollections, submitButton); - - submitButton.setOnAction(e -> { - if (toggleGroup.getSelectedToggle() == null || storageCollection.keys().isEmpty()) { - showError("Не выбрана коллекция или выбранная коллекция пуста"); - return; - } - - FileChooser fileChooser = new FileChooser(); - fileChooser.setTitle("Сохранить данные"); - fileChooser.getExtensionFilters().addAll( - new FileChooser.ExtensionFilter("Text Files (*.txt)", "*.txt") - ); - - File selectedFile = fileChooser.showSaveDialog(null); - if (selectedFile != null) { - boolean success; - RadioButton selectedRadioButton = (RadioButton) toggleGroup.getSelectedToggle(); - if (selectedRadioButton.getText().equals("Все коллекции")) - success = storageCollection.saveData(selectedFile.getAbsolutePath()); - else - success = storageCollection.saveData(selectedFile.getAbsolutePath(), selectedRadioButton.getText()); - if (success) { - showAlert("Сохранение прошло успешно", "Результат", Alert.AlertType.INFORMATION); - } else { - showAlert("Не сохранилось", "Результат", Alert.AlertType.ERROR); - } - } - dialog.close(); // Закрыть диалог после сохранения - }); - - Scene scene = new Scene(layout, 250, 200); - dialog.setScene(scene); - dialog.showAndWait(); // Показываем диалог и ждем закрытия } /** @@ -305,11 +263,9 @@ public class FormWarPlaneCollection extends Application implements Initializable FileChooser fileChooser = new FileChooser(); fileChooser.setTitle("Открыть текстовый файл"); - // Настройка фильтра расширений для выбора только текстовых файлов FileChooser.ExtensionFilter txtFilter = new FileChooser.ExtensionFilter("Text Files (*.txt)", "*.txt"); fileChooser.getExtensionFilters().add(txtFilter); - // Отображение диалога открытия файла File selectedFile = fileChooser.showOpenDialog(null); if (selectedFile != null) { boolean success = storageCollection.loadData(selectedFile.getAbsolutePath()); @@ -323,6 +279,30 @@ public class FormWarPlaneCollection extends Application implements Initializable } } + @FXML + private void loadToolStripMenuItemSelectedCompany() { + if (listViewCollection.getSelectionModel().getSelectedIndex() < 0 || listViewCollection.getSelectionModel().getSelectedItem() == null) { + showAlert("Коллекция не выбрана"); + return; + } + + FileChooser fileChooser = new FileChooser(); + fileChooser.setTitle("Сохранить данные"); + fileChooser.getExtensionFilters().addAll( + new FileChooser.ExtensionFilter("Text Files (*.txt)", "*.txt") + ); + + File selectedFile = fileChooser.showSaveDialog(null); + if (selectedFile != null) { + boolean success = storageCollection.saveData(selectedFile.getAbsolutePath(), listViewCollection.getSelectionModel().getSelectedItem()); + if (success) { + showAlert("Сохранение прошло успешно", "Результат", Alert.AlertType.INFORMATION); + } else { + showAlert("Не сохранилось", "Результат", Alert.AlertType.ERROR); + } + } + } + private void refreshListBoxItems() { listViewCollection.getItems().clear(); for (String colName : storageCollection.keys()) { diff --git a/ProjectAirFighter/src/main/java/com/projectairfighter/collectiongenericobjects/ICollectionGenericObjects.java b/ProjectAirFighter/src/main/java/com/projectairfighter/collectiongenericobjects/ICollectionGenericObjects.java index b7bb006..6958689 100644 --- a/ProjectAirFighter/src/main/java/com/projectairfighter/collectiongenericobjects/ICollectionGenericObjects.java +++ b/ProjectAirFighter/src/main/java/com/projectairfighter/collectiongenericobjects/ICollectionGenericObjects.java @@ -45,6 +45,8 @@ public interface ICollectionGenericObjects { */ T get(int position); + void clear(); + /** * Получение типа коллекции. * diff --git a/ProjectAirFighter/src/main/java/com/projectairfighter/collectiongenericobjects/ListGenericObjects.java b/ProjectAirFighter/src/main/java/com/projectairfighter/collectiongenericobjects/ListGenericObjects.java index b220a2f..06f40f7 100644 --- a/ProjectAirFighter/src/main/java/com/projectairfighter/collectiongenericobjects/ListGenericObjects.java +++ b/ProjectAirFighter/src/main/java/com/projectairfighter/collectiongenericobjects/ListGenericObjects.java @@ -39,6 +39,11 @@ public class ListGenericObjects implements ICollectionGenericObjects { } } + @Override + public void clear() { + collection.clear(); + } + @Override public CollectionType getCollectionType() { return CollectionType.List; diff --git a/ProjectAirFighter/src/main/java/com/projectairfighter/collectiongenericobjects/MassiveGenericObjects.java b/ProjectAirFighter/src/main/java/com/projectairfighter/collectiongenericobjects/MassiveGenericObjects.java index c68966e..523f3b6 100644 --- a/ProjectAirFighter/src/main/java/com/projectairfighter/collectiongenericobjects/MassiveGenericObjects.java +++ b/ProjectAirFighter/src/main/java/com/projectairfighter/collectiongenericobjects/MassiveGenericObjects.java @@ -1,5 +1,6 @@ package com.projectairfighter.collectiongenericobjects; +import java.util.Arrays; import java.util.Iterator; import java.util.NoSuchElementException; @@ -40,6 +41,13 @@ public class MassiveGenericObjects implements ICollectionGenericObjects { return null; } + @Override + public void clear() { + if (collection != null) { + Arrays.fill(collection, null); + } + } + @Override public CollectionType getCollectionType() { return CollectionType.Massive; diff --git a/ProjectAirFighter/src/main/java/com/projectairfighter/collectiongenericobjects/StorageCollection.java b/ProjectAirFighter/src/main/java/com/projectairfighter/collectiongenericobjects/StorageCollection.java index 28c7512..716febd 100644 --- a/ProjectAirFighter/src/main/java/com/projectairfighter/collectiongenericobjects/StorageCollection.java +++ b/ProjectAirFighter/src/main/java/com/projectairfighter/collectiongenericobjects/StorageCollection.java @@ -125,6 +125,7 @@ public class StorageCollection { /** * Сохранение информации в файл + * * @param path путь к файлу * @return результат сохранения */ @@ -175,7 +176,8 @@ public class StorageCollection { /** * Сохранение в файл по имени коллекции - * @param path путь к файлу + * + * @param path путь к файлу * @param collection название коллекции для сохранения * @return результат сохранения */ @@ -226,9 +228,10 @@ public class StorageCollection { /** * Обработка данных в файле - * @param recordLine строка данных для обработки + * + * @param recordLine строка данных для обработки * @param keyValueSeparator разделитель ключа и значения - * @param itemSeparator разделитель свойств + * @param itemSeparator разделитель свойств * @return результат обработки */ @SuppressWarnings("unchecked") @@ -238,8 +241,16 @@ public class StorageCollection { return false; } - CollectionType collectionType = CollectionType.valueOf(record[1]); - ICollectionGenericObjects collection = StorageCollection.createCollection(collectionType); + ICollectionGenericObjects collection; + + if (storages.containsKey(record[0])) { + storages.get(record[0]).clear(); + collection = storages.get(record[0]); + } else { + CollectionType collectionType = CollectionType.valueOf(record[1]); + collection = StorageCollection.createCollection(collectionType); + } + if (collection == null) { return false; } diff --git a/ProjectAirFighter/src/main/resources/com/projectairfighter/FormWarPlaneCollection.fxml b/ProjectAirFighter/src/main/resources/com/projectairfighter/FormWarPlaneCollection.fxml index 75eadb6..2e71a93 100644 --- a/ProjectAirFighter/src/main/resources/com/projectairfighter/FormWarPlaneCollection.fxml +++ b/ProjectAirFighter/src/main/resources/com/projectairfighter/FormWarPlaneCollection.fxml @@ -6,71 +6,41 @@ - - + + - + - + - - - + + + - + - -