From 3000cc1889102c01eedeceae6b9c90dbae9c5032 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=B8=D0=BA=D0=B8=D1=82=D0=B0=20=D0=91=D0=B5=D0=BB?= =?UTF-8?q?=D1=8F=D0=BD=D0=B8=D0=BD?= Date: Thu, 14 Dec 2023 21:47:53 +0400 Subject: [PATCH 1/8] =?UTF-8?q?=D0=9B=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=BD=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=207?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Tank/Errors.log | 29 ++++++ Tank/Infos.log | 79 +++++++++++++++ Tank/Tank.iml | 11 -- Tank/src/FormTankCollection.java | 111 +++++++++++++++------ Tank/src/FormTankConfig.java | 12 +-- Tank/src/Main.java | 4 +- Tank/src/SetGeneric.java | 13 +-- Tank/src/TankNotFoundException.java | 15 +++ Tank/src/TankStorageOverflowException.java | 15 +++ Tank/src/TanksGenericCollections.java | 5 +- Tank/src/TanksGenericStorage.java | 49 ++++----- Tank/src/log4j2.xml | 27 +++++ 12 files changed, 284 insertions(+), 86 deletions(-) create mode 100644 Tank/Errors.log create mode 100644 Tank/Infos.log delete mode 100644 Tank/Tank.iml create mode 100644 Tank/src/TankNotFoundException.java create mode 100644 Tank/src/TankStorageOverflowException.java create mode 100644 Tank/src/log4j2.xml diff --git a/Tank/Errors.log b/Tank/Errors.log new file mode 100644 index 0000000..685df9b --- /dev/null +++ b/Tank/Errors.log @@ -0,0 +1,29 @@ +[WARN ] Коллекция переполнена: В наборе превышено допустимое количество: 15 (05.12.2023) +[WARN ] Коллекция переполнена: В наборе превышено допустимое количество: 15 (05.12.2023) +[WARN ] Коллекция переполнена: В наборе превышено допустимое количество: 15 (05.12.2023) +[WARN ] Коллекция переполнена: В наборе превышено допустимое количество: 15 (05.12.2023) +[ERROR] +Ошибка при загрузке всех объектов из файла: Объект не найден (05.12.2023) +[WARN ] Коллекция переполнена: В наборе превышено допустимое количество: 15 (05.12.2023) +[ERROR] +Ошибка при загрузке всех объектов из файла: Объект не найден (05.12.2023) +[WARN ] Коллекция переполнена: В наборе превышено допустимое количество: 15 (05.12.2023) +[ERROR] +Ошибка при загрузке всех объектов из файла: Объект не найден (05.12.2023) +[ERROR] Error saving all maps to file: Файл не найден (05.12.2023) +[WARN ] Не удалось удалить объект с позиции1 (05.12.2023) +[WARN ] Не удалось удалить объект с позиции1 (05.12.2023) +[WARN ] Не удалось удалить объект с позиции1 (05.12.2023) +[WARN ] Не удалось удалить объект с позиции1411 (05.12.2023) +[WARN ] Не удалось удалить объект с позиции1411 (05.12.2023) +[WARN ] Не удалось удалить объект с позиции0 (05.12.2023) +[WARN ] Коллекция переполнена: В наборе превышено допустимое количество: 15 (05.12.2023) +[ERROR] Error saving all maps to file: Файл не найден (05.12.2023) +[ERROR] Error saving all maps to file: Файл не найден (05.12.2023) +[ERROR] Error saving all maps to file: Файл не найден (05.12.2023) +[ERROR] Error saving all maps to file: Файл не найден (05.12.2023) +[ERROR] Error saving all maps to file: Файл не найден (05.12.2023) +[WARN ] Коллекция переполнена: В наборе превышено допустимое количество: 15 (05.12.2023) +[WARN ] Не удалось удалить объект с позиции14 (05.12.2023) +[WARN ] Коллекция переполнена: В наборе превышено допустимое количество: 15 (05.12.2023) +[WARN ] Не удалось удалить объект с позиции14 (05.12.2023) diff --git a/Tank/Infos.log b/Tank/Infos.log new file mode 100644 index 0000000..4bd47de --- /dev/null +++ b/Tank/Infos.log @@ -0,0 +1,79 @@ +[INFO ] Загрузка всех объектов из файла: C:\Users\Никита\Java\2 курс\Lab7\file.txt (05.12.2023) +[INFO ] Объект с позиции 0удалён (05.12.2023) +[INFO ] Не удалось удалить объект из набора (05.12.2023) +[INFO ] Не удалось удалить объект из набора (05.12.2023) +[INFO ] Не удалось удалить объект из набора (05.12.2023) +[INFO ] Не удалось удалить объект из набора (05.12.2023) +[INFO ] Загрузка всех объектов из файла: C:\Users\Никита\Java\2 курс\Lab7\file.txt (05.12.2023) +[INFO ] Не удалось удалить объект с позиции 0 (05.12.2023) +[INFO ] Не удалось удалить объект с позиции 12 (05.12.2023) +[INFO ] Объект с позиции 0удалён (05.12.2023) +[INFO ] Не удалось удалить объект с позиции 0 (05.12.2023) +[INFO ] Загрузка всех объектов из файла: C:\Users\Никита\Java\2 курс\Lab7\file.txt (05.12.2023) +[INFO ] Загрузка всех объектов из файла: C:\Users\Никита\Java\2 курс\Lab7\file.txt (05.12.2023) +[INFO ] Не удалось удалить объект с позиции 1 (05.12.2023) +[INFO ] Добавлен новый объект (05.12.2023) +[INFO ] Не удалось удалить объект с позиции 1 (05.12.2023) +[INFO ] Не удалось удалить объект с позиции 0 (05.12.2023) +[INFO ] Загрузка всех объектов из файла: C:\Users\Никита\Java\2 курс\Lab7\file.txt (05.12.2023) +[INFO ] Объект с позиции 14удалён (05.12.2023) +[INFO ] Добавлен новый объект (05.12.2023) +[INFO ] Не удалось удалить объект с позиции 0 (05.12.2023) +[INFO ] Не удалось удалить объект с позиции 0 (05.12.2023) +[INFO ] Не удалось удалить объект с позиции 0 (05.12.2023) +[INFO ] Не удалось удалить объект с позиции 0 (05.12.2023) +[INFO ] Не удалось удалить объект с позиции 100 (05.12.2023) +[INFO ] Загрузка всех объектов из файла: E:\RPP\java\Lab7\file.txt (05.12.2023) +[INFO ] Объект с позиции 14удалён (05.12.2023) +[INFO ] Не удалось удалить объект с позиции 14 (05.12.2023) +[INFO ] Не удалось удалить объект с позиции 1 (05.12.2023) +[INFO ] Загрузка всех объектов из файла: E:\RPP\java\Lab7\file.txt (05.12.2023) +[INFO ] Объект с позиции 14удалён (05.12.2023) +[INFO ] Не удалось удалить объект с позиции 14 (05.12.2023) +[INFO ] Загрузка всех объектов из файла: E:\RPP\java\Lab7\file.txt (05.12.2023) +[INFO ] Не удалось удалить объект с позиции 0 (05.12.2023) +[INFO ] Не удалось удалить объект с позиции 0 (05.12.2023) +[INFO ] Не удалось удалить объект с позиции 11 (05.12.2023) +[INFO ] Не удалось удалить объект с позиции 1 (05.12.2023) +[INFO ] Не удалось удалить объект с позиции 21 (05.12.2023) +[INFO ] Не удалось удалить объект с позиции 11 (05.12.2023) +[INFO ] Набор добавлен: 1 (05.12.2023) +[INFO ] Добавлен новый объект (05.12.2023) +[INFO ] Добавлен новый объект (05.12.2023) +[INFO ] Добавлен новый объект (05.12.2023) +[INFO ] Добавлен новый объект (05.12.2023) +[INFO ] Добавлен новый объект (05.12.2023) +[INFO ] Добавлен новый объект (05.12.2023) +[INFO ] Добавлен новый объект (05.12.2023) +[INFO ] Добавлен новый объект (05.12.2023) +[INFO ] Добавлен новый объект (05.12.2023) +[INFO ] Добавлен новый объект (05.12.2023) +[INFO ] Добавлен новый объект (05.12.2023) +[INFO ] Добавлен новый объект (05.12.2023) +[INFO ] Добавлен новый объект (05.12.2023) +[INFO ] Добавлен новый объект (05.12.2023) +[INFO ] Добавлен новый объект (05.12.2023) +[INFO ] Набор добавлен: 12 (05.12.2023) +[INFO ] Набор добавлен: 1 (05.12.2023) +[INFO ] Добавлен новый объект (05.12.2023) +[INFO ] Добавлен новый объект (05.12.2023) +[INFO ] Добавлен новый объект (05.12.2023) +[INFO ] Добавлен новый объект (05.12.2023) +[INFO ] Добавлен новый объект (05.12.2023) +[INFO ] Добавлен новый объект (05.12.2023) +[INFO ] Добавлен новый объект (05.12.2023) +[INFO ] Добавлен новый объект (05.12.2023) +[INFO ] Добавлен новый объект (05.12.2023) +[INFO ] Добавлен новый объект (05.12.2023) +[INFO ] Добавлен новый объект (05.12.2023) +[INFO ] Добавлен новый объект (05.12.2023) +[INFO ] Добавлен новый объект (05.12.2023) +[INFO ] Добавлен новый объект (05.12.2023) +[INFO ] Добавлен новый объект (05.12.2023) +[INFO ] Сохранение всех объектов в файл: E:\file.txt (05.12.2023) +[INFO ] Загрузка всех объектов из файла: E:\file.txt (05.12.2023) +[INFO ] Объект с позиции 1удалён (05.12.2023) +[INFO ] Загрузка всех объектов из файла: E:\file.txt (05.12.2023) +[INFO ] Объект с позиции 14удалён (05.12.2023) +[INFO ] Загрузка всех объектов из файла: E:\file.txt (05.12.2023) +[INFO ] Объект с позиции 14удалён (05.12.2023) diff --git a/Tank/Tank.iml b/Tank/Tank.iml deleted file mode 100644 index c90834f..0000000 --- a/Tank/Tank.iml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/Tank/src/FormTankCollection.java b/Tank/src/FormTankCollection.java index bd5f100..aafb79b 100644 --- a/Tank/src/FormTankCollection.java +++ b/Tank/src/FormTankCollection.java @@ -14,10 +14,11 @@ import javax.swing.filechooser.FileNameExtensionFilter; import java.util.LinkedList; import java.util.Queue; +import org.apache.logging.log4j.Logger; + public class FormTankCollection { private class Canvas extends JComponent { - public Canvas() { - } + public Canvas() { } public void paintComponent(Graphics g) { super.paintComponent(g); @@ -61,7 +62,13 @@ public class FormTankCollection { } } - FormTankCollection() { + // Логгер + private Logger logger; + + FormTankCollection(Logger logger) { + System.setProperty("log4j.configutationFile", "src//log4j2.xml"); + this.logger = logger; + listModel = new DefaultListModel(); jListStorage = new JList(listModel); canv = new Canvas(); @@ -73,6 +80,7 @@ public class FormTankCollection { new ActionListener() { public void actionPerformed(ActionEvent e) { if (jListStorage.getSelectedIndex() == -1) { + logger.warn("Добавление объекта в несуществующий набор"); return; } var obj = _storage.get(jListStorage.getSelectedValue()); @@ -84,11 +92,20 @@ public class FormTankCollection { form.buttonAdd.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { - if (obj != null && obj.Add(form._vehicle) != -1) { - JOptionPane.showMessageDialog(null, "Объект добавлен", "Информация", JOptionPane.INFORMATION_MESSAGE); - Draw(); - } else { + try { + if (obj != null && obj.Add(form._vehicle) != -1) { + logger.info("Добавлен новый объект"); + JOptionPane.showMessageDialog(null, "Объект добавлен", "Информация", JOptionPane.INFORMATION_MESSAGE); + Draw(); + } + } catch (TankStorageOverflowException ex) { + logger.warn("Коллекция переполнена: "+ex.getMessage()); + JOptionPane.showMessageDialog(null, ex.getMessage()); JOptionPane.showMessageDialog(null, "Не удалось добавить объект", "Информация", JOptionPane.INFORMATION_MESSAGE); + + } catch (Exception ex){ + logger.fatal("Неизвестная ошибка: "+ex.getMessage()); + JOptionPane.showMessageDialog(null, "Ошибка. Неизвестная ошибка: "+ex.getMessage(), "Ошибка", JOptionPane.ERROR_MESSAGE); } form.Frame.dispose(); } @@ -106,6 +123,7 @@ public class FormTankCollection { new ActionListener() { public void actionPerformed(ActionEvent e) { if (jListStorage.getSelectedIndex() == -1) { + logger.warn("Удаление объекта из несуществующего набора"); return; } var obj = _storage.get(jListStorage.getSelectedValue()); @@ -127,13 +145,25 @@ public class FormTankCollection { } int pos = Integer.parseInt(TextBoxNumber.getText()); - var removed = obj.remove(pos); - if (removed != null) { - Queue.add(removed); - JOptionPane.showMessageDialog(null, "Объект удален", "Информация", JOptionPane.INFORMATION_MESSAGE); - Draw(); - } else { - JOptionPane.showMessageDialog(null, "Не удалось удалить объект", "Информация", JOptionPane.INFORMATION_MESSAGE); + try { + var removed = obj.remove(pos); + if (removed != null) { + JOptionPane.showMessageDialog(null, "Объект удален", "Информация", JOptionPane.INFORMATION_MESSAGE); + Queue.add(removed); + Draw(); + logger.info("Объект с позиции " + pos + "удалён"); + } + else + { + JOptionPane.showMessageDialog(null, "Не удалось удалить объект", "Информация", JOptionPane.INFORMATION_MESSAGE); + logger.info("Не удалось удалить объект с позиции " + pos); + } + } catch (TankNotFoundException ex) { + logger.warn("Не удалось удалить объект с позиции"+ pos); + JOptionPane.showMessageDialog(null, ex.getMessage()); + } catch (Exception ex) { + logger.fatal("Неизвестная ошибка: " +ex.getMessage()); + JOptionPane.showMessageDialog(null, "Неизвестная ошибка: "+ex.getMessage(), "Ошибка", JOptionPane.ERROR_MESSAGE); } } } @@ -180,10 +210,12 @@ public class FormTankCollection { public void actionPerformed(ActionEvent e) { if (textBoxSetName.getText().length() == 0) { JOptionPane.showMessageDialog(null, "Не все данные заполнены", "Информация", JOptionPane.INFORMATION_MESSAGE); + logger.warn("Не все данные заполнены"); return; } _storage.AddSet(textBoxSetName.getText()); ReloadObjects(); + logger.info("Набор добавлен: "+textBoxSetName.getText()); } } ); @@ -201,12 +233,14 @@ public class FormTankCollection { new ActionListener() { public void actionPerformed(ActionEvent e) { if (jListStorage.getSelectedIndex() == -1) { + logger.warn("Удаление несуществующего набора"); return; } if (JOptionPane.showConfirmDialog(null, "Удалить объект " + jListStorage.getSelectedValue() + "?", "Удаление", JOptionPane.YES_NO_OPTION) == JOptionPane.NO_OPTION) { return; } _storage.DelSet(jListStorage.getSelectedValue()); + logger.info("Гараж "+jListStorage.getSelectedValue()+" Удалён"); ReloadObjects(); } } @@ -233,10 +267,15 @@ public class FormTankCollection { fileChooser.setDialogTitle("Выберите файл для загрузки данных"); if (fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) { File selectedFile = fileChooser.getSelectedFile(); - if (_storage.LoadData(selectedFile.getAbsolutePath())) { - JOptionPane.showMessageDialog(null, "Загрузка прошла успешно", "Результат", JOptionPane.INFORMATION_MESSAGE); - } else { - JOptionPane.showMessageDialog(null, "Не загрузилось", "Результат", JOptionPane.ERROR_MESSAGE); + + try { + _storage.LoadData(fileChooser.getSelectedFile().getAbsolutePath()); + ReloadObjects(); + logger.info("Загрузка всех объектов из файла: " + fileChooser.getSelectedFile().getAbsolutePath()); + JOptionPane.showMessageDialog(null, "Загрузка всех объектов прошла успешно", "Результат", JOptionPane.INFORMATION_MESSAGE); + } catch (Exception ex) { + logger.error("\n" + "Ошибка при загрузке всех объектов из файла: " + ex.getMessage()); + JOptionPane.showMessageDialog(null,"Ошибка при загрузке всех объектов" + ex.getMessage(), "Результат", JOptionPane.ERROR_MESSAGE); } } ReloadObjects(); @@ -256,10 +295,15 @@ public class FormTankCollection { if (fileChooser.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) { File selectedFile = fileChooser.getSelectedFile(); - if(_storage.SaveData(selectedFile.getAbsolutePath())) - JOptionPane.showMessageDialog(null, "Сохранение прошло успешно", "Результат", JOptionPane.INFORMATION_MESSAGE); - else - JOptionPane.showMessageDialog(null, "Не сохранилось", "Результат", JOptionPane.ERROR_MESSAGE); + + try { + _storage.SaveData(fileChooser.getSelectedFile().getAbsolutePath()); + logger.info("Сохранение всех объектов в файл: " + fileChooser.getSelectedFile().getAbsolutePath()); + JOptionPane.showMessageDialog(null,"Сохранение объектов прошло успешно", "Результат", JOptionPane.INFORMATION_MESSAGE); + } catch (Exception ex) { + logger.error("Error saving all maps to file: " +ex.getMessage()); + JOptionPane.showMessageDialog(null, "Ошибка при сохранении объектов: "+ex.getMessage(), "Результат", JOptionPane.ERROR_MESSAGE); + } } } } @@ -281,10 +325,14 @@ public class FormTankCollection { if (fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) { File selectedFile = fileChooser.getSelectedFile(); - if (_storage.LoadDataSingle(selectedFile.getAbsolutePath())) { + try { + _storage.LoadDataSingle(fileChooser.getSelectedFile().getAbsolutePath()); + ReloadObjects(); + logger.info("Загрузка всех объектов из файла: " + fileChooser.getSelectedFile().getAbsolutePath()); JOptionPane.showMessageDialog(null, "Загрузка прошла успешно", "Результат", JOptionPane.INFORMATION_MESSAGE); - } else { - JOptionPane.showMessageDialog(null, "Не загрузилось", "Результат", JOptionPane.ERROR_MESSAGE); + } catch (Exception ex) { + logger.error("\n" + "Ошибка при загрузке всех объектов из файла: " + ex.getMessage()); + JOptionPane.showMessageDialog(null, "Не загрузилось" + ex.getMessage(), "Результат", JOptionPane.ERROR_MESSAGE); } } ReloadObjects(); @@ -308,10 +356,15 @@ public class FormTankCollection { if (fileChooser.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) { File selectedFile = fileChooser.getSelectedFile(); - if (_storage.SaveDataSingle(selectedFile.getAbsolutePath(), jListStorage.getSelectedValue())) - JOptionPane.showMessageDialog(null, "Сохранение прошло успешно", "Результат", JOptionPane.INFORMATION_MESSAGE); - else - JOptionPane.showMessageDialog(null, "Не сохранилось", "Результат", JOptionPane.ERROR_MESSAGE); + + try { + _storage.SaveDataSingle(fileChooser.getSelectedFile().getAbsolutePath(), jListStorage.getSelectedValue()); + logger.info("Сохранение всех объектов в файл: " + fileChooser.getSelectedFile().getAbsolutePath()); + JOptionPane.showMessageDialog(null,"Сохранение прошло успешно", "Результат", JOptionPane.INFORMATION_MESSAGE); + } catch (Exception ex) { + logger.error("Error saving all maps to file: " +ex.getMessage()); + JOptionPane.showMessageDialog(null, "Не сохранилось: "+ex.getMessage(), "Результат", JOptionPane.ERROR_MESSAGE); + } } } } diff --git a/Tank/src/FormTankConfig.java b/Tank/src/FormTankConfig.java index 37a5413..8ecce0c 100644 --- a/Tank/src/FormTankConfig.java +++ b/Tank/src/FormTankConfig.java @@ -231,12 +231,12 @@ public class FormTankConfig { labelAdditionalColor.setTransferHandler( new TransferHandler(){ @Override - public boolean canImport(TransferHandler.TransferSupport support) { + public boolean canImport(TransferSupport support) { return support.isDataFlavorSupported(ColorTransferable.colorDataFlavor); } @Override - public boolean importData(TransferHandler.TransferSupport support) { + public boolean importData(TransferSupport support) { if (canImport(support)) { try { Color color = (Color) support.getTransferable().getTransferData(ColorTransferable.colorDataFlavor); @@ -262,12 +262,12 @@ public class FormTankConfig { labelWheel.setTransferHandler( new TransferHandler(){ @Override - public boolean canImport(TransferHandler.TransferSupport support) { + public boolean canImport(TransferSupport support) { return support.isDataFlavorSupported(WheelTransferable.wheelDrawingDataFlavor); } @Override - public boolean importData(TransferHandler.TransferSupport support) { + public boolean importData(TransferSupport support) { if (canImport(support)) { try { IOrnamentForm wheelDrawing = (IOrnamentForm) support.getTransferable().getTransferData(WheelTransferable.wheelDrawingDataFlavor); @@ -289,12 +289,12 @@ public class FormTankConfig { canvas.setTransferHandler( new TransferHandler(){ @Override - public boolean canImport(TransferHandler.TransferSupport support) { + public boolean canImport(TransferSupport support) { return support.isDataFlavorSupported(DataFlavor.stringFlavor); } @Override - public boolean importData(TransferHandler.TransferSupport support) { + public boolean importData(TransferSupport support) { if (canImport(support)) { try { String data = (String) support.getTransferable().getTransferData(DataFlavor.stringFlavor); diff --git a/Tank/src/Main.java b/Tank/src/Main.java index c89dd48..2b025d0 100644 --- a/Tank/src/Main.java +++ b/Tank/src/Main.java @@ -1,5 +1,7 @@ +import org.apache.logging.log4j.*; + public class Main { public static void main(String[] args) { - new FormTankCollection(); + new FormTankCollection(LogManager.getLogger(Main.class)); } } \ No newline at end of file diff --git a/Tank/src/SetGeneric.java b/Tank/src/SetGeneric.java index a404521..f091eec 100644 --- a/Tank/src/SetGeneric.java +++ b/Tank/src/SetGeneric.java @@ -17,18 +17,18 @@ public class SetGeneric { // Добавление объектов в набор public int Insert(T tank) { if(_places.size() >= _maxCount) - return -1; + throw new TankStorageOverflowException(_maxCount); _places.add(0,tank); return 0; } public boolean Insert(T tank, int position) { // Проверка позиции - if (position < 0 || position > _places.size()) - return false; + if (position < 0 || position >= _maxCount) + throw new TankNotFoundException(position); if (_places.size() >= _maxCount) - return false; + throw new TankStorageOverflowException(_maxCount); if (position == _places.size()) _places.add(tank); @@ -41,8 +41,9 @@ public class SetGeneric { // Удаление объекта из набора с конкретной позиции public boolean Remove(int position) { // Проверка позиции - if (position < 0 || position >= _places.size()) - return false; + if (position < 0 || position >= Count() || position > _maxCount) + throw new TankNotFoundException(position); + _places.remove(position); return true; } diff --git a/Tank/src/TankNotFoundException.java b/Tank/src/TankNotFoundException.java new file mode 100644 index 0000000..a06d9a0 --- /dev/null +++ b/Tank/src/TankNotFoundException.java @@ -0,0 +1,15 @@ +public class TankNotFoundException extends RuntimeException { + public TankNotFoundException() { } + public TankNotFoundException(String message) { + super(message); + } + public TankNotFoundException(String message, Throwable exception) { + super(message, exception); + } + public TankNotFoundException(Throwable exception) { + super(exception); + } + protected TankNotFoundException(int pos) { + super("Не найден объект по позиции "+pos); + } +} \ No newline at end of file diff --git a/Tank/src/TankStorageOverflowException.java b/Tank/src/TankStorageOverflowException.java new file mode 100644 index 0000000..becb173 --- /dev/null +++ b/Tank/src/TankStorageOverflowException.java @@ -0,0 +1,15 @@ +public class TankStorageOverflowException extends RuntimeException{ + public TankStorageOverflowException() { } + public TankStorageOverflowException(String message){ + super(message); + } + public TankStorageOverflowException(String message, Throwable exception){ + super(message, exception); + } + protected TankStorageOverflowException(Throwable exception){ + super(exception); + } + public TankStorageOverflowException(int count){ + super("В наборе превышено допустимое количество: "+count); + } +} \ No newline at end of file diff --git a/Tank/src/TanksGenericCollections.java b/Tank/src/TanksGenericCollections.java index 8632d9c..d0fb963 100644 --- a/Tank/src/TanksGenericCollections.java +++ b/Tank/src/TanksGenericCollections.java @@ -39,9 +39,8 @@ public class TanksGenericCollections collections = new TanksGenericCollections<>(_pictureWidth, _pictureHeight); if (_tankStorages.containsKey(key)){ @@ -87,7 +82,7 @@ public class TanksGenericStorage { for (String elem : tanksStrings) { DrawingArmoVehicle vehicle = ExtentionDrawingTank.CreateDrawingTank(elem, _separatorForObject, _pictureWidth, _pictureHeight); if(vehicle == null || collections.Add(vehicle) == -1) - return false; + throw new NoSuchElementException("Объект не найден"); } if(_tankStorages.containsKey(key)) @@ -95,13 +90,11 @@ public class TanksGenericStorage { _tankStorages.put(key, collections); } catch (IOException e) { e.printStackTrace(); - return false; } - return true; } // Сохранение информации по технике в хранилище в файл - public boolean SaveData(String filename) { + public void SaveData(String filename) throws IOException { if(new File(filename).exists()) { new File(filename).delete(); } @@ -117,30 +110,28 @@ public class TanksGenericStorage { } if (data.length() == 0) - return false; + throw new InvalidStreamException("File not found, нет данных для сохранения"); try (BufferedWriter writer = new BufferedWriter(new FileWriter(filename))) { writer.write("TankStorage" + System.lineSeparator() + data.toString()); } catch (IOException e) { e.printStackTrace(); - return false; } - return true; } // Загрузка информации по технике в хранилище из файла - public boolean LoadData(String filename) { + public void LoadData(String filename) throws IOException { if (!new File(filename).exists()) { - return false; + throw new FileNotFoundException("Файл не найден"); } try (BufferedReader reader = new BufferedReader(new FileReader(filename))) { String s = reader.readLine(); if (s == null || s.length() == 0) - return false; + throw new NullPointerException("Нет данных для загрузки"); if (!s.startsWith("TankStorage")) - return false; + throw new IllegalArgumentException("Неверный формат данных"); //если нет такой записи, то это не те данные _tankStorages.clear(); @@ -158,15 +149,13 @@ public class TanksGenericStorage { for (String elem : reversedSet) { DrawingArmoVehicle vehicle = ExtentionDrawingTank.CreateDrawingTank(elem, _separatorForObject, _pictureWidth, _pictureHeight); if (vehicle == null || collection.Add(vehicle) == -1) - return false; + throw new NoSuchElementException("Объект не найден"); } _tankStorages.put(record[0], collection); } } catch (IOException e) { e.printStackTrace(); - return false; } - return true; } // Словарь (как хранилище) diff --git a/Tank/src/log4j2.xml b/Tank/src/log4j2.xml new file mode 100644 index 0000000..fadbab0 --- /dev/null +++ b/Tank/src/log4j2.xml @@ -0,0 +1,27 @@ + + + + + + + [%-5level] %msg (%d{dd.MM.yyyy})%n + + + + + + + + [%-5level] %msg (%d{dd.MM.yyyy})%n + + + + + + + + + + + + \ No newline at end of file -- 2.25.1 From f9893aec35b93db6672e4b9f4d2d282cb1038c7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=B8=D0=BA=D0=B8=D1=82=D0=B0=20=D0=91=D0=B5=D0=BB?= =?UTF-8?q?=D1=8F=D0=BD=D0=B8=D0=BD?= Date: Thu, 14 Dec 2023 21:50:41 +0400 Subject: [PATCH 2/8] =?UTF-8?q?=D0=9B=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=BD=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=207?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Tank/Tank.iml | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 Tank/Tank.iml diff --git a/Tank/Tank.iml b/Tank/Tank.iml new file mode 100644 index 0000000..7b1a111 --- /dev/null +++ b/Tank/Tank.iml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file -- 2.25.1 From 672b49e1ecfe287ca937166218475f9480777c7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=B8=D0=BA=D0=B8=D1=82=D0=B0=20=D0=91=D0=B5=D0=BB?= =?UTF-8?q?=D1=8F=D0=BD=D0=B8=D0=BD?= Date: Thu, 14 Dec 2023 21:56:31 +0400 Subject: [PATCH 3/8] =?UTF-8?q?=D0=9B=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=BD=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=207?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Tank/src/FormTankConfig.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Tank/src/FormTankConfig.java b/Tank/src/FormTankConfig.java index 8ecce0c..846160d 100644 --- a/Tank/src/FormTankConfig.java +++ b/Tank/src/FormTankConfig.java @@ -231,12 +231,12 @@ public class FormTankConfig { labelAdditionalColor.setTransferHandler( new TransferHandler(){ @Override - public boolean canImport(TransferSupport support) { + public boolean canImport(TransferHandler.TransferSupport support) { return support.isDataFlavorSupported(ColorTransferable.colorDataFlavor); } @Override - public boolean importData(TransferSupport support) { + public boolean importData(TransferHandler.TransferSupport support) { if (canImport(support)) { try { Color color = (Color) support.getTransferable().getTransferData(ColorTransferable.colorDataFlavor); @@ -262,12 +262,12 @@ public class FormTankConfig { labelWheel.setTransferHandler( new TransferHandler(){ @Override - public boolean canImport(TransferSupport support) { + public boolean canImport(TransferHandler.TransferSupport support) { return support.isDataFlavorSupported(WheelTransferable.wheelDrawingDataFlavor); } @Override - public boolean importData(TransferSupport support) { + public boolean importData(TransferHandler.TransferSupport support) { if (canImport(support)) { try { IOrnamentForm wheelDrawing = (IOrnamentForm) support.getTransferable().getTransferData(WheelTransferable.wheelDrawingDataFlavor); -- 2.25.1 From e1e6a15b1a5f2244609af91cb8453409b876a067 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=B8=D0=BA=D0=B8=D1=82=D0=B0=20=D0=91=D0=B5=D0=BB?= =?UTF-8?q?=D1=8F=D0=BD=D0=B8=D0=BD?= Date: Thu, 14 Dec 2023 21:59:20 +0400 Subject: [PATCH 4/8] =?UTF-8?q?=D0=9B=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=BD=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=207?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Tank/src/FormTankConfig.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Tank/src/FormTankConfig.java b/Tank/src/FormTankConfig.java index 846160d..37a5413 100644 --- a/Tank/src/FormTankConfig.java +++ b/Tank/src/FormTankConfig.java @@ -289,12 +289,12 @@ public class FormTankConfig { canvas.setTransferHandler( new TransferHandler(){ @Override - public boolean canImport(TransferSupport support) { + public boolean canImport(TransferHandler.TransferSupport support) { return support.isDataFlavorSupported(DataFlavor.stringFlavor); } @Override - public boolean importData(TransferSupport support) { + public boolean importData(TransferHandler.TransferSupport support) { if (canImport(support)) { try { String data = (String) support.getTransferable().getTransferData(DataFlavor.stringFlavor); -- 2.25.1 From 5ec534d4367f9ff02df81912996dc01a08bf00d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=B8=D0=BA=D0=B8=D1=82=D0=B0=20=D0=91=D0=B5=D0=BB?= =?UTF-8?q?=D1=8F=D0=BD=D0=B8=D0=BD?= Date: Mon, 18 Dec 2023 01:14:18 +0400 Subject: [PATCH 5/8] =?UTF-8?q?=D0=93=D0=BE=D1=82=D0=BE=D0=B2=D0=B0=D1=8F?= =?UTF-8?q?=20=D0=BB=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82=D0=BE=D1=80=D0=BD?= =?UTF-8?q?=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=207?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Tank/Tank.iml | 2 +- Tank/src/SetGeneric.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Tank/Tank.iml b/Tank/Tank.iml index 7b1a111..af3c693 100644 --- a/Tank/Tank.iml +++ b/Tank/Tank.iml @@ -1,6 +1,6 @@ - + diff --git a/Tank/src/SetGeneric.java b/Tank/src/SetGeneric.java index f091eec..6671cee 100644 --- a/Tank/src/SetGeneric.java +++ b/Tank/src/SetGeneric.java @@ -24,7 +24,7 @@ public class SetGeneric { public boolean Insert(T tank, int position) { // Проверка позиции - if (position < 0 || position >= _maxCount) + if (position < 0 || position >= Count()) throw new TankNotFoundException(position); if (_places.size() >= _maxCount) -- 2.25.1 From 4cc1f29e3e8c3553209d5318e5ec4ee67cc8f414 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=B8=D0=BA=D0=B8=D1=82=D0=B0=20=D0=91=D0=B5=D0=BB?= =?UTF-8?q?=D1=8F=D0=BD=D0=B8=D0=BD?= Date: Mon, 18 Dec 2023 01:21:37 +0400 Subject: [PATCH 6/8] =?UTF-8?q?=D0=93=D0=BE=D1=82=D0=BE=D0=B2=D0=B0=D1=8F?= =?UTF-8?q?=20=D0=BB=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82=D0=BE=D1=80=D0=BD?= =?UTF-8?q?=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=207?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Tank/src/TanksGenericStorage.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Tank/src/TanksGenericStorage.java b/Tank/src/TanksGenericStorage.java index 4f9eeaf..6b788a5 100644 --- a/Tank/src/TanksGenericStorage.java +++ b/Tank/src/TanksGenericStorage.java @@ -29,14 +29,14 @@ public class TanksGenericStorage { data.append(key).append("\n"); for (DrawingArmoVehicle elem: _tankStorages.get(key).getTanks(100)) { if(_tankStorages.get(key) == null) - throw new InvalidPropertiesFormatException(""); + throw new InvalidPropertiesFormatException("Ключ не найден. Сохранение невозможно"); if(_tankStorages.get(key) != null) data.append(elem != null ? ExtentionDrawingTank.GetDataForSave(elem, _separatorForObjectWR) + "\n" : ""); } if(data.length() == 0) - throw new InvalidStreamException("File not found, нет данных для сохранения"); + throw new InvalidStreamException("Нет данных для сохранения"); try (BufferedWriter writer = new BufferedWriter(new FileWriter(filename))) { writer.write("TankStorageSingle" + System.lineSeparator() + data.toString()); @@ -110,7 +110,7 @@ public class TanksGenericStorage { } if (data.length() == 0) - throw new InvalidStreamException("File not found, нет данных для сохранения"); + throw new InvalidStreamException("Нет данных для сохранения"); try (BufferedWriter writer = new BufferedWriter(new FileWriter(filename))) { writer.write("TankStorage" + System.lineSeparator() + data.toString()); -- 2.25.1 From 36a53f06b2a08ee834cb2df18f7f055541159247 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=B8=D0=BA=D0=B8=D1=82=D0=B0=20=D0=91=D0=B5=D0=BB?= =?UTF-8?q?=D1=8F=D0=BD=D0=B8=D0=BD?= Date: Mon, 18 Dec 2023 01:26:20 +0400 Subject: [PATCH 7/8] =?UTF-8?q?=D0=93=D0=BE=D1=82=D0=BE=D0=B2=D0=B0=D1=8F?= =?UTF-8?q?=20=D0=BB=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82=D0=BE=D1=80=D0=BD?= =?UTF-8?q?=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=207?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Tank/src/FormTankCollection.java | 1 + 1 file changed, 1 insertion(+) diff --git a/Tank/src/FormTankCollection.java b/Tank/src/FormTankCollection.java index aafb79b..ee99d3f 100644 --- a/Tank/src/FormTankCollection.java +++ b/Tank/src/FormTankCollection.java @@ -175,6 +175,7 @@ public class FormTankCollection { public void actionPerformed(ActionEvent e) { if (Queue.size() == 0) { JOptionPane.showMessageDialog(null, "Нет удалённых", "Информация", JOptionPane.INFORMATION_MESSAGE); + logger.info("Нет удалённых объектов"); return; } FormTank form = new FormTank(); -- 2.25.1 From 450f790a361fac03b6e6521864602103cf7f52f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=B8=D0=BA=D0=B8=D1=82=D0=B0=20=D0=91=D0=B5=D0=BB?= =?UTF-8?q?=D1=8F=D0=BD=D0=B8=D0=BD?= Date: Wed, 20 Dec 2023 10:22:57 +0400 Subject: [PATCH 8/8] =?UTF-8?q?=D0=93=D0=BE=D1=82=D0=BE=D0=B2=D0=B0=D1=8F?= =?UTF-8?q?=20=D0=BB=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82=D0=BE=D1=80=D0=BD?= =?UTF-8?q?=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=207?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Tank/src/log4j2.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Tank/src/log4j2.xml b/Tank/src/log4j2.xml index fadbab0..ea42c3c 100644 --- a/Tank/src/log4j2.xml +++ b/Tank/src/log4j2.xml @@ -1,5 +1,5 @@ - - + + @@ -24,4 +24,4 @@ - \ No newline at end of file + -- 2.25.1