diff --git a/Catamaran/FormMapWithSetBoats.cs b/Catamaran/FormMapWithSetBoats.cs index b1dde22..44c7fcc 100644 --- a/Catamaran/FormMapWithSetBoats.cs +++ b/Catamaran/FormMapWithSetBoats.cs @@ -105,6 +105,8 @@ namespace Catamaran private void ListBoxMaps_SelectedIndexChanged(object sender, EventArgs e) { pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet(); + _logger.LogInformation($"Переход на карту {listBoxMaps.SelectedItem?.ToString()}"); + } /// @@ -121,6 +123,7 @@ namespace Catamaran if (MessageBox.Show($"Удалить карту {listBoxMaps.SelectedItem}?", "Удаление", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { + _logger.LogInformation($"Удалена карта {listBoxMaps.SelectedItem?.ToString()}"); _mapsCollection.DelMap(listBoxMaps.SelectedItem?.ToString() ?? string.Empty); ReloadMaps(); } @@ -153,6 +156,8 @@ namespace Catamaran { MessageBox.Show("Объект удален"); pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet(); + _logger.LogInformation($"Удален объект {pos}"); + } else { @@ -161,10 +166,12 @@ namespace Catamaran } catch (BoatNotFoundException ex) { + _logger.LogWarning($"Ошибка {ex.Message}"); MessageBox.Show($"Ошибка удаления: {ex.Message}"); } catch (Exception ex) { + _logger.LogWarning($"Ошибка {ex.Message}"); MessageBox.Show($"Неизвестная ошибка: {ex.Message}"); } @@ -240,22 +247,38 @@ namespace Catamaran formBoatConfig.AddEvent(new Action(AddBoat)); // TODO Call method AddEvent from formBoatConfig formBoatConfig.Show(); + } private void AddBoat(DrawingBoat boat) { - if (listBoxMaps.SelectedIndex == -1) + try { - MessageBox.Show("Перед добавлением объекта необходимо создать карту"); + if (listBoxMaps.SelectedIndex == -1) + { + MessageBox.Show("Перед добавлением объекта необходимо создать карту"); + } + else if (_mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty] + new DrawingObjectBoat(boat) != -1) + { + _logger.LogInformation($"Добавлен лодку {boat}"); + MessageBox.Show("Объект добавлен"); + pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet(); + } + else + { + _logger.LogWarning("Не удалось добавить лодку"); + MessageBox.Show("Не удалось добавить объект"); + } } - else if (_mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty] + new DrawingObjectBoat(boat) != -1) + catch (StorageOverflowException ex) { - MessageBox.Show("Объект добавлен"); - pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet(); + _logger.LogWarning($"Ошибка переполнения хранилища: {ex.Message}"); + MessageBox.Show($"Ошибка переполнения хранилища: {ex.Message}", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error); } - else + catch (Exception ex) { - MessageBox.Show("Не удалось добавить объект"); + _logger.LogWarning($"Неизвестная ошибка: {ex.Message}"); + MessageBox.Show($"Неизвестная ошибка: {ex.Message}"); } } private void saveToolStripMenuItem_Click(object sender, EventArgs e) @@ -267,9 +290,12 @@ namespace Catamaran _mapsCollection.SaveData(saveFileDialog.FileName); MessageBox.Show("Сохранение прошло успешно", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Information); + _logger.LogInformation($"Сохранение данных"); + } catch (Exception ex) { + _logger.LogWarning($"Ошибка {ex.Message}"); MessageBox.Show($"Не сохранилось: {ex.Message}", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error); } @@ -282,12 +308,16 @@ namespace Catamaran { try { + _mapsCollection.LoadData(openFileDialog.FileName); + ReloadMaps(); MessageBox.Show("Открытие прошло успешно", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Information); - ReloadMaps(); + _logger.LogInformation($"Загрузка данных"); + } catch (Exception ex) { + _logger.LogWarning($"Ошибка {ex.Message}"); MessageBox.Show($"Не удалось открыть: {ex.Message}", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error); } diff --git a/Catamaran/MapsCollection.cs b/Catamaran/MapsCollection.cs index 80ca7a6..9c7db8f 100644 --- a/Catamaran/MapsCollection.cs +++ b/Catamaran/MapsCollection.cs @@ -108,7 +108,8 @@ namespace Catamaran { if (!File.Exists(filename)) { - throw new Exception("Файл не найден"); + throw new FileNotFoundException(filename); + } using (StreamReader sr = new StreamReader(filename)) { @@ -116,7 +117,7 @@ namespace Catamaran if ((str = sr.ReadLine()) == null || !str.Contains("MapsCollection")) { //если нет такой записи, то это не те данные - throw new Exception("Формат данных в файле не правильный"); + throw new FormatException(str); } //очищаем записи _mapStorages.Clear(); diff --git a/Catamaran/Program.cs b/Catamaran/Program.cs index 0f4923c..a331085 100644 --- a/Catamaran/Program.cs +++ b/Catamaran/Program.cs @@ -17,7 +17,6 @@ namespace Catamaran [STAThread] static void Main() { - Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); diff --git a/Catamaran/SetBoatsGeneric.cs b/Catamaran/SetBoatsGeneric.cs index 445ecd9..0091e98 100644 --- a/Catamaran/SetBoatsGeneric.cs +++ b/Catamaran/SetBoatsGeneric.cs @@ -62,7 +62,7 @@ namespace Catamaran // TODO проверка позиции if (position < 0 || position >= _maxCount) { - throw new IndexOutOfRangeException(); + return -1 ; } // TODO проверка, что элемент массива по этой позиции пустой,если нет, то @@ -87,7 +87,7 @@ namespace Catamaran return position; } } - throw new BoatNotFoundException(_maxCount); + throw new StorageOverflowException(_maxCount); } // TODO вставка по позиции } @@ -99,7 +99,7 @@ namespace Catamaran public T Remove(int position) { // TODO проверка позиции - if (position < 0 || position >= Count) throw new IndexOutOfRangeException(); + if (position < 0 || position >= Count) throw new BoatNotFoundException(); // TODO удаление объекта из массива, присовив элементу массива значение null var result = _places[position]; _places.RemoveAt(position); diff --git a/Catamaran/nlog.config b/Catamaran/nlog.config index 249507c..65761ee 100644 --- a/Catamaran/nlog.config +++ b/Catamaran/nlog.config @@ -4,8 +4,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" autoReload="true" internalLogLevel="Info"> - +