1 Commits

Author SHA1 Message Date
DozorovaA.A
8ff85461e3 add logging 2022-12-22 15:29:03 +04:00
8 changed files with 143 additions and 81 deletions

Binary file not shown.

View File

@@ -14,11 +14,17 @@ import java.util.Queue;
import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener; import javax.swing.event.ListSelectionListener;
import javax.swing.filechooser.FileNameExtensionFilter; import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.filechooser.FileFilter;
import java.io.FileInputStream;
import java.util.logging.Level;
import java.util.logging.LogManager;
import java.util.logging.Logger;
public class FormMapWithSetMachine extends javax.swing.JFrame { public class FormMapWithSetMachine extends javax.swing.JFrame {
private Image img; private Image img;
private MapsCollection _mapCollection; private MapsCollection _mapCollection;
private static Logger _logger;
private final HashMap<String, AbstractMap> _mapsDict = new HashMap<>() {{ private final HashMap<String, AbstractMap> _mapsDict = new HashMap<>() {{
put("Простая карта", new SimpleMap()); put("Простая карта", new SimpleMap());
put("Вертикальная карта", new VerticalMap()); put("Вертикальная карта", new VerticalMap());
@@ -36,6 +42,12 @@ private Image img;
MapComboBox.addItem(elem); MapComboBox.addItem(elem);
} }
_mapCollection = new MapsCollection(PicturePanel.getWidth(), PicturePanel.getHeight()); _mapCollection = new MapsCollection(PicturePanel.getWidth(), PicturePanel.getHeight());
try(FileInputStream ins = new FileInputStream(this.getClass().getResource("log.config").toString().substring(6))){
LogManager.getLogManager().readConfiguration(ins);
_logger = Logger.getLogger(FormMapWithSetMachine.class.getName());
}catch (Exception ignore){
ignore.printStackTrace();
}
} }
@@ -346,6 +358,7 @@ private Image img;
form.addWindowListener(new WindowAdapter() { form.addWindowListener(new WindowAdapter() {
@Override @Override
public void windowDeactivated(WindowEvent e) { public void windowDeactivated(WindowEvent e) {
try{
if (form.getSelectedCar() == null) if (form.getSelectedCar() == null)
return; return;
DrawingObject machine = new DrawingObject(form.getSelectedCar()); DrawingObject machine = new DrawingObject(form.getSelectedCar());
@@ -353,15 +366,24 @@ private Image img;
{ {
if (form.DialogResult) { if (form.DialogResult) {
JOptionPane.showMessageDialog(null, "Объект добавлен"); JOptionPane.showMessageDialog(null, "Объект добавлен");
_logger.log(Level.INFO, "Добавлен объект: "+machine);
img = _mapCollection.Get(MapList.getSelectedValue().toString()).ShowSet(); img = _mapCollection.Get(MapList.getSelectedValue().toString()).ShowSet();
Draw(); Draw();
} }
} }
else else
{ {
_logger.log(Level.INFO, "Не удалось добавить объект: "+machine);
JOptionPane.showMessageDialog(null, MapList.getSelectedValue().toString()+" Не удалось добавить объект"); JOptionPane.showMessageDialog(null, MapList.getSelectedValue().toString()+" Не удалось добавить объект");
} }
} }
catch(StorageOverflowException ex)
{
_logger.log(Level.WARNING, "Ошибка переполнения хранилища: "+ex.getMessage());
JOptionPane.showMessageDialog(null, "Ошибка переполнения хранилища:"+ex.getMessage());
}
}
}); });
}//GEN-LAST:event_AddMachineButtonMouseClicked }//GEN-LAST:event_AddMachineButtonMouseClicked
@@ -371,22 +393,36 @@ private Image img;
{ {
return; return;
} }
try
{
int res = JOptionPane.showConfirmDialog (null,"Удалить объект?", int res = JOptionPane.showConfirmDialog (null,"Удалить объект?",
"Удаление", JOptionPane.YES_NO_OPTION); "Удаление", JOptionPane.YES_NO_OPTION);
if (res == JOptionPane.YES_OPTION) { if (res == JOptionPane.YES_OPTION) {
int pos = Integer.parseInt(TextBoxPosition.getText()); int pos = Integer.parseInt(TextBoxPosition.getText());
deleted.offer(_mapCollection.Get(MapList.getSelectedValue().toString()).GetMachineInList(pos).GetMachine()); var elem = _mapCollection.Get(MapList.getSelectedValue().toString()).GetMachineInList(pos).GetMachine();
deleted.offer(elem);
if (_mapCollection.Get(MapList.getSelectedValue().toString()).remove(pos) != null) if (_mapCollection.Get(MapList.getSelectedValue().toString()).remove(pos) != null)
{ {
JOptionPane.showMessageDialog(null, "Объект удален"); JOptionPane.showMessageDialog(null, "Объект удален");
_logger.log(Level.INFO, "Удален объект: "+elem);
img = _mapCollection.Get(MapList.getSelectedValue().toString()).ShowSet(); img = _mapCollection.Get(MapList.getSelectedValue().toString()).ShowSet();
Draw(); Draw();
} }
else else
{ {
_logger.log(Level.INFO, "Не удалось удалить объект по позиции: "+pos);
JOptionPane.showMessageDialog(null, "Не удалось удалить объект"); JOptionPane.showMessageDialog(null, "Не удалось удалить объект");
} }
} }
}
catch (MachineNotFoundException ex) {
_logger.log(Level.WARNING, "Ошибка удаления: "+ex.getMessage());
JOptionPane.showMessageDialog(null, "Ошибка удаления: "+ex.getMessage());
} catch (Exception ex) {
_logger.log(Level.WARNING, "Неизвестная ошибка удаления: "+ex.getMessage());
JOptionPane.showMessageDialog(null, "Неизвестная ошибка: "+ex.getMessage());
}
}//GEN-LAST:event_DeleteButtonMouseClicked }//GEN-LAST:event_DeleteButtonMouseClicked
private void StoreButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_StoreButtonMouseClicked private void StoreButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_StoreButtonMouseClicked
@@ -409,15 +445,17 @@ private Image img;
private void AddMapButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_AddMapButtonMouseClicked private void AddMapButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_AddMapButtonMouseClicked
if (MapComboBox.getSelectedIndex() == -1 || MapNameTextField.getText().isEmpty()) { if (MapComboBox.getSelectedIndex() == -1 || MapNameTextField.getText().isEmpty()) {
_logger.log(Level.INFO,"Не все данные были заполнены при добавлении карты");
JOptionPane.showMessageDialog(null, "Не все данные заполнены", "Ошибка", JOptionPane.ERROR_MESSAGE); JOptionPane.showMessageDialog(null, "Не все данные заполнены", "Ошибка", JOptionPane.ERROR_MESSAGE);
return; return;
} }
if (!_mapsDict.containsKey(MapComboBox.getSelectedItem())) { if (!_mapsDict.containsKey(MapComboBox.getSelectedItem())) {
_logger.log(Level.INFO,"Нет карты с названием: "+MapComboBox.getSelectedItem());
JOptionPane.showMessageDialog(null, "Нет такой карты", "Ошибка", JOptionPane.ERROR_MESSAGE); JOptionPane.showMessageDialog(null, "Нет такой карты", "Ошибка", JOptionPane.ERROR_MESSAGE);
return; return;
} }
_mapCollection.AddMap(MapNameTextField.getText(), _mapsDict.get(MapComboBox.getSelectedItem().toString())); _mapCollection.AddMap(MapNameTextField.getText(), _mapsDict.get(MapComboBox.getSelectedItem().toString()));
_logger.log(Level.INFO, "Добавлена карта: "+MapNameTextField.getText());
ReloadMaps(); ReloadMaps();
}//GEN-LAST:event_AddMapButtonMouseClicked }//GEN-LAST:event_AddMapButtonMouseClicked
private void ReloadMaps() { private void ReloadMaps() {
@@ -454,6 +492,7 @@ private void ReloadMaps() {
"Удаление", JOptionPane.YES_NO_OPTION) == 0) { "Удаление", JOptionPane.YES_NO_OPTION) == 0) {
_mapCollection.DelMap(MapList.getSelectedValue().toString()); _mapCollection.DelMap(MapList.getSelectedValue().toString());
ReloadMaps(); ReloadMaps();
_logger.log(Level.INFO, "Удалена карта: "+MapList.getSelectedValue().toString());
} }
}//GEN-LAST:event_DeleteMapButtonMouseClicked }//GEN-LAST:event_DeleteMapButtonMouseClicked
@@ -494,6 +533,7 @@ private void ReloadMaps() {
} }
img = _mapCollection.Get((String)MapList.getSelectedValue()).ShowSet(); img = _mapCollection.Get((String)MapList.getSelectedValue()).ShowSet();
Draw(); Draw();
_logger.log(Level.INFO, "Переход на карту: "+MapList.getSelectedValue().toString());
}//GEN-LAST:event_MapListValueChanged }//GEN-LAST:event_MapListValueChanged
private void DeletedFormOpenMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_DeletedFormOpenMouseClicked private void DeletedFormOpenMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_DeletedFormOpenMouseClicked
@@ -523,14 +563,16 @@ private void ReloadMaps() {
fs.setDialogTitle("Сохранение карты"); fs.setDialogTitle("Сохранение карты");
int result = fs.showSaveDialog(null); int result = fs.showSaveDialog(null);
if (result == JFileChooser.APPROVE_OPTION) { if (result == JFileChooser.APPROVE_OPTION) {
try{
File selectedFile = fs.getSelectedFile(); File selectedFile = fs.getSelectedFile();
if (_mapCollection.SaveMap(selectedFile.getPath(), MapList.getSelectedValue().toString())) _mapCollection.SaveMap(selectedFile.getPath(), MapList.getSelectedValue().toString());
{ _logger.log(Level.INFO, "Успешное сохранение в файл: "+selectedFile.getPath());
JOptionPane.showMessageDialog(null, "Сохранение карты прошло успешно", "Результат",JOptionPane.INFORMATION_MESSAGE); JOptionPane.showMessageDialog(null, "Сохранение карты прошло успешно", "Результат",JOptionPane.INFORMATION_MESSAGE);
} }
else catch (Exception ex)
{ {
JOptionPane.showMessageDialog(null, "Не сохранилась карта", "Результат",JOptionPane.ERROR_MESSAGE); _logger.log(Level.INFO, "Данные не сохранились: "+ex.getMessage());
JOptionPane.showMessageDialog(null, "Не сохранилась карта: "+ex.getMessage(), "Результат",JOptionPane.ERROR_MESSAGE);
} }
} }
}//GEN-LAST:event_jMenuSaveMouseClicked }//GEN-LAST:event_jMenuSaveMouseClicked
@@ -543,16 +585,21 @@ private void ReloadMaps() {
fs.setDialogTitle("Сохранение карты"); fs.setDialogTitle("Сохранение карты");
int result = fs.showSaveDialog(null); int result = fs.showSaveDialog(null);
if (result == JFileChooser.APPROVE_OPTION) { if (result == JFileChooser.APPROVE_OPTION) {
File selectedFile = fs.getSelectedFile(); try
if (_mapCollection.LoadMap(selectedFile.getPath()))
{ {
File selectedFile = fs.getSelectedFile();
_mapCollection.LoadMap(selectedFile.getPath());
_logger.log(Level.INFO, "Успешная загрузка из файла: "+selectedFile.getPath());
JOptionPane.showMessageDialog(null, "Загрузка карты прошла успешно", "Результат",JOptionPane.INFORMATION_MESSAGE); JOptionPane.showMessageDialog(null, "Загрузка карты прошла успешно", "Результат",JOptionPane.INFORMATION_MESSAGE);
ReloadMaps(); ReloadMaps();
} }
else catch(Exception ex)
{ {
JOptionPane.showMessageDialog(null, "Не сохранилась карта", "Результат",JOptionPane.ERROR_MESSAGE); _logger.log(Level.WARNING, "Не загрузилось: "+ex.getMessage());
JOptionPane.showMessageDialog(null, "Не сохранилась карта: "+ex.getMessage(), "Результат",JOptionPane.ERROR_MESSAGE);
} }
} }
}//GEN-LAST:event_jMenuLoadMouseClicked }//GEN-LAST:event_jMenuLoadMouseClicked
@@ -564,16 +611,17 @@ private void ReloadMaps() {
fs.setDialogTitle("Загрузка"); fs.setDialogTitle("Загрузка");
int result = fs.showSaveDialog(null); int result = fs.showSaveDialog(null);
if (result == JFileChooser.APPROVE_OPTION) { if (result == JFileChooser.APPROVE_OPTION) {
try{
File selectedFile = fs.getSelectedFile(); File selectedFile = fs.getSelectedFile();
if (_mapCollection.LoadData(selectedFile.getPath())) _mapCollection.LoadData(selectedFile.getPath());
{
ReloadMaps(); ReloadMaps();
JOptionPane.showMessageDialog(null, "Загрузка прошла успешно", "Результат",JOptionPane.INFORMATION_MESSAGE); JOptionPane.showMessageDialog(null, "Загрузка прошла успешно", "Результат",JOptionPane.INFORMATION_MESSAGE);
} }
else catch (Exception ex)
{ {
JOptionPane.showMessageDialog(null, "Не удалось загрузить", "Результат",JOptionPane.ERROR_MESSAGE); JOptionPane.showMessageDialog(null, "Не удалось загрузить: "+ex.getMessage(), "Результат",JOptionPane.ERROR_MESSAGE);
} }
} }
}//GEN-LAST:event_jMenuLoadObjMouseClicked }//GEN-LAST:event_jMenuLoadObjMouseClicked
@@ -585,15 +633,16 @@ private void ReloadMaps() {
fs.setDialogTitle("Сохранение"); fs.setDialogTitle("Сохранение");
int result = fs.showSaveDialog(null); int result = fs.showSaveDialog(null);
if (result == JFileChooser.APPROVE_OPTION) { if (result == JFileChooser.APPROVE_OPTION) {
try{
File selectedFile = fs.getSelectedFile(); File selectedFile = fs.getSelectedFile();
if (_mapCollection.SaveData(selectedFile.getPath()+".txt")) _mapCollection.SaveData(selectedFile.getPath()+".txt");
{
JOptionPane.showMessageDialog(null, "Сохранение прошло успешно", "Результат",JOptionPane.INFORMATION_MESSAGE); JOptionPane.showMessageDialog(null, "Сохранение прошло успешно", "Результат",JOptionPane.INFORMATION_MESSAGE);
} }
else catch(Exception ex)
{ {
JOptionPane.showMessageDialog(null, "Не сохранилось", "Результат",JOptionPane.ERROR_MESSAGE); JOptionPane.showMessageDialog(null, "Не сохранилось", "Результат",JOptionPane.ERROR_MESSAGE);
} }
} }
}//GEN-LAST:event_jMenuSaveObjMouseClicked }//GEN-LAST:event_jMenuSaveObjMouseClicked
public void Move(String name) public void Move(String name)

