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.ListSelectionListener;
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 {
private Image img;
private MapsCollection _mapCollection;
private static Logger _logger;
private final HashMap<String, AbstractMap> _mapsDict = new HashMap<>() {{
put("Простая карта", new SimpleMap());
put("Вертикальная карта", new VerticalMap());
@@ -35,7 +41,13 @@ private Image img;
for (String elem : _mapsDict.keySet()) {
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,21 +358,31 @@ private Image img;
form.addWindowListener(new WindowAdapter() {
@Override
public void windowDeactivated(WindowEvent e) {
if (form.getSelectedCar() == null)
return;
DrawingObject machine = new DrawingObject(form.getSelectedCar());
if (_mapCollection.Get(MapList.getSelectedValue().toString()).add(machine) != -1)
{
if (form.DialogResult) {
JOptionPane.showMessageDialog(null, "Объект добавлен");
img = _mapCollection.Get(MapList.getSelectedValue().toString()).ShowSet();
Draw();
try{
if (form.getSelectedCar() == null)
return;
DrawingObject machine = new DrawingObject(form.getSelectedCar());
if (_mapCollection.Get(MapList.getSelectedValue().toString()).add(machine) != -1)
{
if (form.DialogResult) {
JOptionPane.showMessageDialog(null, "Объект добавлен");
_logger.log(Level.INFO, "Добавлен объект: "+machine);
img = _mapCollection.Get(MapList.getSelectedValue().toString()).ShowSet();
Draw();
}
}
else
{
_logger.log(Level.INFO, "Не удалось добавить объект: "+machine);
JOptionPane.showMessageDialog(null, MapList.getSelectedValue().toString()+" Не удалось добавить объект");
}
}
else
{
JOptionPane.showMessageDialog(null, MapList.getSelectedValue().toString()+" Не удалось добавить объект");
}
catch(StorageOverflowException ex)
{
_logger.log(Level.WARNING, "Ошибка переполнения хранилища: "+ex.getMessage());
JOptionPane.showMessageDialog(null, "Ошибка переполнения хранилища:"+ex.getMessage());
}
}
});
@@ -371,22 +393,36 @@ private Image img;
{
return;
}
int res = JOptionPane.showConfirmDialog (null,"Удалить объект?",
try
{
int res = JOptionPane.showConfirmDialog (null,"Удалить объект?",
"Удаление", JOptionPane.YES_NO_OPTION);
if (res == JOptionPane.YES_OPTION) {
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)
{
JOptionPane.showMessageDialog(null, "Объект удален");
_logger.log(Level.INFO, "Удален объект: "+elem);
img = _mapCollection.Get(MapList.getSelectedValue().toString()).ShowSet();
Draw();
}
else
{
_logger.log(Level.INFO, "Не удалось удалить объект по позиции: "+pos);
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
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
if (MapComboBox.getSelectedIndex() == -1 || MapNameTextField.getText().isEmpty()) {
_logger.log(Level.INFO,"Не все данные были заполнены при добавлении карты");
JOptionPane.showMessageDialog(null, "Не все данные заполнены", "Ошибка", JOptionPane.ERROR_MESSAGE);
return;
}
if (!_mapsDict.containsKey(MapComboBox.getSelectedItem())) {
_logger.log(Level.INFO,"Нет карты с названием: "+MapComboBox.getSelectedItem());
JOptionPane.showMessageDialog(null, "Нет такой карты", "Ошибка", JOptionPane.ERROR_MESSAGE);
return;
}
_mapCollection.AddMap(MapNameTextField.getText(), _mapsDict.get(MapComboBox.getSelectedItem().toString()));
_logger.log(Level.INFO, "Добавлена карта: "+MapNameTextField.getText());
ReloadMaps();
}//GEN-LAST:event_AddMapButtonMouseClicked
private void ReloadMaps() {
@@ -454,6 +492,7 @@ private void ReloadMaps() {
"Удаление", JOptionPane.YES_NO_OPTION) == 0) {
_mapCollection.DelMap(MapList.getSelectedValue().toString());
ReloadMaps();
_logger.log(Level.INFO, "Удалена карта: "+MapList.getSelectedValue().toString());
}
}//GEN-LAST:event_DeleteMapButtonMouseClicked
@@ -494,6 +533,7 @@ private void ReloadMaps() {
}
img = _mapCollection.Get((String)MapList.getSelectedValue()).ShowSet();
Draw();
_logger.log(Level.INFO, "Переход на карту: "+MapList.getSelectedValue().toString());
}//GEN-LAST:event_MapListValueChanged
private void DeletedFormOpenMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_DeletedFormOpenMouseClicked
@@ -523,14 +563,16 @@ private void ReloadMaps() {
fs.setDialogTitle("Сохранение карты");
int result = fs.showSaveDialog(null);
if (result == JFileChooser.APPROVE_OPTION) {
File selectedFile = fs.getSelectedFile();
if (_mapCollection.SaveMap(selectedFile.getPath(), MapList.getSelectedValue().toString()))
{
try{
File selectedFile = fs.getSelectedFile();
_mapCollection.SaveMap(selectedFile.getPath(), MapList.getSelectedValue().toString());
_logger.log(Level.INFO, "Успешное сохранение в файл: "+selectedFile.getPath());
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
@@ -543,16 +585,21 @@ private void ReloadMaps() {
fs.setDialogTitle("Сохранение карты");
int result = fs.showSaveDialog(null);
if (result == JFileChooser.APPROVE_OPTION) {
File selectedFile = fs.getSelectedFile();
if (_mapCollection.LoadMap(selectedFile.getPath()))
try
{
JOptionPane.showMessageDialog(null, "Загрузка карты прошла успешно", "Результат",JOptionPane.INFORMATION_MESSAGE);
File selectedFile = fs.getSelectedFile();
_mapCollection.LoadMap(selectedFile.getPath());
_logger.log(Level.INFO, "Успешная загрузка из файла: "+selectedFile.getPath());
JOptionPane.showMessageDialog(null, "Загрузка карты прошла успешно", "Результат",JOptionPane.INFORMATION_MESSAGE);
ReloadMaps();
}
else
{
JOptionPane.showMessageDialog(null, "Не сохранилась карта", "Результат",JOptionPane.ERROR_MESSAGE);
catch(Exception ex)
{
_logger.log(Level.WARNING, "Не загрузилось: "+ex.getMessage());
JOptionPane.showMessageDialog(null, "Не сохранилась карта: "+ex.getMessage(), "Результат",JOptionPane.ERROR_MESSAGE);
}
}
}//GEN-LAST:event_jMenuLoadMouseClicked
@@ -564,16 +611,17 @@ private void ReloadMaps() {
fs.setDialogTitle("Загрузка");
int result = fs.showSaveDialog(null);
if (result == JFileChooser.APPROVE_OPTION) {
File selectedFile = fs.getSelectedFile();
if (_mapCollection.LoadData(selectedFile.getPath()))
{
try{
File selectedFile = fs.getSelectedFile();
_mapCollection.LoadData(selectedFile.getPath());
ReloadMaps();
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
@@ -585,15 +633,16 @@ private void ReloadMaps() {
fs.setDialogTitle("Сохранение");
int result = fs.showSaveDialog(null);
if (result == JFileChooser.APPROVE_OPTION) {
File selectedFile = fs.getSelectedFile();
if (_mapCollection.SaveData(selectedFile.getPath()+".txt"))
{
try{
File selectedFile = fs.getSelectedFile();
_mapCollection.SaveData(selectedFile.getPath()+".txt");
JOptionPane.showMessageDialog(null, "Сохранение прошло успешно", "Результат",JOptionPane.INFORMATION_MESSAGE);
}
else
catch(Exception ex)
{
JOptionPane.showMessageDialog(null, "Не сохранилось", "Результат",JOptionPane.ERROR_MESSAGE);
}
}
}//GEN-LAST:event_jMenuSaveObjMouseClicked
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() {
_setCars.Clear();
}
public int add(T car)
public int add(T car) throws StorageOverflowException
{
return _setCars.Insert(car);
}
public T remove(int position)
public T remove(int position) throws MachineNotFoundException
{
return _setCars.Remove(position);
}
@@ -79,8 +79,16 @@ public class MapWithSetMachineGeneric<T extends IDrawingObject, U extends Abstra
var car = _setCars.Get(j);
if (car != null)
{
try {
_setCars.Insert(car, i);
} catch (StorageOverflowException e) {
throw new RuntimeException(e);
}
try {
_setCars.Remove(j);
} catch (MachineNotFoundException e) {
throw new RuntimeException(e);
}
break;
}
}
@@ -142,7 +150,7 @@ public class MapWithSetMachineGeneric<T extends IDrawingObject, U extends Abstra
return data;
}
// Загрузка списка из массива строк
public void LoadData(String[] records)
public void LoadData(String[] records) throws StorageOverflowException
{
for (var rec : records)
{

View File

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

View File

@@ -18,51 +18,27 @@ public class SetArmoredCarsGeneric<T> implements Iterable<T>{
_places.clear();
}
public int Insert(T armoredCar)
public int Insert(T armoredCar) throws StorageOverflowException
{
if(_places.size()+1 <= _MaxCount) return Insert(armoredCar, 0);
else return -1;
}
public int Insert(T armoredCar, int position)
public int Insert(T armoredCar, int position) throws StorageOverflowException
{
if ((position < 0 || position > getCount()))
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);
return position;
}
public T Remove(int position)
public T Remove(int position) throws MachineNotFoundException
{
if (position < 0 || position >= getCount() || _places.get(position) == null)
return null;
if (position < 0 || position >= getCount())
throw new MachineNotFoundException(position);
if (_places.get(position) == null)
throw new MachineNotFoundException(position);
T armoredCar = _places.get(position);
_places.set(position, null);
@@ -78,7 +54,11 @@ public class SetArmoredCarsGeneric<T> implements Iterable<T>{
public void Set(int position, T value){
if (position < 0 || position + 1 >= getCount())
return;
Insert(value, position);
try {
Insert(value, position);
} catch (StorageOverflowException e) {
throw new RuntimeException(e);
}
}
@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