PIbd-21 Belianin N.N. LabWork07 Hard #10
29
Tank/Errors.log
Normal file
29
Tank/Errors.log
Normal file
@ -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)
|
79
Tank/Infos.log
Normal file
79
Tank/Infos.log
Normal file
@ -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)
|
@ -1,11 +1,40 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<output url="file://$MODULE_DIR$/out/production/Tank" />
|
||||
<output-test url="file://$MODULE_DIR$/out/test/Tank" />
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="module-library" exported="">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/Downloads/log4j-api-2_22_0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library" exported="">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="file://$USER_HOME$/Downloads/log4j-api-2_22_0/org/apache" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library" exported="">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/Downloads/log4j-core-2_22_0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
</component>
|
||||
</module>
|
@ -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<String>();
|
||||
jListStorage = new JList<String>(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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -145,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();
|
||||
@ -180,10 +211,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 +234,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 +268,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 +296,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 +326,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 +357,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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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));
|
||||
}
|
||||
}
|
@ -17,18 +17,18 @@ public class SetGeneric <T extends Object> {
|
||||
// Добавление объектов в набор
|
||||
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 >= Count())
|
||||
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 <T extends Object> {
|
||||
// Удаление объекта из набора с конкретной позиции
|
||||
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;
|
||||
}
|
||||
|
15
Tank/src/TankNotFoundException.java
Normal file
15
Tank/src/TankNotFoundException.java
Normal file
@ -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);
|
||||
}
|
||||
}
|
15
Tank/src/TankStorageOverflowException.java
Normal file
15
Tank/src/TankStorageOverflowException.java
Normal file
@ -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);
|
||||
}
|
||||
}
|
@ -39,9 +39,8 @@ public class TanksGenericCollections<T extends DrawingArmoVehicle, U extends IMo
|
||||
// Перегрузка оператора вычитания
|
||||
public T remove(int pos) {
|
||||
T obj = _collection.Get(pos);
|
||||
if (obj != null) {
|
||||
_collection.Remove(pos);
|
||||
}
|
||||
|
||||
_collection.Remove(pos);
|
||||
return obj;
|
||||
}
|
||||
|
||||
|
@ -1,11 +1,8 @@
|
||||
import com.sun.nio.sctp.InvalidStreamException;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Map;
|
||||
@ -23,7 +20,7 @@ public class TanksGenericStorage {
|
||||
private static String _separatorForObjectWR = ":";
|
||||
private static String _separatorForObject = "\\:";
|
||||
|
||||
public boolean SaveDataSingle(String filename, String key) {
|
||||
public void SaveDataSingle(String filename, String key) throws IOException {
|
||||
if(new File(filename).exists()) {
|
||||
new File(filename).delete();
|
||||
}
|
||||
@ -32,40 +29,38 @@ public class TanksGenericStorage {
|
||||
data.append(key).append("\n");
|
||||
for (DrawingArmoVehicle elem: _tankStorages.get(key).getTanks(100)) {
|
||||
if(_tankStorages.get(key) == null)
|
||||
return false;
|
||||
throw new InvalidPropertiesFormatException("Ключ не найден. Сохранение невозможно");
|
||||
|
||||
if(_tankStorages.get(key) != null)
|
||||
data.append(elem != null ? ExtentionDrawingTank.GetDataForSave(elem, _separatorForObjectWR) + "\n" : "");
|
||||
}
|
||||
|
||||
if(data.length() == 0)
|
||||
return false;
|
||||
throw new InvalidStreamException("Нет данных для сохранения");
|
||||
|
||||
try (BufferedWriter writer = new BufferedWriter(new FileWriter(filename))) {
|
||||
writer.write("TankStorageSingle" + System.lineSeparator() + data.toString());
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean LoadDataSingle(String filename) {
|
||||
public void LoadDataSingle(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("TankStorageSingle"))
|
||||
return false;
|
||||
throw new IllegalArgumentException("Неверный формат данных"); //если нет такой записи, то это не те данные
|
||||
|
||||
String key = reader.readLine();
|
||||
if(key == null || key.length() == 0)
|
||||
return false;
|
||||
throw new NullPointerException("Нет данных для загрузки");
|
||||
|
||||
TanksGenericCollections<DrawingArmoVehicle, DrawingObjectTank> 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("Нет данных для сохранения");
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
// Словарь (как хранилище)
|
||||
|
27
Tank/src/log4j2.xml
Normal file
27
Tank/src/log4j2.xml
Normal file
@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Configuration>
|
||||
<Appenders>
|
||||
<File name="error" fileName="Errors.log" append="true">
|
||||
<PatternLayout>
|
||||
<Pattern>
|
||||
[%-5level] %msg (%d{dd.MM.yyyy})%n
|
||||
</Pattern>
|
||||
</PatternLayout>
|
||||
<ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY"/>
|
||||
</File>
|
||||
<File name="info" fileName="Infos.log" append="true">
|
||||
<PatternLayout>
|
||||
<Pattern>
|
||||
[%-5level] %msg (%d{dd.MM.yyyy})%n
|
||||
</Pattern>
|
||||
</PatternLayout>
|
||||
<ThresholdFilter level="INFO" onMatch="DENY" onMismatch="ACCEPT"/>
|
||||
</File>
|
||||
</Appenders>
|
||||
<Loggers>
|
||||
<Logger name="logger" level="info" additivity="false">
|
||||
<AppenderRef ref="info" level="INFO"/>
|
||||
<AppenderRef ref="error" level="WARN"/>
|
||||
</Logger>
|
||||
</Loggers>
|
||||
</Configuration>
|
Loading…
Reference in New Issue
Block a user