View File

@@ -0,0 +1,5 @@
public class MachineNotFoundException extends Exception {
public MachineNotFoundException(int i){
super("Не найден объект по позиции "+i);
}
}

View File

@@ -27,12 +27,12 @@ public class MapWithSetMachineGeneric<T extends IDrawingObject, U extends Abstra
public void Clear() { public void Clear() {
_setCars.Clear(); _setCars.Clear();
} }
public int add(T car) public int add(T car) throws StorageOverflowException
{ {
return _setCars.Insert(car); return _setCars.Insert(car);
} }
public T remove(int position) public T remove(int position) throws MachineNotFoundException
{ {
return _setCars.Remove(position); return _setCars.Remove(position);
} }
@@ -79,8 +79,16 @@ public class MapWithSetMachineGeneric<T extends IDrawingObject, U extends Abstra
var car = _setCars.Get(j); var car = _setCars.Get(j);
if (car != null) if (car != null)
{ {
try {
_setCars.Insert(car, i); _setCars.Insert(car, i);
} catch (StorageOverflowException e) {
throw new RuntimeException(e);
}
try {
_setCars.Remove(j); _setCars.Remove(j);
} catch (MachineNotFoundException e) {
throw new RuntimeException(e);
}
break; break;
} }
} }
@@ -142,7 +150,7 @@ public class MapWithSetMachineGeneric<T extends IDrawingObject, U extends Abstra
return data; return data;
} }
// Загрузка списка из массива строк // Загрузка списка из массива строк
public void LoadData(String[] records) public void LoadData(String[] records) throws StorageOverflowException
{ {
for (var rec : records) for (var rec : records)
{ {

View File

@@ -2,6 +2,7 @@
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.BufferedWriter; import java.io.BufferedWriter;
import java.io.File; import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader; import java.io.FileReader;
import java.io.FileWriter; import java.io.FileWriter;
import java.io.IOException; import java.io.IOException;
@@ -9,6 +10,8 @@ import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane; import javax.swing.JOptionPane;
public class MapsCollection { public class MapsCollection {
@@ -112,7 +115,7 @@ public class MapsCollection {
return null; return null;
} }
/// Сохранение информации по тракторам в хранилище в файл /// Сохранение информации по тракторам в хранилище в файл
public boolean SaveData(String filename) { public void SaveData(String filename) {
File file = new File(filename); File file = new File(filename);
if (file.exists()) { if (file.exists()) {
@@ -127,14 +130,13 @@ public class MapsCollection {
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
return true;
} }
/// Загрузка информации по тракторам в депо из файла /// Загрузка информации по машинам в депо из файла
public boolean LoadData(String filename) public void LoadData(String filename) throws FileNotFoundException
{ {
if (!(new File(filename).exists())) if (!(new File(filename).exists()))
{ {
return false; throw new FileNotFoundException("Файл не найден");
} }
try (BufferedReader br = new BufferedReader(new FileReader(filename))) try (BufferedReader br = new BufferedReader(new FileReader(filename)))
{ {
@@ -142,7 +144,7 @@ public class MapsCollection {
if ((str = br.readLine()) == null || !str.contains("MapsCollection")) if ((str = br.readLine()) == null || !str.contains("MapsCollection"))
{ {
//если нет такой записи, то это не те данные //если нет такой записи, то это не те данные
return false; throw new IllegalArgumentException("Формат данных в файле неправильный");
} }
//очищаем записи //очищаем записи
_mapStorages.clear(); _mapStorages.clear();
@@ -168,7 +170,9 @@ public class MapsCollection {
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
return true; catch (StorageOverflowException e) {
throw new RuntimeException(e);
}
} }
public boolean SaveMap(String filename, String index) { public boolean SaveMap(String filename, String index) {
File file = new File(filename); File file = new File(filename);
@@ -183,12 +187,14 @@ public class MapsCollection {
br.write("MapsCollection\n"); br.write("MapsCollection\n");
br.write(index + separatorDict); br.write(index + separatorDict);
br.write(elem.GetDataMap(separatorDict, separatorData)); br.write(elem.GetDataMap(separatorDict, separatorData));
} catch (IOException e) { }
catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
return true; return true;
} }
public boolean LoadMap(String filename) { public boolean LoadMap(String filename) throws StorageOverflowException {
if (!(new File(filename).exists())) if (!(new File(filename).exists()))
{ {
return false; return false;

View File

@@ -18,51 +18,27 @@ public class SetArmoredCarsGeneric<T> implements Iterable<T>{
_places.clear(); _places.clear();
} }
public int Insert(T armoredCar) public int Insert(T armoredCar) throws StorageOverflowException
{ {
if(_places.size()+1 <= _MaxCount) return Insert(armoredCar, 0); if(_places.size()+1 <= _MaxCount) return Insert(armoredCar, 0);
else return -1; else return -1;
} }
public int Insert(T armoredCar, int position) public int Insert(T armoredCar, int position) throws StorageOverflowException
{ {
if ((position < 0 || position > getCount())) if ((position < 0 || position > getCount()))
return -1; return -1;
// if(_places.isEmpty())
// {
// _places.add(armoredCar);
// return 0;
// }
// if ((_places.get(position) != null) && !_places.isEmpty())
// {
// int index_empty = -1;
// // поиск первого пустого элемента
// for (int i = position + 1; i < _MaxCount; i++)
// {
// if (_places.get(i) == null)
// {
// index_empty = i;
// }
// }
// if (index_empty == -1)
// return -1;
// else
// {
// for (int i = index_empty; i > position; i--)
// {
// _places.set(i, _places.get(i-1));
// }
// }
// }
_places.add(position, armoredCar); _places.add(position, armoredCar);
return position; return position;
} }
public T Remove(int position) public T Remove(int position) throws MachineNotFoundException
{ {
if (position < 0 || position >= getCount() || _places.get(position) == null) if (position < 0 || position >= getCount())
return null; throw new MachineNotFoundException(position);
if (_places.get(position) == null)
throw new MachineNotFoundException(position);
T armoredCar = _places.get(position); T armoredCar = _places.get(position);
_places.set(position, null); _places.set(position, null);
@@ -78,7 +54,11 @@ public class SetArmoredCarsGeneric<T> implements Iterable<T>{
public void Set(int position, T value){ public void Set(int position, T value){
if (position < 0 || position + 1 >= getCount()) if (position < 0 || position + 1 >= getCount())
return; return;
try {
Insert(value, position); Insert(value, position);
} catch (StorageOverflowException e) {
throw new RuntimeException(e);
}
} }
@Override @Override

View File

@@ -0,0 +1,5 @@
public class StorageOverflowException extends Exception {
public StorageOverflowException(int count){
super("В наборе превышено допустимое количество: "+count);
}
}

View File

@@ -0,0 +1,9 @@
handlers = java.util.logging.FileHandler
java.util.logging.FileHandler.level = INFO
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.FileHandler.append = true
java.util.logging.FileHandler.pattern = log.txt
java.util.logging.ConsoleHandler.level = INFO
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter