лаба 6 Кувшинов Тимур ПИбд-21 Сложная #8
@ -1,6 +1,7 @@
|
||||
package laba1Loco;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
|
||||
public class ExtentionDrawingTrain {
|
||||
/// <summary>
|
||||
@ -14,23 +15,32 @@ public class ExtentionDrawingTrain {
|
||||
public static DrawingTrain CreateDrawingTrain(String info, String separatorForObject, int width, int height)
|
||||
{
|
||||
String[] strs = info.split(separatorForObject);
|
||||
if (strs.length == 4)
|
||||
if (strs.length == 5)
|
||||
{
|
||||
String[] colorValues = strs[2].split(",");
|
||||
|
||||
return new DrawingTrain(Integer.parseInt(strs[0]), (double)Integer.parseInt(strs[1]),
|
||||
DrawingTrain drawingTrain = new DrawingTrain(Integer.parseInt(strs[0]), (double)Integer.parseInt(strs[1]),
|
||||
new Color(
|
||||
Integer.parseInt(colorValues[0]),
|
||||
Integer.parseInt(colorValues[1]),
|
||||
Integer.parseInt(colorValues[2])
|
||||
Integer.parseInt(colorValues[0].replaceAll("\\D", "")),
|
||||
Integer.parseInt(colorValues[1].replaceAll("\\D", "")),
|
||||
Integer.parseInt(colorValues[2].replaceAll("\\D", ""))
|
||||
),
|
||||
Integer.parseInt(strs[3]), width, height);
|
||||
Integer.parseInt(strs[3]),
|
||||
width, height);
|
||||
try{
|
||||
drawingTrain.wheelDrawing = (IWheelDrawing)Class.forName(strs[4]).getDeclaredConstructor().newInstance();
|
||||
drawingTrain.wheelDrawing.setNumWheel(drawingTrain.EntityTrain.numWheel);
|
||||
}
|
||||
catch(Exception e){
|
||||
return null;
|
||||
}
|
||||
return drawingTrain;
|
||||
}
|
||||
if (strs.length == 8)
|
||||
if (strs.length == 9)
|
||||
{
|
||||
String[] colorValues = strs[2].split(",");
|
||||
String[] colorValues2 = strs[4].split(",");
|
||||
return new DrawingLoco(
|
||||
String[] colorValues2 = strs[5].split(",");
|
||||
DrawingLoco drawingLoco = new DrawingLoco(
|
||||
Integer.parseInt(strs[0]),
|
||||
(double)Integer.parseInt(strs[1]),
|
||||
new Color(
|
||||
@ -44,10 +54,18 @@ public class ExtentionDrawingTrain {
|
||||
Integer.parseInt(colorValues2[1].replaceAll("\\D", "")),
|
||||
Integer.parseInt(colorValues2[2].replaceAll("\\D", ""))
|
||||
),
|
||||
strs[5].equals("True"),
|
||||
strs[6].equals("True"),
|
||||
strs[7].equals("True"),
|
||||
strs[6].equals("true"),
|
||||
strs[7].equals("true"),
|
||||
strs[8].equals("true"),
|
||||
width, height);
|
||||
try{
|
||||
drawingLoco.wheelDrawing = (IWheelDrawing)Class.forName(strs[4]).getDeclaredConstructor().newInstance();
|
||||
drawingLoco.wheelDrawing.setNumWheel(drawingLoco.EntityTrain.numWheel);
|
||||
}
|
||||
catch(Exception e){
|
||||
return null;
|
||||
}
|
||||
return drawingLoco;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@ -64,7 +82,7 @@ public class ExtentionDrawingTrain {
|
||||
{
|
||||
return null;
|
||||
}
|
||||
String str = "" + train.Speed + separatorForObject + (int)train.Weight + separatorForObject + train.BodyColor + separatorForObject + train.numWheel;
|
||||
String str = "" + train.Speed + separatorForObject + (int)train.Weight + separatorForObject + train.BodyColor + separatorForObject + train.numWheel + separatorForObject + drawningTrain.wheelDrawing.getClass().getName();
|
||||
if (!(train instanceof EntityLoco))
|
||||
{
|
||||
return str;
|
||||
|
@ -270,7 +270,7 @@ public class FormTrainCollecltion {
|
||||
fileChooser.setDialogTitle("Выберите файл для загрузки данных");
|
||||
if (fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
|
||||
File selectedFile = fileChooser.getSelectedFile();
|
||||
if (_storage.loadData(selectedFile.getAbsolutePath())) {
|
||||
if (_storage.LoadData(selectedFile.getAbsolutePath())) {
|
||||
JOptionPane.showMessageDialog(null, "Загрузка прошла успешно", "Результат", JOptionPane.INFORMATION_MESSAGE);
|
||||
} else {
|
||||
JOptionPane.showMessageDialog(null, "Не загрузилось", "Результат", JOptionPane.ERROR_MESSAGE);
|
||||
@ -300,10 +300,61 @@ public class FormTrainCollecltion {
|
||||
}
|
||||
}
|
||||
);
|
||||
JMenuItem openItemSingle = new JMenuItem("Open single");
|
||||
openItemSingle.addActionListener(
|
||||
new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e){
|
||||
JFileChooser fileChooser = new JFileChooser();
|
||||
|
||||
fileChooser.setDialogTitle("Выберите файл для загрузки данных");
|
||||
|
||||
// Установка фильтра для файлов с определенным расширением (например, .txt)
|
||||
fileChooser.setFileFilter(new FileNameExtensionFilter("Текстовые файлы (*.txt)", "txt"));
|
||||
|
||||
fileChooser.setDialogTitle("Выберите файл для загрузки данных");
|
||||
if (fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
|
||||
File selectedFile = fileChooser.getSelectedFile();
|
||||
if (_storage.LoadDataSingle(selectedFile.getAbsolutePath())) {
|
||||
JOptionPane.showMessageDialog(null, "Загрузка прошла успешно", "Результат", JOptionPane.INFORMATION_MESSAGE);
|
||||
} else {
|
||||
JOptionPane.showMessageDialog(null, "Не загрузилось", "Результат", JOptionPane.ERROR_MESSAGE);
|
||||
}
|
||||
}
|
||||
ReloadObjects();
|
||||
}
|
||||
}
|
||||
);
|
||||
JMenuItem saveItemSingle = new JMenuItem("Save single");
|
||||
saveItemSingle.addActionListener(
|
||||
new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e){
|
||||
if (jListStorage.getSelectedValue() == null){
|
||||
JOptionPane.showMessageDialog(null, "Не выбран гараж", "Ошибка", JOptionPane.ERROR_MESSAGE);
|
||||
return;
|
||||
}
|
||||
|
||||
JFileChooser fileChooser = new JFileChooser();
|
||||
fileChooser.setDialogTitle("Выберите файл для сохранения данных");
|
||||
|
||||
// Установка фильтра для файлов с определенным расширением (например, .txt)
|
||||
fileChooser.setFileFilter(new FileNameExtensionFilter("Текстовые файлы (*.txt)", "txt"));
|
||||
|
||||
if (fileChooser.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) {
|
||||
File selectedFile = fileChooser.getSelectedFile();
|
||||
if (_storage.SaveDataSingle(selectedFile.getAbsolutePath(), jListStorage.getSelectedValue()))
|
||||
JOptionPane.showMessageDialog(null, "Сохранение прошло успешно", "Результат", JOptionPane.INFORMATION_MESSAGE);
|
||||
else
|
||||
JOptionPane.showMessageDialog(null, "Не сохранилось", "Результат", JOptionPane.ERROR_MESSAGE);
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
// Добавляем пункты в меню
|
||||
fileMenu.add(openItem);
|
||||
fileMenu.add(saveItem);
|
||||
fileMenu.add(openItemSingle);
|
||||
fileMenu.add(saveItemSingle);
|
||||
|
||||
// Добавляем меню в панель меню
|
||||
menuBar.add(fileMenu);
|
||||
|
@ -6,6 +6,7 @@ import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
@ -30,6 +31,73 @@ public class TrainsGenericStorage {
|
||||
private static String _separatorForObjectWR = ":";
|
||||
private static String _separatorForObject = "\\:";
|
||||
|
||||
public boolean SaveDataSingle(String filename, String key){
|
||||
if (new File(filename).exists()) {
|
||||
new File(filename).delete();
|
||||
}
|
||||
|
||||
StringBuilder data = new StringBuilder();
|
||||
data.append(key).append("\n");
|
||||
for (DrawingTrain elem : _trainStorages.get(key).getTrains(100))
|
||||
|
||||
data.append(elem != null ? ExtentionDrawingTrain.GetDataForSave(elem, _separatorForObjectWR) + "\n" : "");
|
||||
|
||||
if (data.length() == 0)
|
||||
return false;
|
||||
|
||||
try (BufferedWriter writer = new BufferedWriter(new FileWriter(filename))) {
|
||||
writer.write("TrainStorageSingle" + System.lineSeparator() + data.toString());
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean LoadDataSingle(String filename){
|
||||
if (!new File(filename).exists()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
try (BufferedReader reader = new BufferedReader(new FileReader(filename))) {
|
||||
String s = reader.readLine();
|
||||
if (s == null || s.length() == 0)
|
||||
return false;
|
||||
|
||||
if (!s.startsWith("TrainStorageSingle"))
|
||||
return false;
|
||||
|
||||
String key = reader.readLine();
|
||||
if (key == null || key.length() == 0)
|
||||
return false;
|
||||
|
||||
TrainsGenericCollection<DrawingTrain, DrawningObjectTrain> collection = new TrainsGenericCollection<>(_pictureWidth, _pictureHeight);
|
||||
List<String> trainsStrings = new ArrayList<String>();
|
||||
|
||||
s = reader.readLine();
|
||||
while (s != null && s.length() != 0){
|
||||
trainsStrings.add(s);
|
||||
s = reader.readLine();
|
||||
}
|
||||
|
||||
Collections.reverse(trainsStrings);
|
||||
for (String elem : trainsStrings) {
|
||||
DrawingTrain train = ExtentionDrawingTrain.CreateDrawingTrain(elem, _separatorForObject, _pictureWidth, _pictureHeight);
|
||||
if (train == null || collection.Add(train) == -1)
|
||||
return false;
|
||||
}
|
||||
|
||||
if (_trainStorages.containsKey(key))
|
||||
_trainStorages.remove(key);
|
||||
_trainStorages.put(key, collection);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Сохранение информации по автомобилям в хранилище в файл
|
||||
/// </summary>
|
||||
@ -68,7 +136,7 @@ public class TrainsGenericStorage {
|
||||
/// </summary>
|
||||
/// <param name="filename">Путь и имя файла</param>
|
||||
/// <returns>true - загрузка прошла успешно, false - ошибка призагрузке данных</returns>
|
||||
public boolean loadData(String filename) {
|
||||
public boolean LoadData(String filename) {
|
||||
if (!new File(filename).exists()) {
|
||||
return false;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user
Нет проверки, что get вернул не null значение