Tsukanova I.V. HardLabWork7 #9
@ -7,5 +7,6 @@
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" name="log4j-1.2.17" level="project" />
|
||||
</component>
|
||||
</module>
|
21
AircraftCarrier_Hard.iml
Normal file
21
AircraftCarrier_Hard.iml
Normal file
@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$" isTestSource="false" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../apache-log4j-1.2.17/log4j-1.2.17.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="library" name="log4j-1.2.17" level="project" />
|
||||
</component>
|
||||
</module>
|
28
log4j.properties
Normal file
28
log4j.properties
Normal file
@ -0,0 +1,28 @@
|
||||
log4j.logger.FormMapWithSetWarshipGeneric=INFO, fileAppender, adminAppender
|
||||
|
||||
log4j.additivity.FormMapWithSetWarshipGeneric=false
|
||||
log4j.additivity.FormMapWithSetWarshipGenericAdmin=false
|
||||
|
||||
log4j.appender.fileAppender.threshold=INFO
|
||||
log4j.appender.adminAppender.threshold=INFO
|
||||
|
||||
log4j.appender.fileAppender=org.apache.log4j.RollingFileAppender
|
||||
log4j.appender.fileAppender.File=user.log
|
||||
log4j.appender.fileAppender.MaxFileSize=1MB
|
||||
log4j.appender.fileAppender.MaxBackupIndex=1
|
||||
log4j.appender.fileAppender.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.fileAppender.layout.ConversionPattern=%-5p %c{1}:%L - %m %d{dd-MM-yyyy}%n
|
||||
log4j.appender.fileAppender.filter.a=org.apache.log4j.varia.LevelRangeFilter
|
||||
log4j.appender.fileAppender.filter.a.LevelMin=INFO
|
||||
log4j.appender.fileAppender.filter.a.LevelMax=INFO
|
||||
log4j.appender.fileAppender.filter.a.AcceptOnMatch=TRUE
|
||||
|
||||
log4j.appender.adminAppender=org.apache.log4j.RollingFileAppender
|
||||
log4j.appender.adminAppender.File=admin.log
|
||||
log4j.appender.adminAppender.MaxFileSize=1MB
|
||||
log4j.appender.adminAppender.MaxBackupIndex=1
|
||||
log4j.appender.adminAppender.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.adminAppender.layout.ConversionPattern=%-5p %c{1}:%L - %m %d{dd-MM-yyyy}%n
|
||||
log4j.appender.adminAppender.filter.a=org.apache.log4j.varia.LevelRangeFilter
|
||||
log4j.appender.adminAppender.filter.a.LevelMin=WARN
|
||||
log4j.appender.adminAppender.filter.a.AcceptOnMatch=TRUE
|
8
messages
Normal file
8
messages
Normal file
@ -0,0 +1,8 @@
|
||||
2022-12-14 00:20:19 INFO FormMapWithSetTractorsGeneric:195 - Переход на карту: 1
|
||||
2022-12-14 00:20:19 INFO FormMapWithSetTractorsGeneric:228 - Добавлена карта: 1
|
||||
INFO FormMapWithSetTractorsGeneric:195 - Переход на карту: 1 2022-12-14
|
||||
INFO FormMapWithSetTractorsGeneric:228 - Добавлена карта: 1 2022-12-14
|
||||
INFO FormMapWithSetTractorsGeneric:195 - Переход на карту: 1 2022-12-14
|
||||
INFO FormMapWithSetTractorsGeneric:228 - Добавлена карта: 1 2022-12-14
|
||||
INFO FormMapWithSetTractorsGeneric:195 - Переход на карту: 1 14-12-2022
|
||||
INFO FormMapWithSetTractorsGeneric:228 - Добавлена карта: 1 14-12-2022
|
@ -7,6 +7,7 @@ import java.io.File;
|
||||
import java.util.HashMap;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import org.apache.log4j.*;
|
||||
public class FormMapWithSetWarships extends JFrame{
|
||||
private JPanel mainPanel;
|
||||
private JPanel PictureBox;
|
||||
@ -41,6 +42,8 @@ public class FormMapWithSetWarships extends JFrame{
|
||||
put("LineMap", new LineMap());
|
||||
}};
|
||||
|
||||
private Logger _logger;
|
||||
|
||||
public FormMapWithSetWarships(){
|
||||
InitializeComponent();
|
||||
}
|
||||
@ -71,6 +74,7 @@ public class FormMapWithSetWarships extends JFrame{
|
||||
}
|
||||
|
||||
private void InitializeComponent(){
|
||||
_logger = Logger.getLogger("FormMapWithSetTractorsGeneric");
|
||||
setContentPane(mainPanel);
|
||||
setTitle("Warship");
|
||||
setSize(935, 693);
|
||||
@ -104,14 +108,14 @@ public class FormMapWithSetWarships extends JFrame{
|
||||
fs.setDialogTitle("Save");
|
||||
int result = fs.showSaveDialog(null);
|
||||
if (result == JFileChooser.APPROVE_OPTION) {
|
||||
File selectedFile = fs.getSelectedFile();
|
||||
if (_mapsCollection.SaveData(selectedFile.getPath()))
|
||||
{
|
||||
try {
|
||||
File selectedFile = fs.getSelectedFile();
|
||||
_mapsCollection.SaveData(selectedFile.getPath());
|
||||
_logger.info("Успешное сохранение в файл: "+selectedFile.getPath());
|
||||
JOptionPane.showMessageDialog(null, "Сохранение прошло успешно", "Результат",JOptionPane.INFORMATION_MESSAGE);
|
||||
}
|
||||
else
|
||||
{
|
||||
JOptionPane.showMessageDialog(null, "Не сохранилось", "Результат",JOptionPane.ERROR_MESSAGE);
|
||||
} catch (Exception ex) {
|
||||
_logger.error("Данные не сохранились: "+ex.getMessage());
|
||||
JOptionPane.showMessageDialog(null, "Не сохранилось: "+ex.getMessage(), "Результат",JOptionPane.ERROR_MESSAGE);
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -126,15 +130,15 @@ public class FormMapWithSetWarships extends JFrame{
|
||||
fs.setDialogTitle("Load");
|
||||
int result = fs.showSaveDialog(null);
|
||||
if (result == JFileChooser.APPROVE_OPTION) {
|
||||
File selectedFile = fs.getSelectedFile();
|
||||
if (_mapsCollection.LoadData(selectedFile.getPath()))
|
||||
{
|
||||
try {
|
||||
File selectedFile = fs.getSelectedFile();
|
||||
_mapsCollection.LoadData(selectedFile.getPath());
|
||||
ReloadMaps();
|
||||
_logger.info("Успешная загрузка из файла: "+selectedFile.getPath());
|
||||
JOptionPane.showMessageDialog(null, "Загрузка прошла успешно", "Результат",JOptionPane.INFORMATION_MESSAGE);
|
||||
}
|
||||
else
|
||||
{
|
||||
JOptionPane.showMessageDialog(null, "Не удалось загрузить", "Результат",JOptionPane.ERROR_MESSAGE);
|
||||
} catch(Exception ex) {
|
||||
_logger.error("Не загрузилось: "+ex.getMessage());
|
||||
JOptionPane.showMessageDialog(null, "Не загрузилось: "+ex.getMessage(), "Результат",JOptionPane.ERROR_MESSAGE);
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -149,14 +153,14 @@ public class FormMapWithSetWarships extends JFrame{
|
||||
fs.setDialogTitle("SaveMap");
|
||||
int result = fs.showSaveDialog(null);
|
||||
if (result == JFileChooser.APPROVE_OPTION) {
|
||||
File selectedFile = fs.getSelectedFile();
|
||||
if (_mapsCollection.SaveMap(selectedFile.getPath(), ListBoxMaps.getSelectedValue().toString()))
|
||||
{
|
||||
try {
|
||||
File selectedFile = fs.getSelectedFile();
|
||||
_mapsCollection.SaveMap(selectedFile.getPath(), ListBoxMaps.getSelectedValue().toString());
|
||||
_logger.info("Успешное сохранение карты в файл: "+selectedFile.getPath());
|
||||
JOptionPane.showMessageDialog(null, "Сохранение карты прошло успешно", "Результат",JOptionPane.INFORMATION_MESSAGE);
|
||||
}
|
||||
else
|
||||
{
|
||||
JOptionPane.showMessageDialog(null, "Не сохранилась карта", "Результат",JOptionPane.ERROR_MESSAGE);
|
||||
} catch(Exception ex) {
|
||||
_logger.error("Не сохранилась карта: "+ex.getMessage());
|
||||
JOptionPane.showMessageDialog(null, "Не сохранилась карта: "+ex.getMessage(), "Результат",JOptionPane.ERROR_MESSAGE);
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -171,15 +175,15 @@ public class FormMapWithSetWarships extends JFrame{
|
||||
fs.setDialogTitle("LoadMap");
|
||||
int result = fs.showSaveDialog(null);
|
||||
if (result == JFileChooser.APPROVE_OPTION) {
|
||||
File selectedFile = fs.getSelectedFile();
|
||||
if (_mapsCollection.LoadMap(selectedFile.getPath()))
|
||||
{
|
||||
JOptionPane.showMessageDialog(null, "Загрузка карты прошла успешно", "Результат",JOptionPane.INFORMATION_MESSAGE);
|
||||
try {
|
||||
File selectedFile = fs.getSelectedFile();
|
||||
_mapsCollection.LoadMap(selectedFile.getPath());
|
||||
JOptionPane.showMessageDialog(null, "Загрузка карты прошла успешно", "Результат", JOptionPane.INFORMATION_MESSAGE);
|
||||
ReloadMaps();
|
||||
}
|
||||
else
|
||||
{
|
||||
JOptionPane.showMessageDialog(null, "Не загрузилась карта", "Результат",JOptionPane.ERROR_MESSAGE);
|
||||
_logger.info("Успешная загрузка карты из файла: "+selectedFile.getPath());
|
||||
}catch(Exception ex) {
|
||||
_logger.error("Не загрузилась карта: "+ex.getMessage());
|
||||
JOptionPane.showMessageDialog(null, "Не загрузилась карта", "Результат", JOptionPane.ERROR_MESSAGE);
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -188,6 +192,7 @@ public class FormMapWithSetWarships extends JFrame{
|
||||
if(ListBoxMaps.getSelectedIndex() == -1)
|
||||
return;
|
||||
bufferedImage = _mapsCollection.get(ListBoxMaps.getSelectedValue().toString()).ShowSet();
|
||||
_logger.log(Level.INFO,"Переход на карту: " + ListBoxMaps.getSelectedValue().toString());
|
||||
repaint();
|
||||
});
|
||||
|
||||
@ -199,6 +204,7 @@ public class FormMapWithSetWarships extends JFrame{
|
||||
if(JOptionPane.showConfirmDialog(this,"Удалить карту " + ListBoxMaps.getSelectedValue().toString() + "?",
|
||||
"Удаление",JOptionPane.YES_NO_OPTION) == 0)
|
||||
{
|
||||
_logger.info("Удалена карта: " + ListBoxMaps.getSelectedValue().toString());
|
||||
_mapsCollection.DelMap(ListBoxMaps.getSelectedValue().toString());
|
||||
ReloadMaps();
|
||||
}
|
||||
@ -207,16 +213,19 @@ public class FormMapWithSetWarships extends JFrame{
|
||||
CreateMapButton.addActionListener(e -> {
|
||||
if (СomboBoxSelectorMap.getSelectedIndex() == -1 || TextFieldMap.getText() == null || TextFieldMap.getText().equals(""))
|
||||
{
|
||||
_logger.info("Не все данные были заполнены при добавлении карты");
|
||||
JOptionPane.showMessageDialog(this,"Не все данные заполнены","Ошибка",JOptionPane.ERROR_MESSAGE);
|
||||
return;
|
||||
}
|
||||
if (!_mapsDict.containsKey(СomboBoxSelectorMap.getSelectedItem()))
|
||||
{
|
||||
_logger.info("Нет карты с названием: " + СomboBoxSelectorMap.getSelectedItem());
|
||||
JOptionPane.showMessageDialog(this,"Нет такой карты","Ошибка",JOptionPane.ERROR_MESSAGE);
|
||||
return;
|
||||
}
|
||||
_mapsCollection.AddMap(TextFieldMap.getText(), _mapsDict.get(СomboBoxSelectorMap.getSelectedItem().toString()));
|
||||
ReloadMaps();
|
||||
_logger.info("Добавлена карта: " + TextFieldMap.getText());
|
||||
});
|
||||
|
||||
deletedWarshipButtom.addActionListener(e -> {
|
||||
@ -235,20 +244,31 @@ public class FormMapWithSetWarships extends JFrame{
|
||||
ButtonAddWarship.addActionListener(e -> {
|
||||
FormWarshipConfig formWarshipConfig = new FormWarshipConfig();
|
||||
formWarshipConfig.AddEvent(newWarship ->{
|
||||
if(ListBoxMaps.getSelectedIndex() == -1){
|
||||
return;
|
||||
}
|
||||
if(newWarship != null){
|
||||
DrawingObjectWarship warship = new DrawingObjectWarship(newWarship);
|
||||
if (_mapsCollection.get(ListBoxMaps.getSelectedValue().toString()).Plus(warship) >= 0) {
|
||||
JOptionPane.showMessageDialog(null, "Объект добавлен");
|
||||
bufferedImage = _mapsCollection.get(ListBoxMaps.getSelectedValue().toString()).ShowSet();
|
||||
repaint();
|
||||
try{
|
||||
if(ListBoxMaps.getSelectedIndex() == -1){
|
||||
return;
|
||||
}
|
||||
else {
|
||||
JOptionPane.showMessageDialog(null, "Не удалось добавить объект");
|
||||
if(newWarship != null){
|
||||
DrawingObjectWarship warship = new DrawingObjectWarship(newWarship);
|
||||
if (_mapsCollection.get(ListBoxMaps.getSelectedValue().toString()).Plus(warship) >= 0) {
|
||||
_logger.info("Добавлен объект: " + warship);
|
||||
JOptionPane.showMessageDialog(null, "Объект добавлен");
|
||||
bufferedImage = _mapsCollection.get(ListBoxMaps.getSelectedValue().toString()).ShowSet();
|
||||
repaint();
|
||||
}
|
||||
else {
|
||||
_logger.info("Не удалось добавить объект: " + warship);
|
||||
JOptionPane.showMessageDialog(null, "Не удалось добавить объект");
|
||||
}
|
||||
}
|
||||
}catch (StorageOverflowException ex){
|
||||
_logger.warn("Ошибка переполнения хранилища: " + ex.getMessage());
|
||||
JOptionPane.showMessageDialog(null, "Ошибка переполнения хранилища: " + ex.getMessage());
|
||||
}catch (Exception ex){
|
||||
_logger.fatal("Неизвестная ошибка добавления: " + ex.getMessage());
|
||||
JOptionPane.showMessageDialog(null, "Неизвестная ошибка: " + ex.getMessage());
|
||||
}
|
||||
|
||||
});
|
||||
formWarshipConfig.setSize(1000, 450);
|
||||
formWarshipConfig.setVisible(true);
|
||||
@ -270,17 +290,28 @@ public class FormMapWithSetWarships extends JFrame{
|
||||
return;
|
||||
}
|
||||
int pos = Integer.parseInt(TextBoxPosition.getText());
|
||||
if (_mapsCollection.get(ListBoxMaps.getSelectedValue().toString()).Minus(pos)!=null)
|
||||
{
|
||||
JOptionPane.showMessageDialog(this,
|
||||
"Объект удален","Успех",JOptionPane.INFORMATION_MESSAGE);
|
||||
bufferedImage = _mapsCollection.get(ListBoxMaps.getSelectedValue().toString()).ShowSet();
|
||||
repaint();
|
||||
}
|
||||
else
|
||||
{
|
||||
JOptionPane.showMessageDialog(this,
|
||||
"Не удалось удалить объект","Ошибка",JOptionPane.INFORMATION_MESSAGE);
|
||||
try {
|
||||
var deletedWarship = _mapsCollection.get(ListBoxMaps.getSelectedValue().toString()).Minus(pos);
|
||||
if (deletedWarship != null)
|
||||
{
|
||||
_logger.info("Удален объект: " + deletedWarship);
|
||||
JOptionPane.showMessageDialog(this,
|
||||
"Объект удален","Успех",JOptionPane.INFORMATION_MESSAGE);
|
||||
bufferedImage = _mapsCollection.get(ListBoxMaps.getSelectedValue().toString()).ShowSet();
|
||||
repaint();
|
||||
}
|
||||
else
|
||||
{
|
||||
_logger.info("Не удалось удалить объект по позиции: " + pos);
|
||||
JOptionPane.showMessageDialog(this,
|
||||
"Не удалось удалить объект","Ошибка",JOptionPane.INFORMATION_MESSAGE);
|
||||
}
|
||||
}catch (WarshipNotFoundException ex){
|
||||
_logger.warn("Ошибка удаления: " + ex.getMessage());
|
||||
JOptionPane.showMessageDialog(null, "Ошибка удаления: " + ex.getMessage());
|
||||
}catch (Exception ex){
|
||||
_logger.fatal("Неизвестная ошибка удаления: " + ex.getMessage());
|
||||
JOptionPane.showMessageDialog(null, "Неизвестная ошибка: " + ex.getMessage());
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -49,7 +49,7 @@ public class MapsCollection {
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean SaveData(String filename) {
|
||||
public void SaveData(String filename) {
|
||||
File file = new File(filename);
|
||||
|
||||
if (file.exists()) {
|
||||
@ -64,21 +64,20 @@ public class MapsCollection {
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean LoadData(String filename)
|
||||
public void LoadData(String filename)throws FileNotFoundException
|
||||
{
|
||||
if (!(new File(filename).exists()))
|
||||
{
|
||||
return false;
|
||||
throw new FileNotFoundException("Файл не найден");
|
||||
}
|
||||
try (BufferedReader br = new BufferedReader(new FileReader(filename)))
|
||||
{
|
||||
String str = "";
|
||||
if ((str = br.readLine()) == null || !str.contains("MapsCollection"))
|
||||
{
|
||||
return false;
|
||||
throw new IllegalArgumentException("Формат данных в файле неправильный");
|
||||
}
|
||||
//очищаем записи
|
||||
_mapStorages.clear();
|
||||
@ -100,8 +99,9 @@ public class MapsCollection {
|
||||
}
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}catch (StorageOverflowException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
//Сохранение отдельного объекта класса-хранилища
|
||||
|
@ -22,7 +22,7 @@ public class SetWarshipsGeneric<T extends Object> implements Iterable<T>{
|
||||
public int Insert(T warship, int position)
|
||||
{
|
||||
if (position < 0 || position >= _maxCount)
|
||||
return -1;
|
||||
throw new StorageOverflowException(_maxCount);
|
||||
_places.add(position, warship);
|
||||
return position;
|
||||
}
|
||||
@ -32,6 +32,7 @@ public class SetWarshipsGeneric<T extends Object> implements Iterable<T>{
|
||||
if (position >= _maxCount || position < 0)
|
||||
return null;
|
||||
T deleted = _places.get(position);
|
||||
if(deleted == null) throw new WarshipNotFoundException(position);
|
||||
_places.remove(position);
|
||||
return deleted;
|
||||
}
|
||||
|
16
src/StorageOverflowException.java
Normal file
16
src/StorageOverflowException.java
Normal file
@ -0,0 +1,16 @@
|
||||
public class StorageOverflowException extends RuntimeException{
|
||||
public StorageOverflowException(){
|
||||
}
|
||||
public StorageOverflowException(String message){
|
||||
super(message);
|
||||
}
|
||||
public StorageOverflowException(String message,Throwable exception){
|
||||
super(message,exception);
|
||||
}
|
||||
protected StorageOverflowException(Throwable exception){
|
||||
super(exception);
|
||||
}
|
||||
public StorageOverflowException(int count){
|
||||
super("В наборе превышено допустимое количество: " + count);
|
||||
}
|
||||
}
|
16
src/WarshipNotFoundException.java
Normal file
16
src/WarshipNotFoundException.java
Normal file
@ -0,0 +1,16 @@
|
||||
public class WarshipNotFoundException extends RuntimeException{
|
||||
public WarshipNotFoundException(){
|
||||
}
|
||||
public WarshipNotFoundException(String message){
|
||||
super(message);
|
||||
}
|
||||
public WarshipNotFoundException(String message,Throwable exception){
|
||||
super(message,exception);
|
||||
}
|
||||
public WarshipNotFoundException(Throwable exception){
|
||||
super(exception);
|
||||
}
|
||||
public WarshipNotFoundException(int i){
|
||||
super("Не найден объект по позиции " + i);
|
||||
}
|
||||
}
|
19
src/log4j.xml
Normal file
19
src/log4j.xml
Normal file
@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE log4j:configuration PUBLIC
|
||||
"-//APACHE//DTD LOG4J 1.2//EN"
|
||||
"http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
|
||||
<log4j:configuration debug="false">
|
||||
|
||||
<appender name="FileAppender" class="org.apache.log4j.DailyRollingFileAppender">
|
||||
<param name="File" value="messages"/>
|
||||
<param name="DatePattern" value="'-'yyyy-MM-dd"/>
|
||||
<param name="Encoding" value="utf-8"/>
|
||||
<layout class="org.apache.log4j.PatternLayout">
|
||||
<param name="ConversionPattern" value=" %-5p %c{1}:%L - %m %d{dd-MM-yyyy} %n"/>
|
||||
</layout>
|
||||
</appender>
|
||||
<root>
|
||||
<priority value="INFO"/>
|
||||
<appender-ref ref="FileAppender"/>
|
||||
</root>
|
||||
</log4j:configuration>
|
Loading…
Reference in New Issue
Block a user