Седьмая лабораторная работа.
This commit is contained in:
parent
11be96c351
commit
cd966ac794
@ -0,0 +1,15 @@
|
|||||||
|
/*
|
||||||
|
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
|
||||||
|
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
|
||||||
|
*/
|
||||||
|
package AirBomberPackage;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Андрей
|
||||||
|
*/
|
||||||
|
public class AirBomberNotFoundException extends Exception {
|
||||||
|
public AirBomberNotFoundException(int i){
|
||||||
|
super("Не найден объект по позиции " + i);
|
||||||
|
}
|
||||||
|
}
|
@ -8,6 +8,9 @@ import javax.swing.DefaultListModel;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
|
import org.apache.logging.log4j.*;
|
||||||
|
import java.io.*;
|
||||||
|
import java.nio.file.FileSystemException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@ -20,6 +23,8 @@ public class JFrameMapWithSetAirBombers extends javax.swing.JFrame {
|
|||||||
*/
|
*/
|
||||||
public JFrameMapWithSetAirBombers() {
|
public JFrameMapWithSetAirBombers() {
|
||||||
initComponents();
|
initComponents();
|
||||||
|
System.setProperty("log4j.configurationFile","C:\\Users\\Андрей\\Documents\\loggerSettings.xml");
|
||||||
|
logger = LogManager.getLogger("logger");
|
||||||
_mapsDict.put("Простая карта", new SimpleMap());
|
_mapsDict.put("Простая карта", new SimpleMap());
|
||||||
_mapsDict.put("Городская карта", new CityMap());
|
_mapsDict.put("Городская карта", new CityMap());
|
||||||
_mapsDict.put("Линейная карта", new LineMap());
|
_mapsDict.put("Линейная карта", new LineMap());
|
||||||
@ -36,6 +41,8 @@ public class JFrameMapWithSetAirBombers extends javax.swing.JFrame {
|
|||||||
private MapsCollection _mapsCollection;
|
private MapsCollection _mapsCollection;
|
||||||
|
|
||||||
private LinkedList<DrawingObjectAirBomber> deletedAirBombers = new LinkedList<>();
|
private LinkedList<DrawingObjectAirBomber> deletedAirBombers = new LinkedList<>();
|
||||||
|
|
||||||
|
private Logger logger;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method is called from within the constructor to initialize the form.
|
* This method is called from within the constructor to initialize the form.
|
||||||
@ -334,8 +341,25 @@ public class JFrameMapWithSetAirBombers extends javax.swing.JFrame {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
JFrameAirBomberConfig airBomberConfig = new JFrameAirBomberConfig();
|
JFrameAirBomberConfig airBomberConfig = new JFrameAirBomberConfig();
|
||||||
airBomberConfig.addEvent(airBomber -> {_mapsCollection.Get(listBoxMaps.getSelectedValue()).add(new DrawingObjectAirBomber(airBomber));
|
airBomberConfig.addEvent(airBomber -> {
|
||||||
airBomberCanvas.getGraphics().drawImage(_mapsCollection.Get(listBoxMaps.getSelectedValue()).ShowSet(), 0, 0, null);});
|
try{
|
||||||
|
_mapsCollection.Get(listBoxMaps.getSelectedValue()).add(new DrawingObjectAirBomber(airBomber));
|
||||||
|
airBomberCanvas.getGraphics().drawImage(_mapsCollection.Get(listBoxMaps.getSelectedValue()).ShowSet(), 0, 0, null);
|
||||||
|
logger.log(Level.INFO, "Добавлен объект " + airBomber);
|
||||||
|
}
|
||||||
|
catch (AirBomberNotFoundException ex){
|
||||||
|
JOptionPane.showMessageDialog(null, ex);
|
||||||
|
logger.log(Level.WARN, "Ошибка: " + ex.getMessage());
|
||||||
|
}
|
||||||
|
catch (StorageOverflowException ex){
|
||||||
|
JOptionPane.showMessageDialog(null, ex);
|
||||||
|
logger.log(Level.WARN, "Ошибка: " + ex.getMessage());
|
||||||
|
}
|
||||||
|
catch (Exception ex){
|
||||||
|
JOptionPane.showMessageDialog(null, ex);
|
||||||
|
logger.log(Level.FATAL, "Ошибка: " + ex.getMessage());
|
||||||
|
}
|
||||||
|
});
|
||||||
airBomberConfig.setVisible(true);
|
airBomberConfig.setVisible(true);
|
||||||
}//GEN-LAST:event_buttonAddAirBomberActionPerformed
|
}//GEN-LAST:event_buttonAddAirBomberActionPerformed
|
||||||
|
|
||||||
@ -353,16 +377,20 @@ public class JFrameMapWithSetAirBombers extends javax.swing.JFrame {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int pos = Integer.parseInt(maskedTextBoxPosition.getText());
|
int pos = Integer.parseInt(maskedTextBoxPosition.getText());
|
||||||
DrawingObjectAirBomber deletedAirBomber = (DrawingObjectAirBomber) _mapsCollection.Get(listBoxMaps.getSelectedValue()).remove(pos);
|
try{
|
||||||
if (deletedAirBomber != null)
|
DrawingObjectAirBomber deletedAirBomber = (DrawingObjectAirBomber) _mapsCollection.Get(listBoxMaps.getSelectedValue()).remove(pos);
|
||||||
{
|
|
||||||
deletedAirBombers.add(deletedAirBomber);
|
deletedAirBombers.add(deletedAirBomber);
|
||||||
JOptionPane.showMessageDialog(null,"Объект удален");
|
JOptionPane.showMessageDialog(null,"Объект удален");
|
||||||
airBomberCanvas.getGraphics().drawImage(_mapsCollection.Get(listBoxMaps.getSelectedValue()).ShowSet(), 0, 0, null);
|
airBomberCanvas.getGraphics().drawImage(_mapsCollection.Get(listBoxMaps.getSelectedValue()).ShowSet(), 0, 0, null);
|
||||||
|
logger.log(Level.INFO, "Удалён объект " + deletedAirBomber);
|
||||||
}
|
}
|
||||||
else
|
catch (AirBomberNotFoundException ex){
|
||||||
{
|
JOptionPane.showMessageDialog(null, ex);
|
||||||
JOptionPane.showMessageDialog(null,"Не удалось удалить объект!");
|
logger.log(Level.WARN, "Ошибка: " + ex.getMessage());
|
||||||
|
}
|
||||||
|
catch (Exception ex){
|
||||||
|
JOptionPane.showMessageDialog(null, ex);
|
||||||
|
logger.log(Level.FATAL, "Ошибка: " + ex.getMessage());
|
||||||
}
|
}
|
||||||
}//GEN-LAST:event_buttonRemoveAirBomberActionPerformed
|
}//GEN-LAST:event_buttonRemoveAirBomberActionPerformed
|
||||||
|
|
||||||
@ -377,7 +405,21 @@ public class JFrameMapWithSetAirBombers extends javax.swing.JFrame {
|
|||||||
if (listBoxMaps.getSelectedIndex() == -1){
|
if (listBoxMaps.getSelectedIndex() == -1){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
airBomberCanvas.getGraphics().drawImage(_mapsCollection.Get(listBoxMaps.getSelectedValue()).ShowOnMap(), 0, 0, null);
|
try{
|
||||||
|
airBomberCanvas.getGraphics().drawImage(_mapsCollection.Get(listBoxMaps.getSelectedValue()).ShowOnMap(), 0, 0, null);
|
||||||
|
}
|
||||||
|
catch (AirBomberNotFoundException ex){
|
||||||
|
JOptionPane.showMessageDialog(null, ex);
|
||||||
|
logger.log(Level.WARN, "Ошибка: " + ex.getMessage());
|
||||||
|
}
|
||||||
|
catch (StorageOverflowException ex){
|
||||||
|
JOptionPane.showMessageDialog(null, ex);
|
||||||
|
logger.log(Level.WARN, "Ошибка: " + ex.getMessage());
|
||||||
|
}
|
||||||
|
catch (Exception ex){
|
||||||
|
JOptionPane.showMessageDialog(null, ex);
|
||||||
|
logger.log(Level.FATAL, "Ошибка: " + ex.getMessage());
|
||||||
|
}
|
||||||
}//GEN-LAST:event_buttonShowOnMapActionPerformed
|
}//GEN-LAST:event_buttonShowOnMapActionPerformed
|
||||||
|
|
||||||
private void buttonAddMapActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonAddMapActionPerformed
|
private void buttonAddMapActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonAddMapActionPerformed
|
||||||
@ -391,15 +433,18 @@ public class JFrameMapWithSetAirBombers extends javax.swing.JFrame {
|
|||||||
}
|
}
|
||||||
_mapsCollection.AddMap(textBoxNewMapName.getText(), _mapsDict.get((String) comboBoxSelectorMap.getSelectedItem()));
|
_mapsCollection.AddMap(textBoxNewMapName.getText(), _mapsDict.get((String) comboBoxSelectorMap.getSelectedItem()));
|
||||||
ReloadMaps();
|
ReloadMaps();
|
||||||
|
logger.log(Level.INFO, "Добавлна карта " + textBoxNewMapName.getText());
|
||||||
}//GEN-LAST:event_buttonAddMapActionPerformed
|
}//GEN-LAST:event_buttonAddMapActionPerformed
|
||||||
|
|
||||||
private void buttonDeleteMapActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonDeleteMapActionPerformed
|
private void buttonDeleteMapActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonDeleteMapActionPerformed
|
||||||
if (listBoxMaps.getSelectedIndex() == -1){
|
if (listBoxMaps.getSelectedIndex() == -1){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
String name = listBoxMaps.getSelectedValue();
|
||||||
if (JOptionPane.showConfirmDialog(this, (Object) ("Удалить карту " + listBoxMaps.getSelectedValue() + "?") , "Удаление", JOptionPane.OK_CANCEL_OPTION) == JOptionPane.OK_OPTION){
|
if (JOptionPane.showConfirmDialog(this, (Object) ("Удалить карту " + listBoxMaps.getSelectedValue() + "?") , "Удаление", JOptionPane.OK_CANCEL_OPTION) == JOptionPane.OK_OPTION){
|
||||||
_mapsCollection.DelMap(listBoxMaps.getSelectedValue());
|
_mapsCollection.DelMap(listBoxMaps.getSelectedValue());
|
||||||
ReloadMaps();
|
ReloadMaps();
|
||||||
|
logger.log(Level.INFO, "Удалена карта " + name);
|
||||||
}
|
}
|
||||||
}//GEN-LAST:event_buttonDeleteMapActionPerformed
|
}//GEN-LAST:event_buttonDeleteMapActionPerformed
|
||||||
|
|
||||||
@ -416,12 +461,14 @@ public class JFrameMapWithSetAirBombers extends javax.swing.JFrame {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
airBomberCanvas.getGraphics().drawImage(_mapsCollection.Get(listBoxMaps.getSelectedValue()).ShowSet(), 0, 0, null);
|
airBomberCanvas.getGraphics().drawImage(_mapsCollection.Get(listBoxMaps.getSelectedValue()).ShowSet(), 0, 0, null);
|
||||||
|
logger.log(Level.INFO, "Переход на карту " + listBoxMaps.getSelectedValue());
|
||||||
}//GEN-LAST:event_listBoxMapsValueChanged
|
}//GEN-LAST:event_listBoxMapsValueChanged
|
||||||
|
|
||||||
private void jMenuItemSaveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemSaveActionPerformed
|
private void jMenuItemSaveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemSaveActionPerformed
|
||||||
if (jFileChooser1.showDialog(this, "Сохранить") == JFileChooser.APPROVE_OPTION){
|
if (jFileChooser1.showDialog(this, "Сохранить") == JFileChooser.APPROVE_OPTION){
|
||||||
if (_mapsCollection.SaveData(jFileChooser1.getSelectedFile().getPath())){
|
if (_mapsCollection.SaveData(jFileChooser1.getSelectedFile().getPath())){
|
||||||
JOptionPane.showMessageDialog(this, "Cохранено");
|
JOptionPane.showMessageDialog(this, "Cохранено");
|
||||||
|
logger.log(Level.INFO, "Сохранение");
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
JOptionPane.showMessageDialog(this, "Не сохранилось");
|
JOptionPane.showMessageDialog(this, "Не сохранилось");
|
||||||
@ -430,15 +477,38 @@ public class JFrameMapWithSetAirBombers extends javax.swing.JFrame {
|
|||||||
}//GEN-LAST:event_jMenuItemSaveActionPerformed
|
}//GEN-LAST:event_jMenuItemSaveActionPerformed
|
||||||
|
|
||||||
private void jMenuItemLoadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemLoadActionPerformed
|
private void jMenuItemLoadActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemLoadActionPerformed
|
||||||
if (jFileChooser1.showDialog(this, "Загрузить") == JFileChooser.APPROVE_OPTION){
|
try{
|
||||||
if (_mapsCollection.LoadData(jFileChooser1.getSelectedFile().getPath())){
|
if (jFileChooser1.showDialog(this, "Загрузить") == JFileChooser.APPROVE_OPTION){
|
||||||
JOptionPane.showMessageDialog(this, "Загрузилось");
|
if (_mapsCollection.LoadData(jFileChooser1.getSelectedFile().getPath())){
|
||||||
ReloadMaps();
|
JOptionPane.showMessageDialog(this, "Загрузилось");
|
||||||
}
|
ReloadMaps();
|
||||||
else{
|
logger.log(Level.INFO, "Загрузка");
|
||||||
JOptionPane.showMessageDialog(this, "Не загрузилось");
|
}
|
||||||
|
else{
|
||||||
|
JOptionPane.showMessageDialog(this, "Не загрузилось");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
catch (AirBomberNotFoundException ex){
|
||||||
|
JOptionPane.showMessageDialog(null, ex);
|
||||||
|
logger.log(Level.WARN, "Ошибка: " + ex.getMessage());
|
||||||
|
}
|
||||||
|
catch (StorageOverflowException ex){
|
||||||
|
JOptionPane.showMessageDialog(null, ex);
|
||||||
|
logger.log(Level.WARN, "Ошибка: " + ex.getMessage());
|
||||||
|
}
|
||||||
|
catch (FileNotFoundException ex){
|
||||||
|
JOptionPane.showMessageDialog(null, ex);
|
||||||
|
logger.log(Level.ERROR, "Ошибка: " + ex.getMessage());
|
||||||
|
}
|
||||||
|
catch (FileSystemException ex){
|
||||||
|
JOptionPane.showMessageDialog(null, ex);
|
||||||
|
logger.log(Level.ERROR, "Ошибка: " + ex.getMessage());
|
||||||
|
}
|
||||||
|
catch (Exception ex){
|
||||||
|
JOptionPane.showMessageDialog(null, ex);
|
||||||
|
logger.log(Level.FATAL, "Ошибка: " + ex.getMessage());
|
||||||
|
}
|
||||||
}//GEN-LAST:event_jMenuItemLoadActionPerformed
|
}//GEN-LAST:event_jMenuItemLoadActionPerformed
|
||||||
|
|
||||||
private void jMenuItemSaveStorageActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemSaveStorageActionPerformed
|
private void jMenuItemSaveStorageActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemSaveStorageActionPerformed
|
||||||
@ -453,15 +523,29 @@ public class JFrameMapWithSetAirBombers extends javax.swing.JFrame {
|
|||||||
}//GEN-LAST:event_jMenuItemSaveStorageActionPerformed
|
}//GEN-LAST:event_jMenuItemSaveStorageActionPerformed
|
||||||
|
|
||||||
private void jMenuItemLoadStorageActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemLoadStorageActionPerformed
|
private void jMenuItemLoadStorageActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemLoadStorageActionPerformed
|
||||||
if (jFileChooser1.showDialog(this, "Загрузить") == JFileChooser.APPROVE_OPTION){
|
try{
|
||||||
if (_mapsCollection.LoadStorage(jFileChooser1.getSelectedFile().getPath())){
|
if (jFileChooser1.showDialog(this, "Загрузить") == JFileChooser.APPROVE_OPTION){
|
||||||
JOptionPane.showMessageDialog(this, "Загрузилось");
|
if (_mapsCollection.LoadStorage(jFileChooser1.getSelectedFile().getPath())){
|
||||||
ReloadMaps();
|
JOptionPane.showMessageDialog(this, "Загрузилось");
|
||||||
}
|
ReloadMaps();
|
||||||
else{
|
}
|
||||||
JOptionPane.showMessageDialog(this, "Не загрузилось");
|
else{
|
||||||
|
JOptionPane.showMessageDialog(this, "Не загрузилось");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
catch (AirBomberNotFoundException ex){
|
||||||
|
JOptionPane.showMessageDialog(null, ex);
|
||||||
|
logger.log(Level.WARN, "Ошибка: " + ex.getMessage());
|
||||||
|
}
|
||||||
|
catch (StorageOverflowException ex){
|
||||||
|
JOptionPane.showMessageDialog(null, ex);
|
||||||
|
logger.log(Level.WARN, "Ошибка: " + ex.getMessage());
|
||||||
|
}
|
||||||
|
catch (Exception ex){
|
||||||
|
JOptionPane.showMessageDialog(null, ex);
|
||||||
|
logger.log(Level.FATAL, "Ошибка: " + ex.getMessage());
|
||||||
|
}
|
||||||
}//GEN-LAST:event_jMenuItemLoadStorageActionPerformed
|
}//GEN-LAST:event_jMenuItemLoadStorageActionPerformed
|
||||||
|
|
||||||
private void ReloadMaps()
|
private void ReloadMaps()
|
||||||
|
@ -30,11 +30,11 @@ public class MapWithSetAirBombersGeneric <T extends IDrawingObject, U extends Ab
|
|||||||
return _setAirBombers;
|
return _setAirBombers;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int add(T airBomber){
|
public int add(T airBomber)throws AirBomberNotFoundException, StorageOverflowException, Exception{
|
||||||
return _setAirBombers.Insert(airBomber);
|
return _setAirBombers.Insert(airBomber);
|
||||||
}
|
}
|
||||||
|
|
||||||
public T remove(int position){
|
public T remove(int position)throws AirBomberNotFoundException, Exception{
|
||||||
return _setAirBombers.Remove(position);
|
return _setAirBombers.Remove(position);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -47,7 +47,7 @@ public class MapWithSetAirBombersGeneric <T extends IDrawingObject, U extends Ab
|
|||||||
return bmp;
|
return bmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BufferedImage ShowOnMap()
|
public BufferedImage ShowOnMap() throws AirBomberNotFoundException, StorageOverflowException, Exception
|
||||||
{
|
{
|
||||||
Shaking();
|
Shaking();
|
||||||
for (int i = 0; i < _setAirBombers.getCount(); i++)
|
for (int i = 0; i < _setAirBombers.getCount(); i++)
|
||||||
@ -84,7 +84,7 @@ public class MapWithSetAirBombersGeneric <T extends IDrawingObject, U extends Ab
|
|||||||
}
|
}
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
public void LoadData(String[] records)
|
public void LoadData(String[] records) throws AirBomberNotFoundException, StorageOverflowException, Exception
|
||||||
{
|
{
|
||||||
for (var rec : records)
|
for (var rec : records)
|
||||||
{
|
{
|
||||||
@ -96,7 +96,7 @@ public class MapWithSetAirBombersGeneric <T extends IDrawingObject, U extends Ab
|
|||||||
_setAirBombers.clear();
|
_setAirBombers.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Shaking()
|
private void Shaking() throws AirBomberNotFoundException, StorageOverflowException, Exception
|
||||||
{
|
{
|
||||||
int j = _setAirBombers.getCount() - 1;
|
int j = _setAirBombers.getCount() - 1;
|
||||||
for (int i = 0; i < _setAirBombers.getCount(); i++)
|
for (int i = 0; i < _setAirBombers.getCount(); i++)
|
||||||
|
@ -6,6 +6,7 @@ package AirBomberPackage;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
|
import java.nio.file.FileSystemException;
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@ -105,7 +106,7 @@ public class MapsCollection {
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="filename"></param>
|
/// <param name="filename"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public boolean LoadData(String filename)
|
public boolean LoadData(String filename) throws AirBomberNotFoundException, StorageOverflowException, Exception
|
||||||
{
|
{
|
||||||
File loadFile = new File(filename);
|
File loadFile = new File(filename);
|
||||||
if (!loadFile.exists())
|
if (!loadFile.exists())
|
||||||
@ -174,11 +175,11 @@ public class MapsCollection {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean LoadStorage(String filename){
|
public boolean LoadStorage(String filename) throws AirBomberNotFoundException, StorageOverflowException, FileNotFoundException, FileSystemException, Exception{
|
||||||
File loadFile = new File(filename);
|
File loadFile = new File(filename);
|
||||||
if (!loadFile.exists())
|
if (!loadFile.exists())
|
||||||
{
|
{
|
||||||
return false;
|
throw new FileNotFoundException(filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
try{
|
try{
|
||||||
@ -186,7 +187,7 @@ public class MapsCollection {
|
|||||||
String line;
|
String line;
|
||||||
line = br.readLine();
|
line = br.readLine();
|
||||||
line.trim();
|
line.trim();
|
||||||
if (!line.equals("Storage")) return false;
|
if (!line.equals("Storage")) throw new FileSystemException("Неверный формат файла!");
|
||||||
|
|
||||||
String key = br.readLine();
|
String key = br.readLine();
|
||||||
String mapType = br.readLine();
|
String mapType = br.readLine();
|
||||||
|
@ -37,7 +37,7 @@ public class SetAirBombersGeneric<T> {
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="airBomber">Добавляемый автомобиль</param>
|
/// <param name="airBomber">Добавляемый автомобиль</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public int Insert(T airBomber)
|
public int Insert(T airBomber)throws AirBomberNotFoundException, StorageOverflowException, Exception
|
||||||
{
|
{
|
||||||
return Insert(airBomber, 0);
|
return Insert(airBomber, 0);
|
||||||
}
|
}
|
||||||
@ -47,11 +47,14 @@ public class SetAirBombersGeneric<T> {
|
|||||||
/// <param name="airBomber">Добавляемый автомобиль</param>
|
/// <param name="airBomber">Добавляемый автомобиль</param>
|
||||||
/// <param name="position">Позиция</param>
|
/// <param name="position">Позиция</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public int Insert(T airBomber, int position)
|
public int Insert(T airBomber, int position) throws AirBomberNotFoundException, StorageOverflowException, Exception
|
||||||
{
|
{
|
||||||
if (position < 0 || position >= _maxCount)
|
if (position < 0 || position > _maxCount)
|
||||||
{
|
{
|
||||||
return -1;
|
throw new AirBomberNotFoundException(position);
|
||||||
|
}
|
||||||
|
if (_places.size() + 1 > _maxCount){
|
||||||
|
throw new StorageOverflowException(_maxCount);
|
||||||
}
|
}
|
||||||
_places.add(position, airBomber);
|
_places.add(position, airBomber);
|
||||||
return position;
|
return position;
|
||||||
@ -61,11 +64,11 @@ public class SetAirBombersGeneric<T> {
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="position"></param>
|
/// <param name="position"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public T Remove(int position)
|
public T Remove(int position) throws AirBomberNotFoundException, Exception
|
||||||
{
|
{
|
||||||
if (position <0 || position >= _maxCount)
|
if (position <0 || position > _maxCount)
|
||||||
{
|
{
|
||||||
return null;
|
throw new AirBomberNotFoundException(position);
|
||||||
}
|
}
|
||||||
T removedObject = _places.get(position);
|
T removedObject = _places.get(position);
|
||||||
_places.remove(position);
|
_places.remove(position);
|
||||||
@ -76,7 +79,7 @@ public class SetAirBombersGeneric<T> {
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="position"></param>
|
/// <param name="position"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public T Get(int position)
|
public T Get(int position)
|
||||||
{
|
{
|
||||||
if (position >= _maxCount || position < 0)
|
if (position >= _maxCount || position < 0)
|
||||||
{
|
{
|
||||||
|
15
AirBomber/src/AirBomberPackage/StorageOverflowException.java
Normal file
15
AirBomber/src/AirBomberPackage/StorageOverflowException.java
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
/*
|
||||||
|
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
|
||||||
|
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
|
||||||
|
*/
|
||||||
|
package AirBomberPackage;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author Андрей
|
||||||
|
*/
|
||||||
|
public class StorageOverflowException extends Exception {
|
||||||
|
public StorageOverflowException(int count){
|
||||||
|
super("В наборе превышено допустимое количество: " + count);
|
||||||
|
}
|
||||||
|
}
|
32
AirBomber/src/AirBomberPackage/loggerSettings.xml
Normal file
32
AirBomber/src/AirBomberPackage/loggerSettings.xml
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Configuration>
|
||||||
|
<!-- Секция аппендеров -->
|
||||||
|
<Appenders>
|
||||||
|
<!-- Файловый аппендер -->
|
||||||
|
<File name="fileWarnings" fileName="logWarnings.log">
|
||||||
|
<PatternLayout>
|
||||||
|
<Pattern> %m(дата-%d{d.M.y}) %ex%n</Pattern>
|
||||||
|
</PatternLayout>
|
||||||
|
</File>
|
||||||
|
|
||||||
|
<File name="fileInfo" fileName="logInfo.log">
|
||||||
|
<PatternLayout>
|
||||||
|
<Pattern> %m(дата-%d{d.M.y}) %ex%n</Pattern>
|
||||||
|
</PatternLayout>
|
||||||
|
<Filters>
|
||||||
|
<!-- Now deny warn, error and fatal messages -->
|
||||||
|
<ThresholdFilter level="warn" onMatch="DENY" onMismatch="NEUTRAL"/>
|
||||||
|
|
||||||
|
<!-- This filter accepts info, warn, error, fatal and denies debug/trace -->
|
||||||
|
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
|
||||||
|
</Filters>
|
||||||
|
</File>
|
||||||
|
</Appenders>
|
||||||
|
<!-- Секция логгеров -->
|
||||||
|
<Loggers>
|
||||||
|
<Logger name="logger" level="info" additivity="false">
|
||||||
|
<AppenderRef ref="fileInfo" level="INFO"/>
|
||||||
|
<AppenderRef ref="fileWarnings" level="WARN"/>
|
||||||
|
</Logger>
|
||||||
|
</Loggers>
|
||||||
|
</Configuration>
|
Loading…
Reference in New Issue
Block a user