Tsukanova I.V. HardLabWork7 #9

Closed
Inohara wants to merge 4 commits from LabWork07 into LabWork06
10 changed files with 199 additions and 58 deletions
Showing only changes of commit d9c0fbf63c - Show all commits

View File

@ -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
View 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
View 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
View 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

View File

@ -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());
}
});

View File

@ -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;
}
//Сохранение отдельного объекта класса-хранилища

View File

@ -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;
}

View 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);
}
}

View 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
View 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>